]> git.pld-linux.org Git - packages/lvm2.git/blobdiff - lvm2.spec
- disable initrd package
[packages/lvm2.git] / lvm2.spec
index 6a325d67f7bced48dbee65ea91e852e418a2d44b..214522f7b344383f3d48623df46378fc0b312722 100644 (file)
--- a/lvm2.spec
+++ b/lvm2.spec
@@ -1,13 +1,14 @@
 # TODO
 # - vgscan --ignorelocking failure creates /var/lock/lvm (even if /var is not yet mounted)
+# - --with-replicators (=internal/shared/none, default is none)?
 #
 # Conditional build:
-%bcond_without initrd          # don't build initrd version
-%bcond_with    uClibc                  # link initrd version with uClibc
-%bcond_without dietlibc        # link initrd version with dietlibc
-%bcond_with    glibc                   # link initrd version with static GLIBC
-%bcond_without clvmd           # don't build clvmd
-%bcond_with    clvmd3                  # build clvmd for 3rd generation of cluster
+%bcond_with    initrd          # don't build initrd version
+%bcond_without uClibc          # link initrd version with uClibc
+%bcond_with    dietlibc        # link initrd version with dietlibc
+%bcond_with    glibc           # link initrd version with static GLIBC
+%bcond_without  cluster                # disable all cluster support (clvmd&cmirrord)
+%bcond_without lvmetad         # disable lvmetad
 %bcond_without selinux         # disable SELinux
 
 %ifarch sparc64 sparc
 %define                with_glibc      1
 %endif
 
-%if %{with clvmd3}
-%undefine      with_clvmd
-%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.02.80
-Release:       1
-License:       GPL v2
+Version:       2.02.104
+Release:       2
+License:       GPL v2 and LGPL v2.1
 Group:         Applications/System
 Source0:       ftp://sources.redhat.com/pub/lvm2/LVM2.%{version}.tgz
-# Source0-md5: fdcd2103bad739a91427f93f3acd6644
-Source1:       %{name}-initramfs-hook
-Source2:       %{name}-initramfs-local-top
+# Source0-md5: 3d82cdb63259b4386c0cc308b4e1f221
+Source1:       %{name}-tmpfiles.conf
+Source2:       clvmd.service
+Source3:       clvmd.sysconfig
 Patch0:                %{name}-selinux.patch
 Patch1:                %{name}-diet.patch
 Patch2:                device-mapper-dmsetup-export.patch
-Patch3:                %{name}-clvmd_init.patch
+Patch3:                %{name}-pld_init.patch
 Patch4:                dl-dlsym.patch
+Patch5:                %{name}-wrapper.patch
+Patch6:                %{name}-lvm_path.patch
+Patch7:                %{name}-sd_notify.patch
+Patch8:                %{name}-clvmd_cmd_timeout.patch
+Patch9:                device-mapper-dmsetup-deps-export.patch
 URL:           http://sources.redhat.com/lvm2/
-BuildRequires: autoconf
+BuildRequires: autoconf >= 2.61
 BuildRequires: automake
 %{?with_selinux:BuildRequires: libselinux-devel >= 1.10}
 %{?with_selinux:BuildRequires: libsepol-devel}
+BuildRequires: ncurses-devel
 BuildRequires: pkgconfig
-BuildRequires: rpmbuild(macros) >= 1.213
+BuildRequires: readline-devel
+BuildRequires: rpmbuild(macros) >= 1.647
+BuildRequires: udev-devel >= 1:143
 %if %{with initrd}
 %if %{with dietlibc}
 BuildRequires: dietlibc-static >= 2:0.32-7
@@ -68,29 +74,20 @@ BuildConflicts:     device-mapper-dietlibc
 %{?with_glibc:BuildRequires:   glibc-static}
 %{?with_uClibc:BuildRequires:  uClibc-static >= 2:0.9.29}
 %endif
-%if %{with clvmd}
-BuildRequires: cman-devel >= 1.0
-BuildRequires: dlm-devel >= 1.0-0.pre21.2
-%endif
-%if %{with clvmd3}
-BuildRequires: cluster-cman-devel
-BuildRequires: cluster-dlm-devel
+%if %{with cluster}
+BuildRequires: corosync-devel
+BuildRequires: dlm-devel >= 3.99.5
+BuildRequires: systemd-devel
 %endif
-BuildRequires: ncurses-devel
-BuildRequires: readline-devel
+Requires(post,preun,postun):   systemd-units >= 38
+Requires(post,postun): /sbin/chkconfig
 Requires:      device-mapper >= %{version}-%{release}
-%if %{with clvmd}
-Requires:      cman-libs >= 1.0
-Requires:      dlm >= 1.0-0.pre21.2
-%endif
-%if %{with clvmd3}
-Requires:      cluster-cman-libs
-Requires:      cluster-dlm
-%endif
 %{?with_selinux:Requires:      libselinux >= 1.10}
+Requires:      systemd-units >= 38
 # doesn't work with 2.4 kernels
 Requires:      uname(release) >= 2.6
 Obsoletes:     lvm
+Obsoletes:     lvm2-systemd
 BuildRoot:     %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
 %define                _sbindir        /sbin
@@ -102,6 +99,9 @@ BuildRoot:   %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 # borken on AC
 %define                filterout_ld    -Wl,--as-needed
 
+# causes: undefined reference to `__stack_chk_fail_local'
+%define                filterout_c     -fstack-protector
+
 # for some reason known only to rpm there must be "\\|" not "\|" here
 %define                dietarch        %(echo %{_target_cpu} | sed -e 's/i.86\\|pentium.\\|athlon/i386/;s/amd64/x86_64/;s/armv.*/arm/')
 %define                dietlibdir      %{_prefix}/lib/dietlibc/lib-%{dietarch}
@@ -131,10 +131,56 @@ Pakiet ten zawiera narzędzia do tworzenia, sprawdzania i naprawiania
 logicznych wolumenów dyskowych (LVM2) - statycznie skonsolidowane na
 potrzeby initrd.
 
+%package clvmd
+Summary:       Cluster LVM daemon
+Summary(pl.UTF-8):     Demon clustra LVM
+Group:         Applications/System
+Requires:      %{name} = %{version}-%{release}
+
+%description clvmd
+clvmd is the daemon that distributes LVM metadata updates around a
+cluster. It must be running on all nodes in the cluster and will give
+an error if a node in the cluster does not have this daemon running.
+
+%description clvmd -l pl.UTF-8
+clvmd to demon który rozprowadza zmiany meta-danych LVM po klastrze.
+Mysi działać na wszystkich węzłach klastra i zgłosi błąd gdy jakiś
+węzeł w klastrze nie ma tego demona uruchomionego.
+
+%package cmirrord
+Summary:       Cluster mirror log daemon
+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.
+
+%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 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:      systemd-units >= 38
 
 %description -n device-mapper
 The goal of this driver is to support volume management. The driver
@@ -221,21 +267,6 @@ narzędzia do zarządzania logicznymi wolumenami.
 Ten pakiet zawiera program dmsetup skonsolidowany statycznie na
 potrzeby initrd.
 
-%package initramfs
-Summary:       The new version of Logical Volume Manager for Linux - support scripts for initramfs-tools
-Summary(pl.UTF-8):     Nowa wersja Logical Volume Managera dla Linuksa - skrypty dla initramfs-tools
-Group:         Base
-Requires:      %{name} = %{version}-%{release}
-Requires:      initramfs-tools
-
-%description initramfs
-The new version of Logical Volume Manager for Linux - support scripts
-for initramfs-tools.
-
-%description initramfs -l pl.UTF-8
-Nowa wersja Logical Volume Managera dla Linuksa - skrypty dla
-initramfs-tools.
-
 %prep
 %setup -q -n LVM2.%{version}
 %{?with_selinux:%patch0 -p1}
@@ -243,6 +274,11 @@ initramfs-tools.
 %patch2 -p1
 %patch3 -p1
 %patch4 -p1
+%patch5 -p1
+%patch6 -p1
+%patch7 -p1
+%patch8 -p1
+%patch9 -p1
 
 # do not force --export-symbol linker option for e.g. statically linked executables
 # -rdynamic compiler option drives linker in the right way.
@@ -259,18 +295,18 @@ cp -f /usr/share/automake/config.sub autoconf
 %if %{with initrd}
 %{?with_glibc:export CC="%{__cc}"}
 %{?with_uClibc:export CC="%{_target_cpu}-uclibc-gcc"}
-%{?with_dietlibc:export CC="diet %{__cc}"}
+%{?with_dietlibc:cc="%{__cc}"; export CC="diet ${cc#ccache }"}
 
 %configure \
        ac_cv_lib_dl_dlopen=no \
+       %{?with_uClibc:ac_cv_func_siginterrupt=no} \
        %{?debug:--enable-debug} \
-       --with-optimisation="%{rpmcflags} -Os" \
+       --disable-nls \
+       --disable-readline \
+       --enable-selinux%{!?with_glibc:=no} \
        --enable-static_link \
        --with-lvm1=internal \
-       --disable-selinux \
-       --%{?with_glibc:en}%{!?with_glibc:dis}able-selinux \
-       --disable-readline \
-       --disable-nls
+       --with-optimisation="%{rpmcflags} -Os"
 # glibc version links with normal static libdevicemapper which has selinux enabled
 # and we need to keep these in sync between device-mapper and lvm2
 
@@ -280,9 +316,21 @@ cp -f /usr/share/automake/config.sub autoconf
 %{__make} -j1 -C include
 %{__make} -j1 -C lib LIB_SHARED= VERSIONED_SHLIB=
 %{__make} -j1 -C libdm LIB_SHARED= VERSIONED_SHLIB=
+%{__make} -j1 -C libdaemon/client LIB_SHARED= VERSIONED_SHLIB=
 %{__make} -j1 -C tools dmsetup.static lvm.static %{?with_dietlibc:DIETLIBC_LIBS="-lcompat"}
 mv -f tools/lvm.static initrd-lvm
 mv -f tools/dmsetup.static initrd-dmsetup
+
+# check if tools works
+for tool in initrd-lvm initrd-dmsetup; do
+       LVM_SYSTEM_DIR=$(pwd) ./$tool help && rc=$? || rc=$?
+       if [ $rc -gt 127 ]; then
+               echo >&2 "Unexpected failure (exit status: $rc) from $tool. Does this tool work?!"
+               exit 1
+       fi
+done
+
+
 %{?with_dietlibc:mv -f libdm/ioctl/libdevmapper.a diet-libdevmapper.a}
 %{__make} clean
 
@@ -290,36 +338,59 @@ unset CC
 %endif
 
 %configure \
-       --with-usrlibdir=%{_libdir} \
-       %{?debug:--enable-debug} \
-       --with-optimisation="%{rpmcflags}" \
-       --enable-readline \
-       --enable-fsadm \
+       --enable-applib \
        --enable-cmdlib \
+       %{?debug:--enable-debug} \
        --enable-dmeventd \
+       --enable-fsadm \
+       %{?with_lvmetad:--enable-lvmetad} \
+       --enable-ocf \
+       --enable-readline \
+       %{!?with_selinux:--disable-selinux} \
        --enable-pkgconfig \
-       %{?with_clvmd:--with-clvmd=cman} \
+       --enable-udev_sync \
+       --enable-udev_rules \
+       --with-cluster=internal \
+%if %{with cluster}
+       --with-clvmd=corosync \
+       --enable-cmirrord \
+%endif
+       --with-dmeventd-path=%{_sbindir}/dmeventd \
+       --with-interface=ioctl \
        --with-lvm1=internal \
+       --with-mirrors=internal \
+       --with-optimisation="%{rpmcflags}" \
        --with-pool=internal \
-       --with-cluster=internal \
        --with-snapshots=internal \
-       --with-mirrors=internal \
-       --with-interface=ioctl \
-       %{!?with_selinux:--disable-selinux}
+       --with-systemdsystemunitdir=%{systemdunitdir} \
+       --with-thin=internal \
+       --with-thin-check=%{_sbindir}/thin_check \
+       --with-thin-dump=%{_sbindir}/thin_dump \
+       --with-thin-repair=%{_sbindir}/thin_repair \
+       --with-udev-prefix=/ \
+       --with-usrlibdir=%{_libdir}
+
 %{__make} -j1
 %{__make} -j1 -C libdm LIB_STATIC=libdevmapper.a
 
 %install
 rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT{/%{_lib},%{_sysconfdir}/lvm} \
-       $RPM_BUILD_ROOT%{_datadir}/initramfs-tools/{hooks,scripts/local-top}
+install -d $RPM_BUILD_ROOT{/%{_lib},%{_sysconfdir}/lvm,/etc/sysconfig}
 %{?with_dietlibc:install -d $RPM_BUILD_ROOT%{dietlibdir}}
 
-%{__make} install \
+%{__make} install install_system_dirs install_systemd_units install_initscripts \
        DESTDIR=$RPM_BUILD_ROOT \
        OWNER="" \
        GROUP=""
 
+install -d $RPM_BUILD_ROOT%{_sysconfdir}/tmpfiles.d
+install %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/tmpfiles.d/%{name}.conf
+
+%if %{with cluster}
+install %{SOURCE2} $RPM_BUILD_ROOT%{systemdunitdir}/clvmd.service
+install %{SOURCE3} $RPM_BUILD_ROOT/etc/sysconfig/clvmd
+%endif
+
 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")
@@ -337,53 +408,158 @@ install -p initrd-dmsetup $RPM_BUILD_ROOT%{_libdir}/initrd/dmsetup
 %{?with_dietlibc:cp -a diet-libdevmapper.a $RPM_BUILD_ROOT%{dietlibdir}/libdevmapper.a}
 %endif
 
-install -p %{SOURCE1} $RPM_BUILD_ROOT%{_datadir}/initramfs-tools/hooks/lvm2
-install -p %{SOURCE2} $RPM_BUILD_ROOT%{_datadir}/initramfs-tools/scripts/local-top/lvm2
-
 cp -a libdm/libdevmapper.a $RPM_BUILD_ROOT%{_libdir}
 
 %clean
 rm -rf $RPM_BUILD_ROOT
 
-%post   -n device-mapper -p /sbin/ldconfig
-%postun -n device-mapper -p /sbin/ldconfig
+%post
+/sbin/chkconfig --add lvm2-monitor
+%service lvm2-monitor restart
+%systemd_post lvm2-monitor.service
+/sbin/chkconfig --add blk-availability
+# no service blk-availability restart
+%systemd_post blk-availability.service
+
+%preun
+%systemd_preun lvm2-monitor.service
+%systemd_preun blk-availability.service
+
+%postun
+if [ "$1" = "0" ]; then
+       %service lvm2-monitor stop
+       /sbin/chkconfig --del lvm2-monitor
+       #no service blk-availability stop
+       /sbin/chkconfig --del blk-availability
+fi
+%systemd_reload
+
+%triggerpostun -- %{name} < 2.02.94-1
+%systemd_trigger lvm2-monitor.service
+
+%post -n device-mapper
+/sbin/ldconfig
+%systemd_post dm-event.socket
+
+%preun -n device-mapper
+%systemd_preun dm-event.socket dm-event.service
+
+%postun -n device-mapper
+/sbin/ldconfig
+%systemd_reload
+
+%triggerpostun -n device-mapper -- device-mapper < 2.02.94-1
+%systemd_trigger dm-event.socket
+
+%post clvmd
+/sbin/chkconfig --add clvmd
+# no service restart - it breaks current locks!
+export NORESTART=1
+%systemd_post clvmd.service
+# re-exec instead
+/usr/sbin/clvmd -S 2>/dev/null || :
+
+%preun clvmd
+%systemd_preun clvmd.service
+
+%postun clvmd
+if [ "$1" = "0" ]; then
+       %service clvmd stop
+       /sbin/chkconfig --del clvmd
+fi
+%systemd_reload
 
 %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}/lv*
 %attr(755,root,root) %{_sbindir}/pv*
 %attr(755,root,root) %{_sbindir}/vg*
-%{?with_clvmd:%attr(755,root,root) %{_usrsbindir}/clvmd}
 %{_mandir}/man5/lvm.conf.5*
-%{?with_clvmd:%{_mandir}/man8/clvmd.8*}
+%{_mandir}/man8/blkdeactivate.8*
 %{_mandir}/man8/fsadm.8*
 %{_mandir}/man8/lv*.8*
 %{_mandir}/man8/pv*.8*
 %{_mandir}/man8/vg*.8*
 %attr(750,root,root) %dir %{_sysconfdir}/lvm
 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lvm/lvm.conf
+%attr(750,root,root) %dir %{_sysconfdir}/lvm/profile
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lvm/profile/default.profile
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lvm/profile/thin-performance.profile
+%if %{with lvmetad}
+/lib/udev/rules.d/69-dm-lvm-metad.rules
+%endif
+%{_sysconfdir}/tmpfiles.d/lvm2.conf
+%{systemdunitdir}/blk-availability.service
+%if %{with lvmetad}
+%{systemdunitdir}/lvm2-lvmetad.service
+%{systemdunitdir}/lvm2-lvmetad.socket
+%endif
+%{systemdunitdir}/lvm2-monitor.service
+%{systemdunitdir}/lvm2-pvscan@.service
+%dir %{_sysconfdir}/lvm/cache
+%ghost %{_sysconfdir}/lvm/cache/.cache
+%attr(754,root,root) /etc/rc.d/init.d/blk-availability
+%if %{with lvmetad}
+%attr(754,root,root) /etc/rc.d/init.d/lvm2-lvmetad
+%endif
+%attr(754,root,root) /etc/rc.d/init.d/lvm2-monitor
+%dir %attr(700,root,root) /var/run/lvm
+
+%if %{with cluster}
+%files clvmd
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_usrsbindir}/clvmd
+%attr(754,root,root) /etc/rc.d/init.d/clvmd
+%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/clvmd
+%{systemdunitdir}/clvmd.service
+%{_mandir}/man8/clvmd.8*
+
+%files cmirrord
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_usrsbindir}/cmirrord
+%{_mandir}/man8/cmirrord.8*
+%attr(754,root,root) /etc/rc.d/init.d/cmirrord
+%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
 
 %files -n device-mapper
 %defattr(644,root,root,755)
 %doc *_DM
+%{systemdunitdir}/dm-event.service
+%{systemdunitdir}/dm-event.socket
+/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) /%{_lib}/libdevmapper*.so.*.*
+%attr(755,root,root) /%{_lib}/liblvm2app.so.*.*
 %attr(755,root,root) /%{_lib}/liblvm2cmd.so.*.*
 %dir %{_libdir}/device-mapper
 %attr(755,root,root) %{_libdir}/device-mapper/*.so
+%attr(755,root,root) %{_libdir}/libdevmapper-event-*.so
 %{_mandir}/man8/dmsetup.8*
 %{_mandir}/man8/dmeventd.8*
 
 %files -n device-mapper-devel
 %defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/libdevmapper*.so
+%attr(755,root,root) %{_libdir}/libdevmapper.so
+%attr(755,root,root) %{_libdir}/libdevmapper-event.so
+%attr(755,root,root) %{_libdir}/liblvm2app.so
 %attr(755,root,root) %{_libdir}/liblvm2cmd.so
 %{_includedir}/libdevmapper*.h
+%{_includedir}/lvm2app.h
 %{_includedir}/lvm2cmd.h
 %{_pkgconfigdir}/devmapper*.pc
+%{_pkgconfigdir}/lvm2app.pc
 
 %files -n device-mapper-static
 %defattr(644,root,root,755)
@@ -404,8 +580,3 @@ rm -rf $RPM_BUILD_ROOT
 %defattr(644,root,root,755)
 %attr(755,root,root) %{_libdir}/initrd/lvm
 %endif
-
-%files initramfs
-%defattr(644,root,root,755)
-%attr(755,root,root) %{_datadir}/initramfs-tools/hooks/lvm2
-%attr(755,root,root) %{_datadir}/initramfs-tools/scripts/local-top/lvm2
This page took 1.454681 seconds and 4 git commands to generate.