/[packages]/cauldron/lvm2/current/SPECS/lvm2.spec
ViewVC logotype

Contents of /cauldron/lvm2/current/SPECS/lvm2.spec

Parent Directory Parent Directory | Revision Log Revision Log


Revision 404859 - (show annotations) (download)
Sun Mar 24 15:20:47 2013 UTC (11 years, 1 month ago) by colin
File size: 16316 byte(s)
Add systemd requires and general post/pre fixes (mga#9302)
1 %define name lvm2
2 %define lvmversion 2.02.98
3 %define dmversion 1.02.77
4 %define release %mkrel 3
5 %define _usrsbindir %{_prefix}/sbin
6 %define _sbindir /sbin
7 %define dmmajor 1.02
8 %define cmdmajor 2.02
9 %define appmajor 2.2
10
11 %define dmlibname %mklibname devmapper %dmmajor
12 %define dmdevelname %mklibname devmapper -d
13 %define event_libname %mklibname devmapper-event %dmmajor
14 %define event_develname %mklibname devmapper-event -d
15 %define cmdlibname %mklibname lvm2cmd %cmdmajor
16 %define cmddevelname %mklibname lvm2cmd -d
17
18 %define build_lvm2app 1
19 %define build_cluster 0
20 %define build_dmeventd 1
21
22 #requirements for cluster
23 %define corosync_version 1.2.0
24 %define openais_version 1.1.1
25 %define cluster_version 3.0.6
26
27 %{?_with_dmeventd: %{expand: %%global build_dmeventd 1}}
28 %{?_without_dmeventd: %{expand: %%global build_dmeventd 0}}
29 %{?_with_lvm2app: %{expand: %%global build_lvm2app 1}}
30 %{?_without_lvm2app: %{expand: %%global build_lvm2app 0}}
31 %{?_with_cluster: %{expand: %%global build_cluster 1}}
32 %{?_without_cluster: %{expand: %%global build_cluster 0}}
33
34 %bcond_without uclibc
35
36 %if %build_lvm2app
37 %define applibname %mklibname lvm2app %{appmajor}
38 %define appdevelname %mklibname -d lvm2
39 %endif
40
41 %if %build_dmeventd
42 %define dm_req %{event_libname}
43 %define dm_req_d %{event_develname}
44 %else
45 %define dm_req %{dmlibname}
46 %define dm_req_d %{dmdevelname}
47 %endif
48
49 Summary: Logical Volume Manager administration tools
50 Name: %{name}
51 Version: %{lvmversion}
52 Release: %{release}
53 Source0: ftp://sources.redhat.com/pub/lvm2/LVM2.%{lvmversion}.tgz
54 Source1: ftp://sources.redhat.com/pub/lvm2/LVM2.%{lvmversion}.tgz.asc
55 Patch0: lvm2-2.02.98-alternatives.patch
56 Patch1: lvm2-2.02.77-qdiskd.patch
57 Patch2: lvm2-2.02.97-vgmknodes-man.patch
58 Patch3: lvm2-2.02.77-preferred_names.patch
59 # (cg) From fedora
60 Patch11: lvm2-2_02_99-properly-set-cookie_set-var-on-dm_task_set_cookie-call.patch
61 Patch12: lvm2-2_02_99-hardcode-use_lvmetad0-if-cluster-locking-used-and-issue-warning-msg.patch
62 Patch13: lvm2-2_02_99-init-lvmetad-lazily-to-avoid-early-socket-access-on-config-overrides.patch
63 Patch14: lvm2-2_02_99-various-updates-and-fixes-for-systemd-units.patch
64 Patch15: lvm2-2_02_99-skip-mlocking-verctors-on-arm-arch.patch
65
66 License: GPLv2 and LGPL2.1
67 Group: System/Kernel and hardware
68 URL: http://sources.redhat.com/lvm2/
69 BuildConflicts: device-mapper-devel < %{dmversion}
70 BuildRequires: readline-devel
71 BuildRequires: ncurses-devel
72 #BuildRequires: autoconf
73 BuildRequires: sed
74 Conflicts: lvm
75 Conflicts: lvm1
76 BuildRequires: glibc-static-devel
77 %if %{with uclibc}
78 BuildRequires: uClibc-devel
79 %endif
80 %if %build_dmeventd
81 # install plugins as well
82 Requires: %{cmdlibname} = %{lvmversion}-%{release}
83 %endif
84 Requires: %{dm_req} >= %{dmversion}
85 Requires(post): systemd >= %{systemd_required_version}
86
87 %description
88 LVM includes all of the support for handling read/write operations on
89 physical volumes (hard disks, RAID-Systems, magneto optical, etc.,
90 multiple devices (MD), see mdadm(8) or even loop devices, see losetup(8)),
91 creating volume groups (kind of virtual disks) from one or more physical
92 volumes and creating one or more logical volumes (kind of logical partitions)
93 in volume groups.
94
95 %package -n %{cmdlibname}
96 Summary: LVM2 command line library
97 Group: System/Kernel and hardware
98 Requires: %{dm_req} >= %{dmversion}
99 # Avoid devel deps on library due to autoreq picking these plugins up as devel libs
100 %define _exclude_files_from_autoreq libdevmapper-event-.\\+\\.so$
101
102 %description -n %{cmdlibname}
103 The lvm2 command line library allows building programs that manage
104 lvm devices without invoking a separate program.
105
106 %package -n %{cmddevelname}
107 Summary: Development files for LVM2 command line library
108 Group: System/Kernel and hardware
109 Requires: %{cmdlibname} = %{lvmversion}-%{release}
110 Requires: %{dm_req_d} = %{dmversion}-%{release}
111 Provides: liblvm2cmd-devel = %{lvmversion}-%{release}
112 Obsoletes: %{mklibname lvm2cmd %cmdmajor -d}
113
114 %description -n %{cmddevelname}
115 The lvm2 command line library allows building programs that manage
116 lvm devices without invoking a separate program.
117 This package contains the header files for building with lvm2cmd and lvm2app.
118
119 %if %build_lvm2app
120 %package -n %{applibname}
121 Summary: LVM2 application api library
122 Group: System/Kernel and hardware
123 Requires: %{dm_req} >= %{dmversion}
124
125 %description -n %{applibname}
126 LVM2 application API
127
128 %package -n %{appdevelname}
129 Summary: Development files for LVM2 command line library
130 Group: System/Kernel and hardware
131 Requires: pkgconfig
132 Requires: %{applibname} = %{lvmversion}-%{release}
133 Requires: %{dm_req_d} = %{dmversion}-%{release}
134 Provides: liblvm2app-devel = %{lvmversion}-%{release}
135 Obsoletes: %{mklibname lvm2app %appmajor -d}
136
137 %description -n %{appdevelname}
138 LVM2 application API
139 This package contains the header files for building with lvm2app.
140 %endif
141
142 %if %build_cluster
143 %package -n clvmd
144 Summary: cluster LVM daemon
145 Group: System/Kernel and hardware
146 BuildRequires: cluster-devel >= %{cluster_version}
147 BuildRequires: openais-devel >= %{openais_version}
148 BuildRequires: corosync-devel >= %{corosync_version}
149 Requires: cman >= %{cluster_version}
150 Requires: %{dm_req} >= %{dmversion}
151
152 %description -n clvmd
153 clvmd is the daemon that distributes LVM metadata updates around a
154 cluster. It must be running on all nodes in the cluster and will give
155 an error if a node in the cluster does not have this daemon running.
156
157 %package -n cmirror
158 Summary: Daemon for device-mapper-based clustered mirrors
159 Group: System/Kernel and hardware
160 BuildRequires: cluster-devel >= %{cluster_version}
161 BuildRequires: openais-devel >= %{openais_version}
162 BuildRequires: corosync-devel >= %{corosync_version}
163 Requires: cman >= %{cluster_version}
164 Requires: openais >= %{openais_version}
165 Requires: corosync >= %{corosync_version}
166 Requires: %{dmlibname} >= %{dmversion}
167
168 %description -n cmirror
169 Daemon providing device-mapper-based mirrors in a shared-storage cluster.
170 %endif
171
172 %package -n dmsetup
173 Summary: Device mapper setup tool
174 Version: %{dmversion}
175 Group: System/Kernel and hardware
176 Provides: device-mapper = %{dmversion}-%{release}
177 %if %{build_dmeventd}
178 Provides: dmeventd = %{dmversion}-%{release}
179 %endif
180 Requires: %{dm_req} = %{dmversion}-%{release}
181 BuildRequires: udev-devel
182 Requires: udev
183 Requires(pre): rpm-helper
184
185 %description -n dmsetup
186 Dmsetup manages logical devices that use the device-mapper driver.
187 Devices are created by loading a table that specifies a target for
188 each sector (512 bytes) in the logical device.
189
190 %package -n %{dmlibname}
191 Summary: Device mapper library
192 Version: %{dmversion}
193 Group: System/Kernel and hardware
194
195 %description -n %{dmlibname}
196 The device-mapper driver enables the definition of new block
197 devices composed of ranges of sectors of existing devices. This
198 can be used to define disk partitions - or logical volumes.
199
200 This package contains the shared libraries required for running
201 programs which use device-mapper.
202
203 %package -n %{dmdevelname}
204 Summary: Device mapper development library
205 Version: %{dmversion}
206 Group: Development/C
207 Provides: device-mapper-devel = %{dmversion}-%{release}
208 Provides: libdevmapper-devel = %{dmversion}-%{release}
209 Requires: %{dmlibname} = %{dmversion}-%{release}
210 Requires: pkgconfig
211 Conflicts: device-mapper-devel < %{dmversion}-%{release}
212 Obsoletes: %{mklibname devmapper %dmmajor -d}
213
214 %description -n %{dmdevelname}
215 The device-mapper driver enables the definition of new block
216 devices composed of ranges of sectors of existing devices. This
217 can be used to define disk partitions - or logical volumes.
218
219 This package contains the header files and development libraries
220 for building programs which use device-mapper.
221
222 %if %{build_dmeventd}
223
224 %package -n %{event_libname}
225 Summary: Device mapper event library
226 Version: %{dmversion}
227 Group: System/Kernel and hardware
228 Provides: device-mapper-event = %{dmversion}-%{release}
229 Provides: libdevmapper-event = %{dmversion}-%{release}
230 Requires: %{dmlibname} >= %{dmversion}
231
232 %description -n %{event_libname}
233 The device-mapper-event library allows monitoring of active mapped devices.
234
235 This package contains the shared libraries required for running
236 programs which use device-mapper-event.
237
238 %package -n %{event_develname}
239 Summary: Device mapper event development library
240 Version: %{dmversion}
241 Group: Development/C
242 Provides: device-mapper-event-devel = %{dmversion}-%{release}
243 Provides: libdevmapper-event-devel = %{dmversion}-%{release}
244 Requires: %{event_libname} = %{dmversion}-%{release}
245 Requires: %{dmdevelname} = %{dmversion}-%{release}
246 Requires: pkgconfig
247 Conflicts: device-mapper-event-devel < %{dmversion}-%{release}
248 Obsoletes: %{mklibname devmapper-event %dmmajor -d}
249
250 %description -n %{event_develname}
251 The device-mapper-event library allows monitoring of active mapped devices.
252
253 This package contains the header files and development libraries
254 for building programs which use device-mapper-event.
255 %endif
256
257 %prep
258 %setup -q -n LVM2.%{lvmversion}
259 %apply_patches
260
261 %build
262 datelvm=`awk -F '[.() ]*' '{printf "%s.%s.%s:%s\n", $1,$2,$3,$(NF-1)}' VERSION`
263 datedm=`awk -F '[.() ]*' '{printf "%s.%s.%s:%s\n", $1,$2,$3,$(NF-1)}' VERSION_DM`
264 if [ "${datelvm%:*}" != "%{lvmversion}" -o "${datedm%:*}" != "%{dmversion}" -o \
265 "%{release}" = "%{mkrel 1}" -a "${datelvm#*:}" != "${datedm#*:}" ]; then
266 echo "ERROR: you should not be touching this package" 1>&2
267 echo " without full understanding of relationship between device-mapper" 1>&2
268 echo " and lvm2 versions" 1>&2
269 exit 1
270 fi
271 %if %{build_dmeventd}
272 %define _disable_ld_as_needed 1
273 %endif
274 %define common_configure_parameters --with-default-dm-run-dir=/run --with-default-run-dir=/run/lvm --with-default-pid-dir=/run --with-default-locking-dir=/run/lock/lvm --with-user=`id -un` --with-group=`id -gn` --disable-selinux --with-device-uid=0 --with-device-gid=6 --with-device-mode=0660
275 export ac_cv_lib_dl_dlopen=no
276 export MODPROBE_CMD=/sbin/modprobe
277 export CONFIGURE_TOP=".."
278
279 mkdir -p static
280 cd static
281 %configure2_5x %{common_configure_parameters} \
282 --enable-static_link --disable-readline \
283 --with-cluster=none --with-pool=none
284 sed -ie 's/\ -static/ -static -Wl,--no-export-dynamic/' tools/Makefile
285 %if %{with uclibc}
286 %make libdm.device-mapper
287 cd ..
288
289 mkdir -p uclibc
290 cd uclibc
291 %configure2_5x CFLAGS="%{uclibc_cflags}" CC="%{uclibc_cc}" %{common_configure_parameters} \
292 --enable-static_link --disable-readline \
293 --with-cluster=none --with-pool=none
294 %endif
295 sed -ie 's/\ -static/ -static -Wl,--no-export-dynamic/' tools/Makefile
296 %make
297 cd ..
298
299 unset ac_cv_lib_dl_dlopen
300
301 mkdir -p shared
302 cd shared
303 %configure2_5x %{common_configure_parameters} \
304 --disable-static_link --enable-readline \
305 --enable-fsadm --enable-pkgconfig \
306 --with-usrlibdir=%{_libdir} --libdir=/%{_lib} \
307 --enable-cmdlib \
308 %if %build_lvm2app
309 --enable-applib \
310 %endif
311 %if %build_cluster
312 --with-clvmd=cman,openais,corosync \
313 --enable-cmirrord \
314 %else
315 --with-cluster=none \
316 --with-pool=none \
317 %endif
318 %if %{build_dmeventd}
319 --enable-dmeventd \
320 --with-dmeventd-path=/sbin/dmeventd \
321 %endif
322 --enable-udev_sync --enable-udev_rules \
323 --with-udevdir=%{_udevrulesdir} \
324 # 20090926 no translations yet: --enable-nls
325 # end of configure options
326 %make
327 cd ..
328
329 %install
330 rm -rf %{buildroot}
331 cd shared
332 %makeinstall_std
333 make install_systemd_units DESTDIR=$RPM_BUILD_ROOT
334 make install_tmpfiles_configuration DESTDIR=$RPM_BUILD_ROOT
335 cd ..
336
337 install -d %{buildroot}/etc/lvm/archive
338 install -d %{buildroot}/etc/lvm/backup
339 install -d %{buildroot}/etc/lvm/cache
340 touch %{buildroot}/etc/lvm/cache/.cache
341
342 %if %build_cluster
343 install -m 0755 scripts/lvmconf.sh %{buildroot}/%{_usrsbindir}/lvmconf
344 %endif
345
346 %if %{with uclibc}
347 install uclibc/tools/lvm.static %{buildroot}%{_sbindir}/lvm.static
348 install uclibc/tools/dmsetup.static %{buildroot}%{_sbindir}/dmsetup.static
349 install -m644 uclibc/libdm/ioctl/libdevmapper.a -D %{buildroot}%{uclibc_root}%{_libdir}/libdevmapper.a
350 %else
351 install static/tools/lvm.static %{buildroot}/%{_sbindir}/lvm.static
352 install static/tools/dmsetup.static %{buildroot}/%{_sbindir}/dmsetup.static
353 %endif
354
355 #install -d %{buildroot}/%{_libdir}/
356 install -m 644 static/libdm/ioctl/libdevmapper.a %{buildroot}/%{_libdir}
357 #compatibility links
358 ln %{buildroot}/%{_sbindir}/lvm %{buildroot}/%{_sbindir}/lvm2
359 ln %{buildroot}/%{_sbindir}/lvm.static %{buildroot}/%{_sbindir}/lvm2-static
360 ln %{buildroot}/%{_sbindir}/dmsetup.static %{buildroot}/%{_sbindir}/dmsetup-static
361
362 #move .so links in /usr/lib
363 for solink in %{buildroot}/%{_lib}/*.so; do
364 if [ "${solink%%libdevmapper-event-lvm2*.so}" == "${solink}" ]; then
365 _target=`readlink ${solink}`
366 ln -s ../../%{_lib}/${_target##*/} %{buildroot}/%{_libdir}/${solink##*/}
367 rm ${solink}
368 fi
369 done
370
371 #hack permissions of libs
372 chmod u+w %{buildroot}/%{_lib}/*.so.* %{buildroot}/%{_sbindir}/*
373 %if %build_cluster
374 chmod u+w %{buildroot}/%{_usrsbindir}/*
375 %endif
376
377 %find_lang %name
378
379 #hack trick strip_and_check_elf_files
380 export LD_LIBRARY_PATH=%{buildroot}/%{_lib}:${LD_LIBRARY_PATH}
381
382 %pre
383 if [ -L /sbin/lvm -a -L /etc/alternatives/lvm ]; then
384 update-alternatives --remove lvm /sbin/lvm2
385 fi
386
387 %post
388 %_tmpfilescreate %{name}
389
390 %if %build_cluster
391 %post -n clvmd
392 %_post_service clvmd
393 %{_usrsbindir}/lvmconf --lockinglibdir %{_libdir}
394
395 %preun -n clvmd
396 %_preun_service clvmd
397 if [ "$1" = 0 ]; then
398 %{_usrsbindir}/lvmconf --disable-cluster
399 fi
400
401 %post -n cmirror
402 %_post_service cmirror
403
404 %preun -n cmirror
405 %_preun_service cmirror
406 %endif
407
408 %clean
409 rm -rf %{buildroot}
410
411 %files -f %name.lang
412 %defattr(644,root,root,755)
413 %doc INSTALL README VERSION WHATS_NEW
414 %attr(755,root,root) %{_sbindir}/blkdeactivate
415 %attr(755,root,root) %{_sbindir}/fsadm
416 %attr(755,root,root) %{_sbindir}/lv*
417 %attr(755,root,root) %{_sbindir}/pv*
418 %attr(755,root,root) %{_sbindir}/vg*
419 %_unitdir/blk-availability.service
420 %_unitdir/lvm2-monitor.service
421 %dir %{_sysconfdir}/lvm
422 %config(noreplace) %{_sysconfdir}/lvm/lvm.conf
423 %attr(700,root,root) %dir %{_sysconfdir}/lvm/archive
424 %attr(700,root,root) %dir %{_sysconfdir}/lvm/backup
425 %attr(700,root,root) %dir %{_sysconfdir}/lvm/cache
426 %attr(600,root,root) %ghost %{_sysconfdir}/lvm/cache/.cache
427 %{_tmpfilesdir}/%{name}.conf
428 %{_mandir}/man5/*
429 %{_mandir}/man8/*
430 %{_udevrulesdir}/11-dm-lvm.rules
431
432 %files -n %{cmdlibname}
433 %defattr(644,root,root,755)
434 /%{_lib}/liblvm2cmd.so.*
435 %if %{build_dmeventd}
436 %dir /%{_lib}/device-mapper
437 /%{_lib}/device-mapper/libdevmapper-event-lvm2mirror.so
438 /%{_lib}/device-mapper/libdevmapper-event-lvm2raid.so
439 /%{_lib}/device-mapper/libdevmapper-event-lvm2snapshot.so
440 /%{_lib}/libdevmapper-event-lvm2.so.*
441 /%{_lib}/libdevmapper-event-lvm2mirror.so
442 /%{_lib}/libdevmapper-event-lvm2raid.so
443 /%{_lib}/libdevmapper-event-lvm2snapshot.so
444 %endif
445
446 %files -n %{cmddevelname}
447 %defattr(644,root,root,755)
448 %{_includedir}/lvm2cmd.h
449 %attr(755,root,root) %{_libdir}/liblvm2cmd.so
450
451 %if %build_lvm2app
452 %files -n %{applibname}
453 %defattr(644,root,root,755)
454 /%{_lib}/liblvm2app.so.*
455
456 %files -n %{appdevelname}
457 %defattr(644,root,root,755)
458 %{_includedir}/lvm2app.h
459 %attr(755,root,root) %{_libdir}/liblvm2app.so
460 %{_libdir}/pkgconfig/lvm2app.pc
461 %endif
462
463 %if %build_cluster
464 %files -n clvmd
465 %defattr(755, root,root)
466 %{_usrsbindir}/clvmd
467 %{_usrsbindir}/lvmconf
468 %attr(644,root,root) %{_mandir}/man8/clvmd.8*
469
470 %files -n cmirror
471 %defattr(755,root,root,-)
472 %{_usrsbindir}/cmirrord
473 %attr(644,root,root) %{_mandir}/man8/cmirrord.8*
474 %endif
475
476 %files -n dmsetup
477 %defattr(644,root,root,755)
478 %doc INSTALL README VERSION_DM WHATS_NEW_DM
479 %attr(755,root,root) %{_sbindir}/dmsetup
480 %attr(755,root,root) %{_sbindir}/dmsetup.static
481 %attr(755,root,root) %{_sbindir}/dmsetup-static
482 %if %{build_dmeventd}
483 %attr(755,root,root) %{_sbindir}/dmeventd
484 %endif
485 %_unitdir/dm-event.service
486 %_unitdir/dm-event.socket
487 %{_mandir}/man8/dmsetup.8*
488 %{_udevrulesdir}/10-dm.rules
489 %{_udevrulesdir}/13-dm-disk.rules
490 %{_udevrulesdir}/95-dm-notify.rules
491
492 %files -n %{dmlibname}
493 %defattr(755,root,root)
494 /%{_lib}/libdevmapper.so.*
495
496 %files -n %{dmdevelname}
497 %defattr(644,root,root,755)
498 %{_libdir}/libdevmapper.so
499 %{_libdir}/libdevmapper.a*
500 %if %{with uclibc}
501 %{uclibc_root}%{_libdir}/libdevmapper.a
502 %endif
503 %{_includedir}/libdevmapper.h
504 %{_libdir}/pkgconfig/devmapper.pc
505
506 %if %{build_dmeventd}
507 %defattr(755,root,root)
508 %files -n %{event_libname}
509 /%{_lib}/libdevmapper-event.so.*
510
511 %files -n %{event_develname}
512 %defattr(644,root,root,755)
513 %{_includedir}/libdevmapper-event.h
514 %{_libdir}/libdevmapper-event.so
515 %{_libdir}/libdevmapper-event-lvm2.so
516 %{_libdir}/pkgconfig/devmapper-event.pc
517 %endif

  ViewVC Help
Powered by ViewVC 1.1.30