# TODO # - vgscan --ignorelocking failure creates /var/lock/lvm (even if /var is not yet mounted) # - spec default value for --with-replicators (=internal/shared/none, configure default is none)? # (also internal vs shared for lvm1,pool,cluster,snapshots,mirrors,raid,replicators,thin,cache; # note: dmeventd requires mirrors=internal) # # Conditional build: # - functionality %bcond_without cluster # disable all cluster support (cmirrord) %bcond_without lvmdbusd # lvmdbusd %bcond_without lvmpolld # lvmpolld (and lvmlockd) %bcond_without lvmlockd # lvmlockd %bcond_with sanlock # sanlock support in lvmlockd %bcond_with replicator # internal replicator support # - additional features %bcond_without selinux # SELinux support # - bindings %bcond_without python # Python bindings %bcond_without python2 # Python 2 binding %bcond_without python3 # Python 3 binding and lvmdbusd # for convenience %if %{without python} %undefine with_python2 %undefine with_python3 %endif %if %{without python3} %undefine with_lvmdbusd %endif Summary: The new version of Logical Volume Manager for Linux Summary(pl.UTF-8): Nowa wersja Logical Volume Managera dla Linuksa Name: lvm2 Version: 2.03.00 Release: 2 License: GPL v2 and LGPL v2.1 Group: Applications/System Source0: ftp://sources.redhat.com/pub/lvm2/LVM2.%{version}.tgz # Source0-md5: f63cc5feaadd3000138e73f7143ed370 Patch0: %{name}-selinux.patch Patch1: device-mapper-dmsetup-export.patch Patch2: %{name}-tld_init.patch Patch3: dl-dlsym.patch Patch4: %{name}-run-dir.patch Patch5: device-mapper-dmsetup-deps-export.patch Patch6: %{name}-thin.patch Patch7: %{name}-no-systemd.patch Patch8: %{name}-removed-lvmetad-fix.patch URL: http://www.sourceware.org/lvm2/ BuildRequires: autoconf >= 2.69 BuildRequires: automake # for /run detection BuildRequires: filesystem >= 3.0-43 BuildRequires: libblkid-devel >= 2.24 %{?with_selinux:BuildRequires: libselinux-devel >= 1.10} %{?with_selinux:BuildRequires: libsepol-devel} BuildRequires: ncurses-devel BuildRequires: pkgconfig %{?with_python2:BuildRequires: python-devel >= 2} %{?with_python3:BuildRequires: python3-devel >= 1:3.2} %if %{with lvmdbusd} BuildRequires: python3-dbus BuildRequires: python3-pyudev %endif BuildRequires: readline-devel BuildRequires: rpmbuild(macros) >= 1.647 %{?with_sanlock:BuildRequires: sanlock-devel >= 3.3.0} BuildRequires: udev-devel >= 1:176 %if %{with cluster} BuildRequires: corosync-devel BuildRequires: dlm-devel >= 3.99.5 %endif Requires(post,postun): /sbin/chkconfig Requires: device-mapper >= %{version}-%{release} %{?with_selinux:Requires: libselinux >= 1.10} # doesn't work with 2.4 kernels Requires: uname(release) >= 2.6 Suggests: thin-provisioning-tools >= 0.5.4 Obsoletes: lvm Obsoletes: lvm2-clvmd Obsoletes: lvm2-systemd BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) %define _sbindir /sbin %define _usrsbindir /usr/sbin # changing CFLAGS in the middle confuses confcache %undefine configure_cache # borken on AC %define filterout_ld -Wl,--as-needed # causes: undefined reference to `__stack_chk_fail_local' %define filterout_c -fstack-protector %define skip_post_check_so '.*(libdevmapper-event.so|libdevmapper-event-lvm2.so).*' %description This package includes a number of utilities for creating, checking, and repairing logical volumes. %description -l pl.UTF-8 Pakiet ten zawiera narzędzia do tworzenia, sprawdzania i naprawiania logicznych wolumenów dyskowych (LVM2). %package cmirrord Summary: Cluster mirror log daemon Summary(pl.UTF-8): Demon śledzący log lustrzany w klastrze Group: Applications/System Requires: %{name} = %{version}-%{release} %description cmirrord cmirrord is the daemon that tracks mirror log information in a cluster. It is specific to device-mapper based mirrors (and by extension, LVM cluster mirrors). Cluster mirrors are not possible without this daemon running. This daemon relies on the cluster infrastructure provided by the Cluster MANager (CMAN), which must be set up and running in order for cmirrord to function. %description cmirrord cmirrord to demon śledzący informacje logu lustrzanego w klastrze. Jest specyficzny dla klastrów lustrzanych opartych na device-mapperze (oraz, poprzez rozszerzenie, klastrów lustrzanych LVM). W klastrach lustrzanych ten demon jest niezbędny. Ten demon polega na infrastrukturze klastra dostarczanej przez CMAN (Cluster MANager), który musi być skonfigurowany i działający, aby działał cmirrord. %package dbusd Summary: LVM2 D-Bus daemon Summary(pl.UTF-8): Demon LVM2 D-Bus Group: Daemons Requires: %{name} = %{version}-%{release} Requires: python3-dbus Requires: python3-pygobject3 >= 3 Requires: python3-pyudev %description dbusd Daemon for access to LVM2 functionality through a D-Bus interface. %description dbusd -l pl.UTF-8 Demon umożliwiający dostęp do funkcjonalności LVM2 poprzez interfejs D-Bus. %package lockd Summary: LVM2 locking daemon Summary(pl.UTF-8): Demon blokad LVM2 Group: Daemons Requires: %{name} = %{version}-%{release} %{?with_cluster:Requires: dlm-libs >= 3.99.5} %{?with_sanlock:Requires: sanlock-libs >= 3.3.0} %description lockd LVM commands use lvmlockd to coordinate access to shared storage. %description lockd -l pl.UTF-8 Polecenia LVM wykorzystują lvmlockd do koordynowania dostępu do współdzielonej pamięci masowej. %package resource-agents Summary: OCF Resource Agents for LVM2 processes Summary(pl.UTF-8): Agenci OCF do monitorowania procesów LVM2 Group: Applications/System Requires: %{name} = %{version}-%{release} Requires: resource-agents %description resource-agents OCF Resource Agents for LVM2 processes. %description resource-agents -l pl.UTF-8 Agenci OCF do monitorowania procesów LVM2. %package -n python-lvm Summary: Python 2 interface to LVM2 Summary(pl.UTF-8): Interfejs Pythona 2 do LVM2 Group: Libraries/Python Requires: device-mapper-libs = %{version}-%{release} %description -n python-lvm Python 2 interface to LVM2. %description -n python-lvm -l pl.UTF-8 Interfejs Pythona 2 do LVM2. %package -n python3-lvm Summary: Python 3 interface to LVM2 Summary(pl.UTF-8): Interfejs Pythona 3 do LVM2 Group: Libraries/Python Requires: device-mapper-libs = %{version}-%{release} %description -n python3-lvm Python 3 interface to LVM2. %description -n python3-lvm -l pl.UTF-8 Interfejs Pythona 3 do LVM2. %package -n device-mapper Summary: Userspace support for the device-mapper Summary(pl.UTF-8): Wsparcie dla mapowania urządzeń w przestrzeni użytkownika Group: Base Requires(post,postun): /sbin/ldconfig Requires: device-mapper-libs = %{version}-%{release} %description -n device-mapper The goal of this driver is to support volume management. The driver enables the definition of new block devices composed of ranges of sectors of existing devices. This can be used to define disk partitions - or logical volumes. This light-weight kernel component can support user-space tools for logical volume management. %description -n device-mapper -l pl.UTF-8 Celem tego sterownika jest obsługa zarządzania wolumenami. Sterownik włącza definiowanie nowych urządzeń blokowych złożonych z przedziałów sektorów na istniejących urządzeniach. Może to być wykorzystane do definiowania partycji na dysku lub logicznych wolumenów. Ten lekki składnik jądra może wspierać działające w przestrzeni użytkownika narzędzia do zarządzania logicznymi wolumenami. %package -n device-mapper-libs Summary: Device-mapper shared libraries Summary(pl.UTF-8): Biblioteki współdzielone device-mappera Group: Libraries Requires: libblkid >= 2.24 Requires: udev-libs >= 1:176 Conflicts: device-mapper < 2.02.119-1 %description -n device-mapper-libs Device-mapper shared libraries. %description -n device-mapper-libs -l pl.UTF-8 Biblioteki współdzielone device-mappera. %package -n device-mapper-devel Summary: Header files for device-mapper libraries Summary(pl.UTF-8): Pliki nagłówkowe bibliotek device-mappera Group: Development/Libraries Requires: device-mapper-libs = %{version}-%{release} Requires: libblkid-devel >= 2.24 %if %{with selinux} Requires: libselinux-devel Requires: libsepol-devel %endif Requires: udev-devel >= 1:176 %description -n device-mapper-devel Header files for device-mapper libraries. %description -n device-mapper-devel -l pl.UTF-8 Pliki nagłówkowe bibliotek device-mappera. %package -n device-mapper-static Summary: Static devmapper library Summary(pl.UTF-8): Statyczna biblioteka devmapper License: LGPL v2.1 Group: Development/Libraries Requires: device-mapper-devel = %{version}-%{release} %description -n device-mapper-static Static devmapper library. %description -n device-mapper-static -l pl.UTF-8 Statyczna biblioteka devmapper. %package -n device-mapper-dietlibc Summary: Static devmapper library built with dietlibc Summary(pl.UTF-8): Statyczna biblioteka devmapper zbudowana z dietlibc License: LGPL v2.1 Group: Development/Libraries Requires: device-mapper-devel = %{version}-%{release} %description -n device-mapper-dietlibc Static devmapper library built with dietlibc. %description -n device-mapper-dietlibc -l pl.UTF-8 Statyczna biblioteka devmapper zbudowana z dietlibc. %prep %setup -q -n LVM2.%{version} %{?with_selinux:%patch0 -p1} %patch1 -p1 %patch2 -p1 %patch3 -p1 %patch4 -p1 %patch5 -p1 %patch6 -p1 %patch7 -p1 %patch8 -p1 # do not force --export-symbol linker option for e.g. statically linked executables # -rdynamic compiler option drives linker in the right way. %{__sed} -i -e 's#-Wl,--export-dynamic#-rdynamic#g' configure.ac %build cp -f /usr/share/automake/config.sub autoconf %{__aclocal} %{__autoconf} %configure \ --enable-applib \ --enable-cache_check_needs_check \ --enable-cmdlib \ %{?with_lvmdbusd:--enable-dbus-service} \ %{?debug:--enable-debug} \ --enable-dmeventd \ --enable-fsadm \ --with-default-locking-dir=/var/lock/lvm \ %if %{with lvmlockd} %{?with_cluster:--enable-lvmlockd-dlm} \ %{?with_sanlock:--enable-lvmlockd-sanlock} \ %endif --enable-lvmpolld \ --enable-ocf \ %{?with_python2:--enable-python2_bindings} \ %{?with_python3:--enable-python3_bindings} \ --enable-readline \ %{!?with_selinux:--disable-selinux} \ --enable-pkgconfig \ --enable-thin_check_needs_check \ --enable-udev_sync \ --enable-udev_rules \ --disable-udev-systemd-background-jobs \ --with-cache=internal \ --with-cache-check=/usr/sbin/cache_check \ --with-cache-dump=/usr/sbin/cache_dump \ --with-cache-repair=/usr/sbin/cache_repair \ --with-cache-restore=/usr/sbin/cache_restore \ --with-cluster=internal \ %if %{with cluster} --enable-cmirrord \ %endif --with-dmeventd-path=%{_sbindir}/dmeventd \ --with-interface=ioctl \ --with-lvm1=internal \ --with-mirrors=internal \ --with-optimisation="%{rpmcflags}" \ --with-pool=internal \ %{?with_replicator:--with-replicators=internal} \ --with-snapshots=internal \ --with-thin=internal \ --with-thin-check=/usr/sbin/thin_check \ --with-thin-dump=/usr/sbin/thin_dump \ --with-thin-repair=/usr/sbin/thin_repair \ --with-thin-restore=/usr/sbin/thin_restore \ --with-udev-prefix=/ \ --with-usrlibdir=%{_libdir} # use bash because of "set -o pipefail" %{__make} -j1 \ SHELL=/bin/bash %{__make} -j1 -C libdm \ LIB_STATIC=libdevmapper.a %install rm -rf $RPM_BUILD_ROOT install -d $RPM_BUILD_ROOT{/%{_lib},%{_sysconfdir}/lvm,/etc/sysconfig} %{__make} install install_system_dirs install_initscripts \ DESTDIR=$RPM_BUILD_ROOT \ OWNER="" \ GROUP="" \ python3dir=%{py3_sitescriptdir} %{__mv} $RPM_BUILD_ROOT%{_libdir}/lib*.so.* $RPM_BUILD_ROOT/%{_lib} for lib in $RPM_BUILD_ROOT/%{_lib}/lib*.so.*; do lib=$(echo $lib | sed -e "s#$RPM_BUILD_ROOT##g") slib=$(basename $lib | sed -e 's#\.so\..*#.so#g') ln -sf $lib $RPM_BUILD_ROOT%{_libdir}/$slib done touch $RPM_BUILD_ROOT%{_sysconfdir}/lvm/lvm.conf cp -a libdm/libdevmapper.a $RPM_BUILD_ROOT%{_libdir} %clean rm -rf $RPM_BUILD_ROOT %triggerin -- lvm2 < 2.03.00 %service lvm2-lvmetad stop /sbin/chkconfig --del lvm2-lvmetad %triggerin -- lvm2-clvmd %service clvmd stop /sbin/chkconfig --del clvmd %post /sbin/chkconfig --add lvm2-monitor %service lvm2-monitor restart /sbin/chkconfig --add lvm2-lvmpolld %service lvm2-lvmpolld restart # no service restart available /sbin/chkconfig --add blk-availability # no service blk-availability restart %preun if [ "$1" = "0" ]; then %service lvm2-lvmpolld stop /sbin/chkconfig --del lvm2-lvmpolld %service lvm2-monitor stop /sbin/chkconfig --del lvm2-monitor #no service blk-availability stop /sbin/chkconfig --del blk-availability fi %post -n device-mapper-libs -p /sbin/ldconfig %postun -n device-mapper-libs -p /sbin/ldconfig %files %defattr(644,root,root,755) %doc README WHATS_NEW doc/* %attr(755,root,root) %{_sbindir}/blkdeactivate %attr(755,root,root) %{_sbindir}/fsadm %attr(755,root,root) %{_sbindir}/lvchange %attr(755,root,root) %{_sbindir}/lvconvert %attr(755,root,root) %{_sbindir}/lvcreate %attr(755,root,root) %{_sbindir}/lvdisplay %attr(755,root,root) %{_sbindir}/lvextend %attr(755,root,root) %{_sbindir}/lvm %attr(755,root,root) %{_sbindir}/lvmconfig %attr(755,root,root) %{_sbindir}/lvmdiskscan %attr(755,root,root) %{_sbindir}/lvmdump %attr(755,root,root) %{_sbindir}/lvmsadc %attr(755,root,root) %{_sbindir}/lvmsar %attr(755,root,root) %{_sbindir}/lvreduce %attr(755,root,root) %{_sbindir}/lvremove %attr(755,root,root) %{_sbindir}/lvrename %attr(755,root,root) %{_sbindir}/lvresize %attr(755,root,root) %{_sbindir}/lvs %attr(755,root,root) %{_sbindir}/lvscan %attr(755,root,root) %{_sbindir}/pvchange %attr(755,root,root) %{_sbindir}/pvck %attr(755,root,root) %{_sbindir}/pvcreate %attr(755,root,root) %{_sbindir}/pvdisplay %attr(755,root,root) %{_sbindir}/pvmove %attr(755,root,root) %{_sbindir}/pvremove %attr(755,root,root) %{_sbindir}/pvresize %attr(755,root,root) %{_sbindir}/pvs %attr(755,root,root) %{_sbindir}/pvscan %attr(755,root,root) %{_sbindir}/vgcfgbackup %attr(755,root,root) %{_sbindir}/vgcfgrestore %attr(755,root,root) %{_sbindir}/vgchange %attr(755,root,root) %{_sbindir}/vgck %attr(755,root,root) %{_sbindir}/vgconvert %attr(755,root,root) %{_sbindir}/vgcreate %attr(755,root,root) %{_sbindir}/vgdisplay %attr(755,root,root) %{_sbindir}/vgexport %attr(755,root,root) %{_sbindir}/vgextend %attr(755,root,root) %{_sbindir}/vgimport %attr(755,root,root) %{_sbindir}/vgimportclone %attr(755,root,root) %{_sbindir}/vgmerge %attr(755,root,root) %{_sbindir}/vgmknodes %attr(755,root,root) %{_sbindir}/vgreduce %attr(755,root,root) %{_sbindir}/vgremove %attr(755,root,root) %{_sbindir}/vgrename %attr(755,root,root) %{_sbindir}/vgs %attr(755,root,root) %{_sbindir}/vgscan %attr(755,root,root) %{_sbindir}/vgsplit %{_mandir}/man5/lvm.conf.5* %{_mandir}/man7/lvmcache.7* %{_mandir}/man7/lvmraid.7* %{_mandir}/man7/lvmreport.7* %{_mandir}/man7/lvmsystemid.7* %{_mandir}/man7/lvmthin.7* %{_mandir}/man8/blkdeactivate.8* %{_mandir}/man8/fsadm.8* %{_mandir}/man8/lvchange.8* %{_mandir}/man8/lvconvert.8* %{_mandir}/man8/lvcreate.8* %{_mandir}/man8/lvdisplay.8* %{_mandir}/man8/lvextend.8* %{_mandir}/man8/lvm-config.8* %{_mandir}/man8/lvm-dumpconfig.8* %{_mandir}/man8/lvm-fullreport.8* %{_mandir}/man8/lvm-lvpoll.8* %{_mandir}/man8/lvm.8* %{_mandir}/man8/lvmconfig.8* %{_mandir}/man8/lvmdiskscan.8* %{_mandir}/man8/lvmdump.8* %{_mandir}/man8/lvmsadc.8* %{_mandir}/man8/lvmsar.8* %{_mandir}/man8/lvreduce.8* %{_mandir}/man8/lvremove.8* %{_mandir}/man8/lvrename.8* %{_mandir}/man8/lvresize.8* %{_mandir}/man8/lvs.8* %{_mandir}/man8/lvscan.8* %{_mandir}/man8/pvchange.8* %{_mandir}/man8/pvck.8* %{_mandir}/man8/pvcreate.8* %{_mandir}/man8/pvdisplay.8* %{_mandir}/man8/pvmove.8* %{_mandir}/man8/pvremove.8* %{_mandir}/man8/pvresize.8* %{_mandir}/man8/pvs.8* %{_mandir}/man8/pvscan.8* %{_mandir}/man8/vgcfgbackup.8* %{_mandir}/man8/vgcfgrestore.8* %{_mandir}/man8/vgchange.8* %{_mandir}/man8/vgck.8* %{_mandir}/man8/vgconvert.8* %{_mandir}/man8/vgcreate.8* %{_mandir}/man8/vgdisplay.8* %{_mandir}/man8/vgexport.8* %{_mandir}/man8/vgextend.8* %{_mandir}/man8/vgimport.8* %{_mandir}/man8/vgimportclone.8* %{_mandir}/man8/vgmerge.8* %{_mandir}/man8/vgmknodes.8* %{_mandir}/man8/vgreduce.8* %{_mandir}/man8/vgremove.8* %{_mandir}/man8/vgrename.8* %{_mandir}/man8/vgs.8* %{_mandir}/man8/vgscan.8* %{_mandir}/man8/vgsplit.8* %attr(750,root,root) %dir %{_sysconfdir}/lvm %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lvm/lvm.conf %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lvm/lvmlocal.conf %attr(750,root,root) %dir %{_sysconfdir}/lvm/profile %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lvm/profile/cache-mq.profile %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lvm/profile/cache-smq.profile %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lvm/profile/command_profile_template.profile %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lvm/profile/metadata_profile_template.profile %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lvm/profile/thin-generic.profile %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lvm/profile/thin-performance.profile %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lvm/profile/vdo-small.profile %dir %{_sysconfdir}/lvm/cache %ghost %{_sysconfdir}/lvm/cache/.cache %attr(754,root,root) /etc/rc.d/init.d/blk-availability %attr(754,root,root) /etc/rc.d/init.d/lvm2-monitor %attr(700,root,root) %dir /var/run/lvm %attr(700,root,root) %dir /var/lock/lvm %if %{with lvmlockd} %attr(755,root,root) %{_sbindir}/lvmlockctl %attr(755,root,root) %{_sbindir}/lvmlockd %{_mandir}/man8/lvmlockctl.8* %{_mandir}/man8/lvmlockd.8* %endif %if %{with lvmpolld} %attr(755,root,root) %{_sbindir}/lvmpolld %attr(754,root,root) /etc/rc.d/init.d/lvm2-lvmpolld %{_mandir}/man8/lvmpolld.8* %endif %if %{with cluster} %files cmirrord %defattr(644,root,root,755) %attr(755,root,root) %{_usrsbindir}/cmirrord %attr(754,root,root) /etc/rc.d/init.d/cmirrord %{_mandir}/man8/cmirrord.8* %endif %if %{with lvmdbusd} %files dbusd %defattr(644,root,root,755) %attr(755,root,root) %{_sbindir}/lvmdbusd %{py3_sitescriptdir}/lvmdbusd %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lvm/profile/lvmdbusd.profile %{_mandir}/man8/lvmdbusd.8* %endif %files resource-agents %defattr(644,root,root,755) %dir %{_prefix}/lib/ocf/resource.d/lvm2 %attr(755,root,root) %{_prefix}/lib/ocf/resource.d/lvm2/VolumeGroup %if %{with python2} %files -n python-lvm %defattr(644,root,root,755) #%attr(755,root,root) %{py_sitedir}/lvm.so #%{py_sitedir}/lvm-%{version}_*-py*.egg-info %endif %if %{with python3} %files -n python3-lvm %defattr(644,root,root,755) #%attr(755,root,root) %{py3_sitedir}/lvm.cpython-*.so #%{py3_sitedir}/lvm-%{version}_*-py*.egg-info %endif %files -n device-mapper %defattr(644,root,root,755) %doc *_DM /lib/udev/rules.d/10-dm.rules /lib/udev/rules.d/11-dm-lvm.rules /lib/udev/rules.d/13-dm-disk.rules /lib/udev/rules.d/95-dm-notify.rules %attr(755,root,root) %{_sbindir}/dmeventd %attr(755,root,root) %{_sbindir}/dmsetup %attr(755,root,root) %{_sbindir}/dmstats %attr(755,root,root) %{_libdir}/libdevmapper-event-lvm2mirror.so %attr(755,root,root) %{_libdir}/libdevmapper-event-lvm2raid.so %attr(755,root,root) %{_libdir}/libdevmapper-event-lvm2snapshot.so %attr(755,root,root) %{_libdir}/libdevmapper-event-lvm2thin.so %attr(755,root,root) %{_libdir}/libdevmapper-event-lvm2vdo.so %dir %{_libdir}/device-mapper %attr(755,root,root) %{_libdir}/device-mapper/libdevmapper-event-lvm2mirror.so %attr(755,root,root) %{_libdir}/device-mapper/libdevmapper-event-lvm2raid.so %attr(755,root,root) %{_libdir}/device-mapper/libdevmapper-event-lvm2snapshot.so %attr(755,root,root) %{_libdir}/device-mapper/libdevmapper-event-lvm2thin.so %attr(755,root,root) %{_libdir}/device-mapper/libdevmapper-event-lvm2vdo.so %{_mandir}/man8/dmsetup.8* %{_mandir}/man8/dmstats.8* %{_mandir}/man8/dmeventd.8* %files -n device-mapper-libs %defattr(644,root,root,755) %attr(755,root,root) /%{_lib}/libdevmapper.so.*.* %attr(755,root,root) /%{_lib}/libdevmapper-event.so.*.* %attr(755,root,root) /%{_lib}/libdevmapper-event-lvm2.so.*.* %attr(755,root,root) /%{_lib}/liblvm2cmd.so.*.* %files -n device-mapper-devel %defattr(644,root,root,755) %attr(755,root,root) %{_libdir}/libdevmapper.so %attr(755,root,root) %{_libdir}/libdevmapper-event.so %attr(755,root,root) %{_libdir}/libdevmapper-event-lvm2.so %attr(755,root,root) %{_libdir}/liblvm2cmd.so %{_includedir}/libdevmapper.h %{_includedir}/libdevmapper-event.h %{_includedir}/lvm2cmd.h %{_pkgconfigdir}/devmapper.pc %{_pkgconfigdir}/devmapper-event.pc %files -n device-mapper-static %defattr(644,root,root,755) %{_libdir}/libdevmapper.a