]> TLD Linux GIT Repositories - packages/lvm2.git/blob - lvm2.spec
- fix run dir breakage introduced by PLD merge
[packages/lvm2.git] / lvm2.spec
1 # TODO
2 # - vgscan --ignorelocking failure creates /var/lock/lvm (even if /var is not yet mounted)
3 # - spec default value for --with-replicators (=internal/shared/none, configure default is none)?
4 #   (also internal vs shared for lvm1,pool,cluster,snapshots,mirrors,raid,replicators,thin,cache;
5 #    note: dmeventd requires mirrors=internal)
6 #
7 # Conditional build:
8 # - initrd stuff
9 %bcond_with     initrd          # build initrd version
10 %bcond_without  uClibc          # link initrd version with uClibc
11 %bcond_with     dietlibc        # link initrd version with dietlibc
12 %bcond_with     glibc           # link initrd version with static GLIBC
13 # - functionality
14 %bcond_without  cluster         # disable all cluster support (clvmd&cmirrord)
15 %bcond_without  lvmetad         # lvmetad (and lvmlockd)
16 %bcond_without  lvmdbusd        # lvmdbusd
17 %bcond_without  lvmpolld        # lvmpolld (and lvmlockd)
18 %bcond_without  lvmlockd        # lvmlockd
19 %bcond_with     sanlock         # sanlock support in lvmlockd
20 %bcond_with     replicator      # internal replicator support
21 # - additional features
22 %bcond_without  selinux         # SELinux support
23 # - bindings
24 %bcond_without  python          # Python bindings
25 %bcond_without  python2         # Python 2 binding
26 %bcond_without  python3         # Python 3 binding and lvmdbusd
27
28 # lvmlockd requires lvmetad and lvmpolld
29 %if %{without lvmetad} || %{without lvmpolld}
30 %undefine       with_lvmpolld
31 %endif
32
33 # if one of the *libc is enabled disable default dietlibc
34 %if %{with dietlibc} && %{with uClibc}
35 %undefine       with_dietlibc
36 %endif
37 # with glibc disables default dietlibc
38 %if %{with glibc} && %{with dietlibc}
39 %undefine       with_dietlibc
40 %endif
41 # fallback is glibc if neither alternatives are enabled
42 %if %{without dietlibc} && %{without uClibc}
43 %define         with_glibc      1
44 %endif
45 # for convenience
46 %if %{without python}
47 %undefine       with_python2
48 %undefine       with_python3
49 %endif
50 %if %{without python3}
51 %undefine       with_lvmdbusd
52 %endif
53
54 Summary:        The new version of Logical Volume Manager for Linux
55 Summary(pl.UTF-8):      Nowa wersja Logical Volume Managera dla Linuksa
56 Name:           lvm2
57 Version:        2.02.179
58 Release:        2
59 License:        GPL v2 and LGPL v2.1
60 Group:          Applications/System
61 Source0:        ftp://sources.redhat.com/pub/lvm2/LVM2.%{version}.tgz
62 # Source0-md5:  308bbdf93a5cb0b20898dbdad53e437f
63 Source3:        clvmd.sysconfig
64 Patch0:         %{name}-selinux.patch
65 Patch1:         %{name}-diet.patch
66 Patch2:         device-mapper-dmsetup-export.patch
67 Patch3:         %{name}-tld_init.patch
68 Patch4:         dl-dlsym.patch
69 Patch5:         %{name}-run-dir.patch
70 Patch6:         %{name}-clvmd_cmd_timeout.patch
71 Patch7:         device-mapper-dmsetup-deps-export.patch
72 Patch8:         %{name}-thin.patch
73 URL:            http://www.sourceware.org/lvm2/
74 BuildRequires:  autoconf >= 2.69
75 BuildRequires:  automake
76 # for /run detection
77 BuildRequires:  filesystem >= 3.0-43
78 BuildRequires:  libblkid-devel >= 2.24
79 %{?with_selinux:BuildRequires:  libselinux-devel >= 1.10}
80 %{?with_selinux:BuildRequires:  libsepol-devel}
81 BuildRequires:  ncurses-devel
82 BuildRequires:  pkgconfig
83 %{?with_python2:BuildRequires:  python-devel >= 2}
84 %{?with_python3:BuildRequires:  python3-devel >= 1:3.2}
85 %if %{with lvmdbusd}
86 BuildRequires:  python3-dbus
87 BuildRequires:  python3-pyudev
88 %endif
89 BuildRequires:  readline-devel
90 BuildRequires:  rpmbuild(macros) >= 1.647
91 %{?with_sanlock:BuildRequires:  sanlock-devel >= 3.3.0}
92 BuildRequires:  udev-devel >= 1:176
93 %if %{with initrd}
94 %if %{with dietlibc}
95 BuildRequires:  dietlibc-static >= 2:0.32-7
96 BuildConflicts: device-mapper-dietlibc
97 %endif
98 %if %{with glibc}
99 %{?with_selinux:BuildRequires:  libselinux-static}
100 %{?with_selinux:BuildRequires:  libsepol-static}
101 %endif
102 %{?with_glibc:BuildRequires:    glibc-static}
103 %{?with_uClibc:BuildRequires:   uClibc-static >= 2:0.9.29}
104 %endif
105 %if %{with cluster}
106 BuildRequires:  corosync-devel
107 BuildRequires:  dlm-devel >= 3.99.5
108 %endif
109 Requires(post,postun):  /sbin/chkconfig
110 Requires:       device-mapper >= %{version}-%{release}
111 %{?with_selinux:Requires:       libselinux >= 1.10}
112 # doesn't work with 2.4 kernels
113 Requires:       uname(release) >= 2.6
114 Suggests:       thin-provisioning-tools >= 0.5.4
115 Obsoletes:      lvm
116 Obsoletes:      lvm2-systemd
117 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
118
119 %define         _sbindir        /sbin
120 %define         _usrsbindir     /usr/sbin
121
122 # changing CFLAGS in the middle confuses confcache
123 %undefine       configure_cache
124
125 # borken on AC
126 %define         filterout_ld    -Wl,--as-needed
127
128 # causes: undefined reference to `__stack_chk_fail_local'
129 %define         filterout_c     -fstack-protector
130
131 # for some reason known only to rpm there must be "\\|" not "\|" here
132 %define         dietarch        %(echo %{_target_cpu} | sed -e 's/i.86\\|pentium.\\|athlon/i386/;s/amd64/x86_64/;s/armv.*/arm/')
133 %define         dietlibdir      %{_prefix}/lib/dietlibc/lib-%{dietarch}
134
135 %define         skip_post_check_so      '.*libdevmapper-event-lvm2.so.*'
136
137 %description
138 This package includes a number of utilities for creating, checking,
139 and repairing logical volumes.
140
141 %description -l pl.UTF-8
142 Pakiet ten zawiera narzędzia do tworzenia, sprawdzania i naprawiania
143 logicznych wolumenów dyskowych (LVM2).
144
145 %package initrd
146 Summary:        The new version of Logical Volume Manager for Linux - initrd version
147 Summary(pl.UTF-8):      Nowa wersja Logical Volume Managera dla Linuksa - wersja dla initrd
148 Group:          Base
149 Conflicts:      geninitrd < 10000.18
150
151 %description initrd
152 This package includes a number of utilities for creating, checking,
153 and repairing logical volumes - staticaly linked for initrd.
154
155 %description initrd -l pl.UTF-8
156 Pakiet ten zawiera narzędzia do tworzenia, sprawdzania i naprawiania
157 logicznych wolumenów dyskowych (LVM2) - statycznie skonsolidowane na
158 potrzeby initrd.
159
160 %package clvmd
161 Summary:        Cluster LVM daemon
162 Summary(pl.UTF-8):      Demon clustra LVM
163 Group:          Applications/System
164 Requires:       %{name} = %{version}-%{release}
165
166 %description clvmd
167 clvmd is the daemon that distributes LVM metadata updates around a
168 cluster. It must be running on all nodes in the cluster and will give
169 an error if a node in the cluster does not have this daemon running.
170
171 %description clvmd -l pl.UTF-8
172 clvmd to demon który rozprowadza zmiany meta-danych LVM po klastrze.
173 Mysi działać na wszystkich węzłach klastra i zgłosi błąd gdy jakiś
174 węzeł w klastrze nie ma tego demona uruchomionego.
175
176 %package cmirrord
177 Summary:        Cluster mirror log daemon
178 Summary(pl.UTF-8):      Demon śledzący log lustrzany w klastrze
179 Group:          Applications/System
180 Requires:       %{name} = %{version}-%{release}
181
182 %description cmirrord
183 cmirrord is the daemon that tracks mirror log information in a
184 cluster. It is specific to device-mapper based mirrors (and by
185 extension, LVM cluster mirrors). Cluster mirrors are not possible
186 without this daemon running.
187
188 This daemon relies on the cluster infrastructure provided by the
189 Cluster MANager (CMAN), which must be set up and running in order for
190 cmirrord to function.
191
192 %description cmirrord
193 cmirrord to demon śledzący informacje logu lustrzanego w klastrze.
194 Jest specyficzny dla klastrów lustrzanych opartych na device-mapperze
195 (oraz, poprzez rozszerzenie, klastrów lustrzanych LVM). W klastrach
196 lustrzanych ten demon jest niezbędny.
197
198 Ten demon polega na infrastrukturze klastra dostarczanej przez CMAN
199 (Cluster MANager), który musi być skonfigurowany i działający, aby
200 działał cmirrord.
201
202 %package dbusd
203 Summary:        LVM2 D-Bus daemon
204 Summary(pl.UTF-8):      Demon LVM2 D-Bus
205 Group:          Daemons
206 Requires:       %{name} = %{version}-%{release}
207 Requires:       python3-dbus
208 Requires:       python3-pygobject3 >= 3
209 Requires:       python3-pyudev
210
211 %description dbusd
212 Daemon for access to LVM2 functionality through a D-Bus interface.
213
214 %description dbusd -l pl.UTF-8
215 Demon umożliwiający dostęp do funkcjonalności LVM2 poprzez interfejs
216 D-Bus.
217
218 %package lockd
219 Summary:        LVM2 locking daemon
220 Summary(pl.UTF-8):      Demon blokad LVM2
221 Group:          Daemons
222 Requires:       %{name} = %{version}-%{release}
223 %{?with_cluster:Requires:       dlm-libs >= 3.99.5}
224 %{?with_sanlock:Requires:       sanlock-libs >= 3.3.0}
225
226 %description lockd
227 LVM commands use lvmlockd to coordinate access to shared storage.
228
229 %description lockd -l pl.UTF-8
230 Polecenia LVM wykorzystują lvmlockd do koordynowania dostępu do
231 współdzielonej pamięci masowej.
232
233 %package resource-agents
234 Summary:        OCF Resource Agents for LVM2 processes
235 Summary(pl.UTF-8):      Agenci OCF do monitorowania procesów LVM2
236 Group:          Applications/System
237 Requires:       %{name} = %{version}-%{release}
238 Requires:       resource-agents
239
240 %description resource-agents
241 OCF Resource Agents for LVM2 processes.
242
243 %description resource-agents -l pl.UTF-8
244 Agenci OCF do monitorowania procesów LVM2.
245
246 %package -n python-lvm
247 Summary:        Python 2 interface to LVM2
248 Summary(pl.UTF-8):      Interfejs Pythona 2 do LVM2
249 Group:          Libraries/Python
250 Requires:       device-mapper-libs = %{version}-%{release}
251
252 %description -n python-lvm
253 Python 2 interface to LVM2.
254
255 %description -n python-lvm -l pl.UTF-8
256 Interfejs Pythona 2 do LVM2.
257
258 %package -n python3-lvm
259 Summary:        Python 3 interface to LVM2
260 Summary(pl.UTF-8):      Interfejs Pythona 3 do LVM2
261 Group:          Libraries/Python
262 Requires:       device-mapper-libs = %{version}-%{release}
263
264 %description -n python3-lvm
265 Python 3 interface to LVM2.
266
267 %description -n python3-lvm -l pl.UTF-8
268 Interfejs Pythona 3 do LVM2.
269
270 %package -n device-mapper
271 Summary:        Userspace support for the device-mapper
272 Summary(pl.UTF-8):      Wsparcie dla mapowania urządzeń w przestrzeni użytkownika
273 Group:          Base
274 Requires(post,postun):  /sbin/ldconfig
275 Requires:       device-mapper-libs = %{version}-%{release}
276
277 %description -n device-mapper
278 The goal of this driver is to support volume management. The driver
279 enables the definition of new block devices composed of ranges of
280 sectors of existing devices. This can be used to define disk
281 partitions - or logical volumes. This light-weight kernel component
282 can support user-space tools for logical volume management.
283
284 %description -n device-mapper -l pl.UTF-8
285 Celem tego sterownika jest obsługa zarządzania wolumenami. Sterownik
286 włącza definiowanie nowych urządzeń blokowych złożonych z przedziałów
287 sektorów na istniejących urządzeniach. Może to być wykorzystane do
288 definiowania partycji na dysku lub logicznych wolumenów. Ten lekki
289 składnik jądra może wspierać działające w przestrzeni użytkownika
290 narzędzia do zarządzania logicznymi wolumenami.
291
292 %package -n device-mapper-libs
293 Summary:        Device-mapper shared libraries
294 Summary(pl.UTF-8):      Biblioteki współdzielone device-mappera
295 Group:          Libraries
296 Requires:       libblkid >= 2.24
297 Requires:       udev-libs >= 1:176
298 Conflicts:      device-mapper < 2.02.119-1
299
300 %description -n device-mapper-libs
301 Device-mapper shared libraries.
302
303 %description -n device-mapper-libs -l pl.UTF-8
304 Biblioteki współdzielone device-mappera.
305
306 %package -n device-mapper-devel
307 Summary:        Header files for device-mapper libraries
308 Summary(pl.UTF-8):      Pliki nagłówkowe bibliotek device-mappera
309 Group:          Development/Libraries
310 Requires:       device-mapper-libs = %{version}-%{release}
311 Requires:       libblkid-devel >= 2.24
312 %if %{with selinux}
313 Requires:       libselinux-devel
314 Requires:       libsepol-devel
315 %endif
316 Requires:       udev-devel >= 1:176
317
318 %description -n device-mapper-devel
319 Header files for device-mapper libraries.
320
321 %description -n device-mapper-devel -l pl.UTF-8
322 Pliki nagłówkowe bibliotek device-mappera.
323
324 %package -n device-mapper-static
325 Summary:        Static devmapper library
326 Summary(pl.UTF-8):      Statyczna biblioteka devmapper
327 License:        LGPL v2.1
328 Group:          Development/Libraries
329 Requires:       device-mapper-devel = %{version}-%{release}
330
331 %description -n device-mapper-static
332 Static devmapper library.
333
334 %description -n device-mapper-static -l pl.UTF-8
335 Statyczna biblioteka devmapper.
336
337 %package -n device-mapper-dietlibc
338 Summary:        Static devmapper library built with dietlibc
339 Summary(pl.UTF-8):      Statyczna biblioteka devmapper zbudowana z dietlibc
340 License:        LGPL v2.1
341 Group:          Development/Libraries
342 Requires:       device-mapper-devel = %{version}-%{release}
343
344 %description -n device-mapper-dietlibc
345 Static devmapper library built with dietlibc.
346
347 %description -n device-mapper-dietlibc -l pl.UTF-8
348 Statyczna biblioteka devmapper zbudowana z dietlibc.
349
350 %package -n device-mapper-initrd
351 Summary:        Userspace support for the device-mapper - initrd version
352 Summary(pl.UTF-8):      Wsparcie dla mapowania urządzeń w przestrzeni użytkownika - wersja dla initrd
353 Group:          Base
354 Obsoletes:      device-mapper-initrd-devel
355 Conflicts:      geninitrd < 10000.10
356
357 %description -n device-mapper-initrd
358 The goal of this driver is to support volume management. The driver
359 enables the definition of new block devices composed of ranges of
360 sectors of existing devices. This can be used to define disk
361 partitions - or logical volumes. This light-weight kernel component
362 can support user-space tools for logical volume management.
363
364 This package contains dmsetup program linked staticaly for use in
365 initrd.
366
367 %description -n device-mapper-initrd -l pl.UTF-8
368 Celem tego sterownika jest obsługa zarządzania wolumenami. Sterownik
369 włącza definiowanie nowych urządzeń blokowych złożonych z przedziałów
370 sektorów na istniejących urządzeniach. Może to być wykorzystane do
371 definiowania partycji na dysku lub logicznych wolumenów. Ten lekki
372 składnik jądra może wspierać działające w przestrzeni użytkownika
373 narzędzia do zarządzania logicznymi wolumenami.
374
375 Ten pakiet zawiera program dmsetup skonsolidowany statycznie na
376 potrzeby initrd.
377
378 %prep
379 %setup -q -n LVM2.%{version}
380 %{?with_selinux:%patch0 -p1}
381 %patch1 -p1
382 %patch2 -p1
383 %patch3 -p1
384 %patch5 -p1
385 %patch6 -p1
386 %patch7 -p1
387 %patch8 -p1
388
389 # do not force --export-symbol linker option for e.g. statically linked executables
390 # -rdynamic compiler option drives linker in the right way.
391 %{__sed} -i -e 's#-Wl,--export-dynamic#-rdynamic#g' configure.ac
392
393 %build
394 %if %{with initrd}
395 echo Using %{?with_glibc:GLIBC} %{?with_uClibc:uClibc} %{?with_dietlibc:diet} for initrd
396 %endif
397 cp -f /usr/share/automake/config.sub autoconf
398 %{__aclocal}
399 %{__autoconf}
400
401 %if %{with initrd}
402 %{?with_glibc:export CC="%{__cc}"}
403 %{?with_uClibc:export CC="%{_target_cpu}-uclibc-gcc"}
404 %{?with_dietlibc:cc="%{__cc}"; export CC="diet ${cc#ccache }"}
405
406 %configure \
407         ac_cv_lib_dl_dlopen=no \
408         %{?with_uClibc:ac_cv_func_siginterrupt=no} \
409         %{?debug:--enable-debug} \
410         --disable-nls \
411         --disable-readline \
412         --enable-selinux%{!?with_glibc:=no} \
413         --enable-static_link \
414         --with-lvm1=internal \
415         --with-optimisation="%{rpmcflags} -Os"
416 # glibc version links with normal static libdevicemapper which has selinux enabled
417 # and we need to keep these in sync between device-mapper and lvm2
418
419 %{__sed} -i -e 's#rpl_malloc#malloc#g' lib/misc/configure.h
420 %{__sed} -i -e 's#rpl_realloc#realloc#g' lib/misc/configure.h
421
422 %{__make} -j1 -C include
423 %{__make} -j1 -C lib LIB_SHARED= VERSIONED_SHLIB=
424 %{__make} -j1 -C libdm LIB_SHARED= VERSIONED_SHLIB=
425 %{__make} -j1 -C libdaemon/client LIB_SHARED= VERSIONED_SHLIB=
426 %{__make} -j1 -C tools dmsetup.static lvm.static %{?with_dietlibc:DIETLIBC_LIBS="-lcompat"}
427 %{__mv} tools/lvm.static initrd-lvm
428 %{__mv} tools/dmsetup.static initrd-dmsetup
429
430 # check if tools works
431 for tool in initrd-lvm initrd-dmsetup; do
432         LVM_SYSTEM_DIR=$(pwd) ./$tool help && rc=$? || rc=$?
433         if [ $rc -gt 127 ]; then
434                 echo >&2 "Unexpected failure (exit status: $rc) from $tool. Does this tool work?!"
435                 exit 1
436         fi
437 done
438
439 %{?with_dietlibc:%{__mv} libdm/ioctl/libdevmapper.a diet-libdevmapper.a}
440 %{__make} clean
441
442 unset CC
443 %endif
444
445 %configure \
446         --enable-applib \
447         --enable-cache_check_needs_check \
448         --enable-cmdlib \
449         %{?with_lvmdbusd:--enable-dbus-service} \
450         %{?debug:--enable-debug} \
451         --enable-dmeventd \
452         --enable-fsadm \
453         --with-default-locking-dir=/var/lock/lvm \
454 %if %{with lvmlockd}
455         %{?with_cluster:--enable-lvmlockd-dlm} \
456         %{?with_sanlock:--enable-lvmlockd-sanlock} \
457 %endif
458         %{?with_lvmetad:--enable-lvmetad} \
459         --enable-lvmpolld \
460         --enable-ocf \
461         %{?with_python2:--enable-python2_bindings} \
462         %{?with_python3:--enable-python3_bindings} \
463         --enable-readline \
464         %{!?with_selinux:--disable-selinux} \
465         --enable-pkgconfig \
466         --enable-thin_check_needs_check \
467         --enable-udev_sync \
468         --enable-udev_rules \
469         --with-cache=internal \
470         --with-cache-check=/usr/sbin/cache_check \
471         --with-cache-dump=/usr/sbin/cache_dump \
472         --with-cache-repair=/usr/sbin/cache_repair \
473         --with-cache-restore=/usr/sbin/cache_restore \
474         --with-cluster=internal \
475 %if %{with cluster}
476         --with-clvmd=corosync \
477         --enable-cmirrord \
478 %endif
479         --with-dmeventd-path=%{_sbindir}/dmeventd \
480         --with-interface=ioctl \
481         --with-lvm1=internal \
482         --with-mirrors=internal \
483         --with-optimisation="%{rpmcflags}" \
484         --with-pool=internal \
485         %{?with_replicator:--with-replicators=internal} \
486         --with-snapshots=internal \
487         --with-thin=internal \
488         --with-thin-check=/usr/sbin/thin_check \
489         --with-thin-dump=/usr/sbin/thin_dump \
490         --with-thin-repair=/usr/sbin/thin_repair \
491         --with-thin-restore=/usr/sbin/thin_restore \
492         --with-udev-prefix=/ \
493         --with-usrlibdir=%{_libdir}
494
495 # use bash because of "set -o pipefail"
496 %{__make} -j1 \
497         SHELL=/bin/bash
498 %{__make} -j1 -C libdm \
499         LIB_STATIC=libdevmapper.a
500
501 %install
502 rm -rf $RPM_BUILD_ROOT
503 install -d $RPM_BUILD_ROOT{/%{_lib},%{_sysconfdir}/lvm,/etc/sysconfig}
504 %{?with_dietlibc:install -d $RPM_BUILD_ROOT%{dietlibdir}}
505
506 %{__make} install install_system_dirs install_initscripts \
507         DESTDIR=$RPM_BUILD_ROOT \
508         OWNER="" \
509         GROUP="" \
510         python3dir=%{py3_sitescriptdir}
511
512 %if %{with cluster}
513 cp -p %{SOURCE3} $RPM_BUILD_ROOT/etc/sysconfig/clvmd
514 %endif
515
516 %{__mv} $RPM_BUILD_ROOT%{_libdir}/lib*.so.* $RPM_BUILD_ROOT/%{_lib}
517 for lib in $RPM_BUILD_ROOT/%{_lib}/lib*.so.*; do
518         lib=$(echo $lib | sed -e "s#$RPM_BUILD_ROOT##g")
519         slib=$(basename $lib | sed -e 's#\.so\..*#.so#g')
520         ln -sf $lib $RPM_BUILD_ROOT%{_libdir}/$slib
521 done
522
523 touch $RPM_BUILD_ROOT%{_sysconfdir}/lvm/lvm.conf
524
525 %if %{with initrd}
526 install -d $RPM_BUILD_ROOT%{_libdir}/initrd
527 install -p initrd-lvm $RPM_BUILD_ROOT%{_libdir}/initrd/lvm
528 install -p initrd-dmsetup $RPM_BUILD_ROOT%{_libdir}/initrd/dmsetup
529
530 %{?with_dietlibc:cp -a diet-libdevmapper.a $RPM_BUILD_ROOT%{dietlibdir}/libdevmapper.a}
531 %endif
532
533 cp -a libdm/libdevmapper.a $RPM_BUILD_ROOT%{_libdir}
534
535 %clean
536 rm -rf $RPM_BUILD_ROOT
537
538 %post
539 /sbin/chkconfig --add lvm2-lvmetad
540 %service lvm2-lvmetad restart
541 /sbin/chkconfig --add lvm2-monitor
542 %service lvm2-monitor restart
543 /sbin/chkconfig --add lvm2-lvmpolld
544 %service lvm2-lvmpolld restart
545 # no service restart available
546 /sbin/chkconfig --add blk-availability
547 # no service blk-availability restart
548
549 %preun
550 if [ "$1" = "0" ]; then
551         %service lvm2-lvmetad stop
552         /sbin/chkconfig --del lvm2-lvmetad
553         %service lvm2-lvmpolld stop
554         /sbin/chkconfig --del lvm2-lvmpolld
555         %service lvm2-monitor stop
556         /sbin/chkconfig --del lvm2-monitor
557         #no service blk-availability stop
558         /sbin/chkconfig --del blk-availability
559 fi
560
561 %post   -n device-mapper-libs -p /sbin/ldconfig
562 %postun -n device-mapper-libs -p /sbin/ldconfig
563
564 %post clvmd
565 /sbin/chkconfig --add clvmd
566 # no service restart - it breaks current locks!
567 export NORESTART=1
568 # re-exec instead
569 /usr/sbin/clvmd -S 2>/dev/null || :
570
571 %preun clvmd
572 if [ "$1" = "0" ]; then
573         %service clvmd stop
574         /sbin/chkconfig --del clvmd
575 fi
576
577 %files
578 %defattr(644,root,root,755)
579 %doc README WHATS_NEW doc/*
580 %attr(755,root,root) %{_sbindir}/blkdeactivate
581 %attr(755,root,root) %{_sbindir}/fsadm
582 %attr(755,root,root) %{_sbindir}/lvchange
583 %attr(755,root,root) %{_sbindir}/lvconvert
584 %attr(755,root,root) %{_sbindir}/lvcreate
585 %attr(755,root,root) %{_sbindir}/lvdisplay
586 %attr(755,root,root) %{_sbindir}/lvextend
587 %attr(755,root,root) %{_sbindir}/lvm
588 %attr(755,root,root) %{_sbindir}/lvmconf
589 %attr(755,root,root) %{_sbindir}/lvmconfig
590 %attr(755,root,root) %{_sbindir}/lvmdiskscan
591 %attr(755,root,root) %{_sbindir}/lvmdump
592 %attr(755,root,root) %{_sbindir}/lvmsadc
593 %attr(755,root,root) %{_sbindir}/lvmsar
594 %attr(755,root,root) %{_sbindir}/lvreduce
595 %attr(755,root,root) %{_sbindir}/lvremove
596 %attr(755,root,root) %{_sbindir}/lvrename
597 %attr(755,root,root) %{_sbindir}/lvresize
598 %attr(755,root,root) %{_sbindir}/lvs
599 %attr(755,root,root) %{_sbindir}/lvscan
600 %attr(755,root,root) %{_sbindir}/pvchange
601 %attr(755,root,root) %{_sbindir}/pvck
602 %attr(755,root,root) %{_sbindir}/pvcreate
603 %attr(755,root,root) %{_sbindir}/pvdisplay
604 %attr(755,root,root) %{_sbindir}/pvmove
605 %attr(755,root,root) %{_sbindir}/pvremove
606 %attr(755,root,root) %{_sbindir}/pvresize
607 %attr(755,root,root) %{_sbindir}/pvs
608 %attr(755,root,root) %{_sbindir}/pvscan
609 %attr(755,root,root) %{_sbindir}/vgcfgbackup
610 %attr(755,root,root) %{_sbindir}/vgcfgrestore
611 %attr(755,root,root) %{_sbindir}/vgchange
612 %attr(755,root,root) %{_sbindir}/vgck
613 %attr(755,root,root) %{_sbindir}/vgconvert
614 %attr(755,root,root) %{_sbindir}/vgcreate
615 %attr(755,root,root) %{_sbindir}/vgdisplay
616 %attr(755,root,root) %{_sbindir}/vgexport
617 %attr(755,root,root) %{_sbindir}/vgextend
618 %attr(755,root,root) %{_sbindir}/vgimport
619 %attr(755,root,root) %{_sbindir}/vgimportclone
620 %attr(755,root,root) %{_sbindir}/vgmerge
621 %attr(755,root,root) %{_sbindir}/vgmknodes
622 %attr(755,root,root) %{_sbindir}/vgreduce
623 %attr(755,root,root) %{_sbindir}/vgremove
624 %attr(755,root,root) %{_sbindir}/vgrename
625 %attr(755,root,root) %{_sbindir}/vgs
626 %attr(755,root,root) %{_sbindir}/vgscan
627 %attr(755,root,root) %{_sbindir}/vgsplit
628 %{_mandir}/man5/lvm.conf.5*
629 %{_mandir}/man7/lvmcache.7*
630 %{_mandir}/man7/lvmraid.7*
631 %{_mandir}/man7/lvmreport.7*
632 %{_mandir}/man7/lvmsystemid.7*
633 %{_mandir}/man7/lvmthin.7*
634 %{_mandir}/man8/blkdeactivate.8*
635 %{_mandir}/man8/fsadm.8*
636 %{_mandir}/man8/lvchange.8*
637 %{_mandir}/man8/lvconvert.8*
638 %{_mandir}/man8/lvcreate.8*
639 %{_mandir}/man8/lvdisplay.8*
640 %{_mandir}/man8/lvextend.8*
641 %{_mandir}/man8/lvm-config.8*
642 %{_mandir}/man8/lvm-dumpconfig.8*
643 %{_mandir}/man8/lvm-fullreport.8*
644 %{_mandir}/man8/lvm-lvpoll.8*
645 %{_mandir}/man8/lvm.8*
646 %{_mandir}/man8/lvmconf.8*
647 %{_mandir}/man8/lvmconfig.8*
648 %{_mandir}/man8/lvmdiskscan.8*
649 %{_mandir}/man8/lvmdump.8*
650 %{_mandir}/man8/lvmsadc.8*
651 %{_mandir}/man8/lvmsar.8*
652 %{_mandir}/man8/lvreduce.8*
653 %{_mandir}/man8/lvremove.8*
654 %{_mandir}/man8/lvrename.8*
655 %{_mandir}/man8/lvresize.8*
656 %{_mandir}/man8/lvs.8*
657 %{_mandir}/man8/lvscan.8*
658 %{_mandir}/man8/pvchange.8*
659 %{_mandir}/man8/pvck.8*
660 %{_mandir}/man8/pvcreate.8*
661 %{_mandir}/man8/pvdisplay.8*
662 %{_mandir}/man8/pvmove.8*
663 %{_mandir}/man8/pvremove.8*
664 %{_mandir}/man8/pvresize.8*
665 %{_mandir}/man8/pvs.8*
666 %{_mandir}/man8/pvscan.8*
667 %{_mandir}/man8/vgcfgbackup.8*
668 %{_mandir}/man8/vgcfgrestore.8*
669 %{_mandir}/man8/vgchange.8*
670 %{_mandir}/man8/vgck.8*
671 %{_mandir}/man8/vgconvert.8*
672 %{_mandir}/man8/vgcreate.8*
673 %{_mandir}/man8/vgdisplay.8*
674 %{_mandir}/man8/vgexport.8*
675 %{_mandir}/man8/vgextend.8*
676 %{_mandir}/man8/vgimport.8*
677 %{_mandir}/man8/vgimportclone.8*
678 %{_mandir}/man8/vgmerge.8*
679 %{_mandir}/man8/vgmknodes.8*
680 %{_mandir}/man8/vgreduce.8*
681 %{_mandir}/man8/vgremove.8*
682 %{_mandir}/man8/vgrename.8*
683 %{_mandir}/man8/vgs.8*
684 %{_mandir}/man8/vgscan.8*
685 %{_mandir}/man8/vgsplit.8*
686 %attr(750,root,root) %dir %{_sysconfdir}/lvm
687 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lvm/lvm.conf
688 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lvm/lvmlocal.conf
689 %attr(750,root,root) %dir %{_sysconfdir}/lvm/profile
690 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lvm/profile/cache-mq.profile
691 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lvm/profile/cache-smq.profile
692 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lvm/profile/command_profile_template.profile
693 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lvm/profile/metadata_profile_template.profile
694 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lvm/profile/thin-generic.profile
695 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lvm/profile/thin-performance.profile
696 %dir %{_sysconfdir}/lvm/cache
697 %ghost %{_sysconfdir}/lvm/cache/.cache
698 %attr(754,root,root) /etc/rc.d/init.d/blk-availability
699 %attr(754,root,root) /etc/rc.d/init.d/lvm2-monitor
700 %attr(700,root,root) %dir /var/run/lvm
701 %attr(700,root,root) %dir /var/lock/lvm
702 %if %{with lvmetad}
703 %attr(755,root,root) %{_sbindir}/lvmetad
704 /lib/udev/rules.d/69-dm-lvm-metad.rules
705 %attr(754,root,root) /etc/rc.d/init.d/lvm2-lvmetad
706 %{_mandir}/man8/lvmetad.8*
707 %endif
708 %if %{with lvmlockd}
709 %attr(755,root,root) %{_sbindir}/lvmlockctl
710 %attr(755,root,root) %{_sbindir}/lvmlockd
711 %{_mandir}/man8/lvmlockctl.8*
712 %{_mandir}/man8/lvmlockd.8*
713 %endif
714 %if %{with lvmpolld}
715 %attr(755,root,root) %{_sbindir}/lvmpolld
716 %attr(754,root,root) /etc/rc.d/init.d/lvm2-lvmpolld
717 %{_mandir}/man8/lvmpolld.8*
718 %endif
719
720 %if %{with cluster}
721 %files clvmd
722 %defattr(644,root,root,755)
723 %attr(755,root,root) %{_usrsbindir}/clvmd
724 %attr(754,root,root) /etc/rc.d/init.d/clvmd
725 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/clvmd
726 %{_mandir}/man8/clvmd.8*
727
728 %files cmirrord
729 %defattr(644,root,root,755)
730 %attr(755,root,root) %{_usrsbindir}/cmirrord
731 %attr(754,root,root) /etc/rc.d/init.d/cmirrord
732 %{_mandir}/man8/cmirrord.8*
733 %endif
734
735 %if %{with lvmdbusd}
736 %files dbusd
737 %defattr(644,root,root,755)
738 %attr(755,root,root) %{_sbindir}/lvmdbusd
739 %{py3_sitescriptdir}/lvmdbusd
740 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lvm/profile/lvmdbusd.profile
741 #%config(noreplace) %verify(not md5 mtime size) /etc/dbus-1/system.d/com.redhat.lvmdbus1.conf
742 #%{_datadir}/dbus-1/system-services/com.redhat.lvmdbus1.service
743 %{_mandir}/man8/lvmdbusd.8*
744 %endif
745
746 %files resource-agents
747 %defattr(644,root,root,755)
748 %dir %{_prefix}/lib/ocf/resource.d/lvm2
749 %attr(755,root,root) %{_prefix}/lib/ocf/resource.d/lvm2/VolumeGroup
750
751 %if %{with python2}
752 %files -n python-lvm
753 %defattr(644,root,root,755)
754 %attr(755,root,root) %{py_sitedir}/lvm.so
755 %{py_sitedir}/lvm-%{version}_*-py*.egg-info
756 %endif
757
758 %if %{with python3}
759 %files -n python3-lvm
760 %defattr(644,root,root,755)
761 %attr(755,root,root) %{py3_sitedir}/lvm.cpython-*.so
762 %{py3_sitedir}/lvm-%{version}_*-py*.egg-info
763 %endif
764
765 %files -n device-mapper
766 %defattr(644,root,root,755)
767 %doc *_DM
768 /lib/udev/rules.d/10-dm.rules
769 /lib/udev/rules.d/11-dm-lvm.rules
770 /lib/udev/rules.d/13-dm-disk.rules
771 /lib/udev/rules.d/95-dm-notify.rules
772 %attr(755,root,root) %{_sbindir}/dmeventd
773 %attr(755,root,root) %{_sbindir}/dmsetup
774 %attr(755,root,root) %{_sbindir}/dmstats
775 %attr(755,root,root) %{_libdir}/libdevmapper-event-lvm2mirror.so
776 %attr(755,root,root) %{_libdir}/libdevmapper-event-lvm2raid.so
777 %attr(755,root,root) %{_libdir}/libdevmapper-event-lvm2snapshot.so
778 %attr(755,root,root) %{_libdir}/libdevmapper-event-lvm2thin.so
779 %dir %{_libdir}/device-mapper
780 %attr(755,root,root) %{_libdir}/device-mapper/libdevmapper-event-lvm2mirror.so
781 %attr(755,root,root) %{_libdir}/device-mapper/libdevmapper-event-lvm2raid.so
782 %attr(755,root,root) %{_libdir}/device-mapper/libdevmapper-event-lvm2snapshot.so
783 %attr(755,root,root) %{_libdir}/device-mapper/libdevmapper-event-lvm2thin.so
784 %{_mandir}/man8/dmsetup.8*
785 %{_mandir}/man8/dmstats.8*
786 %{_mandir}/man8/dmeventd.8*
787
788 %files -n device-mapper-libs
789 %defattr(644,root,root,755)
790 %attr(755,root,root) /%{_lib}/libdevmapper.so.*.*
791 %attr(755,root,root) /%{_lib}/libdevmapper-event.so.*.*
792 %attr(755,root,root) /%{_lib}/libdevmapper-event-lvm2.so.*.*
793 %attr(755,root,root) /%{_lib}/liblvm2app.so.*.*
794 %attr(755,root,root) /%{_lib}/liblvm2cmd.so.*.*
795
796 %files -n device-mapper-devel
797 %defattr(644,root,root,755)
798 %attr(755,root,root) %{_libdir}/libdevmapper.so
799 %attr(755,root,root) %{_libdir}/libdevmapper-event.so
800 %attr(755,root,root) %{_libdir}/libdevmapper-event-lvm2.so
801 %attr(755,root,root) %{_libdir}/liblvm2app.so
802 %attr(755,root,root) %{_libdir}/liblvm2cmd.so
803 %{_includedir}/libdevmapper.h
804 %{_includedir}/libdevmapper-event.h
805 %{_includedir}/lvm2app.h
806 %{_includedir}/lvm2cmd.h
807 %{_pkgconfigdir}/devmapper.pc
808 %{_pkgconfigdir}/devmapper-event.pc
809 %{_pkgconfigdir}/lvm2app.pc
810
811 %files -n device-mapper-static
812 %defattr(644,root,root,755)
813 %{_libdir}/libdevmapper.a
814
815 %if %{with initrd}
816 %if %{with dietlibc}
817 %files -n device-mapper-dietlibc
818 %defattr(644,root,root,755)
819 %{dietlibdir}/libdevmapper.a
820 %endif
821
822 %files -n device-mapper-initrd
823 %defattr(644,root,root,755)
824 %attr(755,root,root) %{_libdir}/initrd/dmsetup
825
826 %files initrd
827 %defattr(644,root,root,755)
828 %attr(755,root,root) %{_libdir}/initrd/lvm
829 %endif