]> TLD Linux GIT Repositories - packages/lvm2.git/blobdiff - lvm2.spec
- fix conditional
[packages/lvm2.git] / lvm2.spec
index 34e7a737eaf63bea855c9669aa16cd41dca822d9..4926c592effd8f1da9bc4de79a7d57dbeffa9982 100644 (file)
--- a/lvm2.spec
+++ b/lvm2.spec
@@ -1,93 +1,67 @@
 # TODO
 # - vgscan --ignorelocking failure creates /var/lock/lvm (even if /var is not yet mounted)
 # TODO
 # - vgscan --ignorelocking failure creates /var/lock/lvm (even if /var is not yet mounted)
-# - --with-replicators (=internal/shared/none, default is none)?
+# - internal vs shared for snapshots,mirrors,thin,cache ?
+#   note: dmeventd requires mirrors=internal)
 #
 # Conditional build:
 #
 # Conditional build:
-%bcond_with    initrd          # 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 (and lvmlockd)
-%bcond_without lvmpolld        # disable lvmpolld (and lvmlockd)
-%bcond_without lvmlockd        # disable lvmlockd
+# - functionality
+%bcond_without cluster         # disable all cluster support (cmirrord, dlm support in lvmlockd)
+%bcond_without lvmdbusd        # lvmdbusd
+%bcond_without lvmpolld        # lvmpolld (and lvmlockd)
+%bcond_without lvmlockd        # lvmlockd
 %bcond_with    sanlock         # sanlock support in lvmlockd
 %bcond_with    sanlock         # sanlock support in lvmlockd
-%bcond_with    replicator      # internal replicator support
+# - additional features
 %bcond_without selinux         # SELinux support
 %bcond_without selinux         # SELinux support
-%bcond_without python2         # Python 2.x binding
-%bcond_without python3         # Python 3.x binding
-
-# lvmlockd requires lvmetad and lvmpolld
-%if %{without lvmetad} || %{without lvmpolld}
-%undefine      with_lvmpolld
-%endif
-
-# if one of the *libc is enabled disable default dietlibc
-%if %{with dietlibc} && %{with uClibc}
-%undefine      with_dietlibc
-%endif
-
-# with glibc disables default dietlibc
-%if %{with glibc} && %{with dietlibc}
-%undefine      with_dietlibc
+# - bindings
+%bcond_without python          # Python bindings
+%bcond_without python2         # Python 2 binding
+%bcond_without python3         # Python 3 binding and lvmdbusd
+
+# lvmlockd requires lvmpolld
+%if %{without lvmpolld}
+%undefine      with_lvmlockd
 %endif
 
 %endif
 
-# fallback is glibc if neither alternatives are enabled
-%if %{without dietlibc} && %{without uClibc}
-%define                with_glibc      1
+%if %{without cluster} && %{without sanlock}
+%undefine      with_lvmlockd
 %endif
 
 Summary:       The new version of Logical Volume Manager for Linux
 Summary(pl.UTF-8):     Nowa wersja Logical Volume Managera dla Linuksa
 Name:          lvm2
 %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.164
+Version:       2.03.23
 Release:       1
 License:       GPL v2 and LGPL v2.1
 Group:         Applications/System
 Release:       1
 License:       GPL v2 and LGPL v2.1
 Group:         Applications/System
-Source0:       ftp://sources.redhat.com/pub/lvm2/LVM2.%{version}.tgz
-# Source0-md5: 839702f282977b3cc2e6ddc5ef9d9907
-Source1:       clvmd.sysconfig
+Source0:       ftp://sourceware.org/pub/lvm2/LVM2.%{version}.tgz
+# Source0-md5: 0535b5e638b6f0b48f7b259e0ec0ba65
 Patch0:                %{name}-selinux.patch
 Patch0:                %{name}-selinux.patch
-Patch1:                %{name}-diet.patch
-Patch2:                device-mapper-dmsetup-export.patch
-Patch3:                %{name}-tld_init.patch
-Patch4:                dl-dlsym.patch
-Patch6:                %{name}-lvm_path.patch
-Patch7:                %{name}-clvmd_cmd_timeout.patch
-Patch8:                device-mapper-dmsetup-deps-export.patch
-Patch9:                %{name}-run-dir.patch
+Patch1:                device-mapper-dmsetup-export.patch
+Patch2:                %{name}-tld_init.patch
+Patch3:                %{name}-run-dir.patch
+Patch4:                %{name}-thin.patch
+Patch5:                link.patch
 URL:           http://www.sourceware.org/lvm2/
 URL:           http://www.sourceware.org/lvm2/
-BuildRequires: autoconf >= 2.61
+BuildRequires: autoconf >= 2.69
+BuildRequires: autoconf-archive
 BuildRequires: automake
 # for /run detection
 BuildRequires: automake
 # for /run detection
-BuildRequires: autoconf-archive
 BuildRequires: filesystem >= 3.0-43
 BuildRequires: filesystem >= 3.0-43
+BuildRequires: libaio-devel
 BuildRequires: libblkid-devel >= 2.24
 %{?with_selinux:BuildRequires: libselinux-devel >= 1.10}
 %{?with_selinux:BuildRequires: libsepol-devel}
 BuildRequires: ncurses-devel
 BuildRequires: pkgconfig
 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 >= 1:2.6}
-%if %{with python3}
+%if %{with lvmdbusd}
+BuildRequires: python3-dbus
 BuildRequires: python3-devel >= 1:3.2
 BuildRequires: python3-devel >= 1:3.2
-BuildRequires: python3-modules >= 1:3.2
+BuildRequires: python3-pyudev
 %endif
 BuildRequires: readline-devel
 BuildRequires: rpmbuild(macros) >= 1.647
 %endif
 BuildRequires: readline-devel
 BuildRequires: rpmbuild(macros) >= 1.647
-%{?with_sanlock:BuildRequires: sanlock-devel >= 3.2.4}
+%{?with_sanlock:BuildRequires: sanlock-devel >= 3.3.0}
 BuildRequires: udev-devel >= 1:176
 BuildRequires: udev-devel >= 1:176
-%if %{with initrd}
-%if %{with dietlibc}
-BuildRequires: dietlibc-static >= 2:0.32-7
-BuildConflicts:        device-mapper-dietlibc
-%endif
-%if %{with glibc}
-%{?with_selinux:BuildRequires: libselinux-static}
-%{?with_selinux:BuildRequires: libsepol-static}
-%endif
-%{?with_glibc:BuildRequires:   glibc-static}
-%{?with_uClibc:BuildRequires:  uClibc-static >= 2:0.9.29}
-%endif
 %if %{with cluster}
 BuildRequires: corosync-devel
 BuildRequires: dlm-devel >= 3.99.5
 %if %{with cluster}
 BuildRequires: corosync-devel
 BuildRequires: dlm-devel >= 3.99.5
@@ -97,9 +71,10 @@ Requires:    device-mapper >= %{version}-%{release}
 %{?with_selinux:Requires:      libselinux >= 1.10}
 # doesn't work with 2.4 kernels
 Requires:      uname(release) >= 2.6
 %{?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-systemd
+Suggests:      thin-provisioning-tools >= 0.7.0
+Obsoletes:     lvm < 2
+Obsoletes:     lvm2-clvmd < 2.03
+Obsoletes:     lvm2-systemd < 2.02.94
 BuildRoot:     %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
 %define                _sbindir        /sbin
 BuildRoot:     %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
 %define                _sbindir        /sbin
@@ -108,17 +83,10 @@ BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 # changing CFLAGS in the middle confuses confcache
 %undefine      configure_cache
 
 # 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
 
 # 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}
-
-%define                skip_post_check_so      '.*libdevmapper-event-lvm2.so.*'
+%define                skip_post_check_so      '.*libdevmapper-event-lvm2.so.*' 'liblvm2cmd.so.*'
 
 %description
 This package includes a number of utilities for creating, checking,
 
 %description
 This package includes a number of utilities for creating, checking,
@@ -128,37 +96,6 @@ and repairing logical volumes.
 Pakiet ten zawiera narzędzia do tworzenia, sprawdzania i naprawiania
 logicznych wolumenów dyskowych (LVM2).
 
 Pakiet ten zawiera narzędzia do tworzenia, sprawdzania i naprawiania
 logicznych wolumenów dyskowych (LVM2).
 
-%package initrd
-Summary:       The new version of Logical Volume Manager for Linux - initrd version
-Summary(pl.UTF-8):     Nowa wersja Logical Volume Managera dla Linuksa - wersja dla initrd
-Group:         Base
-Conflicts:     geninitrd < 10000.18
-
-%description initrd
-This package includes a number of utilities for creating, checking,
-and repairing logical volumes - staticaly linked for initrd.
-
-%description initrd -l pl.UTF-8
-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
 Summary(pl.UTF-8):     Demon śledzący log lustrzany w klastrze
 %package cmirrord
 Summary:       Cluster mirror log daemon
 Summary(pl.UTF-8):     Demon śledzący log lustrzany w klastrze
@@ -175,7 +112,7 @@ 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.
 
 Cluster MANager (CMAN), which must be set up and running in order for
 cmirrord to function.
 
-%description cmirrord
+%description cmirrord -l pl.UTF-8
 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
 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
@@ -185,6 +122,37 @@ Ten demon polega na infrastrukturze klastra dostarczanej przez CMAN
 (Cluster MANager), który musi być skonfigurowany i działający, aby
 działał cmirrord.
 
 (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
 %package resource-agents
 Summary:       OCF Resource Agents for LVM2 processes
 Summary(pl.UTF-8):     Agenci OCF do monitorowania procesów LVM2
@@ -198,30 +166,6 @@ OCF Resource Agents for LVM2 processes.
 %description resource-agents -l pl.UTF-8
 Agenci OCF do monitorowania procesów LVM2.
 
 %description resource-agents -l pl.UTF-8
 Agenci OCF do monitorowania procesów LVM2.
 
-%package -n python-lvm
-Summary:       Python interface to LVM2
-Summary(pl.UTF-8):     Interfejs Pythona do LVM2
-Group:         Libraries/Python
-Requires:      device-mapper-libs = %{version}-%{release}
-
-%description -n python-lvm
-Python interface to LVM2.
-
-%description -n python-lvm -l pl.UTF-8
-Interfejs Pythona do LVM2.
-
-%package -n python3-lvm
-Summary:       Python interface to LVM2
-Summary(pl.UTF-8):     Interfejs Pythona do LVM2
-Group:         Libraries/Python
-Requires:      device-mapper-libs = %{version}-%{release}
-
-%description -n python3-lvm
-Python interface to LVM2.
-
-%description -n python3-lvm -l pl.UTF-8
-Interfejs Pythona 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
 %package -n device-mapper
 Summary:       Userspace support for the device-mapper
 Summary(pl.UTF-8):     Wsparcie dla mapowania urządzeń w przestrzeni użytkownika
@@ -248,9 +192,11 @@ narzędzia do zarządzania logicznymi wolumenami.
 Summary:       Device-mapper shared libraries
 Summary(pl.UTF-8):     Biblioteki współdzielone device-mappera
 Group:         Libraries
 Summary:       Device-mapper shared libraries
 Summary(pl.UTF-8):     Biblioteki współdzielone device-mappera
 Group:         Libraries
-Conflicts:     device-mapper < 2.02.119-1
 Requires:      libblkid >= 2.24
 Requires:      udev-libs >= 1:176
 Requires:      libblkid >= 2.24
 Requires:      udev-libs >= 1:176
+Obsoletes:     python-lvm < 2.03
+Obsoletes:     python3-lvm < 2.03
+Conflicts:     device-mapper < 2.02.119-1
 
 %description -n device-mapper-libs
 Device-mapper shared libraries.
 
 %description -n device-mapper-libs
 Device-mapper shared libraries.
@@ -302,34 +248,6 @@ Static devmapper library built with dietlibc.
 %description -n device-mapper-dietlibc -l pl.UTF-8
 Statyczna biblioteka devmapper zbudowana z dietlibc.
 
 %description -n device-mapper-dietlibc -l pl.UTF-8
 Statyczna biblioteka devmapper zbudowana z dietlibc.
 
-%package -n device-mapper-initrd
-Summary:       Userspace support for the device-mapper - initrd version
-Summary(pl.UTF-8):     Wsparcie dla mapowania urządzeń w przestrzeni użytkownika - wersja dla initrd
-Group:         Base
-Obsoletes:     device-mapper-initrd-devel
-Conflicts:     geninitrd < 10000.10
-
-%description -n device-mapper-initrd
-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.
-
-This package contains dmsetup program linked staticaly for use in
-initrd.
-
-%description -n device-mapper-initrd -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.
-
-Ten pakiet zawiera program dmsetup skonsolidowany statycznie na
-potrzeby initrd.
-
 %prep
 %setup -q -n LVM2.%{version}
 %{?with_selinux:%patch0 -p1}
 %prep
 %setup -q -n LVM2.%{version}
 %{?with_selinux:%patch0 -p1}
@@ -337,103 +255,48 @@ potrzeby initrd.
 %patch2 -p1
 %patch3 -p1
 %patch4 -p1
 %patch2 -p1
 %patch3 -p1
 %patch4 -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.
-%{__sed} -i -e 's#-Wl,--export-dynamic#-rdynamic#g' configure.in
+%patch5 -p1
 
 %build
 
 %build
-%if %{with initrd}
-echo Using %{?with_glibc:GLIBC} %{?with_uClibc:uClibc} %{?with_dietlibc:diet} for initrd
-%endif
-cp -f /usr/share/automake/config.sub autoconf
 %{__aclocal}
 %{__autoconf}
 
 %{__aclocal}
 %{__autoconf}
 
-%if %{with initrd}
-%{?with_glibc:export CC="%{__cc}"}
-%{?with_uClibc:export CC="%{_target_cpu}-uclibc-gcc"}
-%{?with_dietlibc:cc="%{__cc}"; export CC="diet ${cc#ccache }"}
-
 %configure \
 %configure \
-       ac_cv_lib_dl_dlopen=no \
-       %{?with_uClibc:ac_cv_func_siginterrupt=no} \
-       %{?debug:--enable-debug} \
-       --disable-nls \
-       --disable-readline \
-       --enable-selinux%{!?with_glibc:=no} \
-       --enable-static_link \
-       --with-lvm1=internal \
-       --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
-
-%{__sed} -i -e 's#rpl_malloc#malloc#g' lib/misc/configure.h
-%{__sed} -i -e 's#rpl_realloc#realloc#g' lib/misc/configure.h
-
-%{__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
-
-unset CC
-%endif
-
-%configure \
-       --enable-applib \
+       --enable-cache_check_needs_check \
        --enable-cmdlib \
        --enable-cmdlib \
+%if %{with cluster}
+       --enable-cmirrord \
+%endif
+       %{?with_lvmdbusd:--enable-dbus-service} \
        %{?debug:--enable-debug} \
        --enable-dmeventd \
        %{?debug:--enable-debug} \
        --enable-dmeventd \
+       --enable-dmfilemapd \
        --enable-fsadm \
 %if %{with lvmlockd}
        --enable-fsadm \
 %if %{with lvmlockd}
-       %{?with_cluster:--enable-lockd-dlm} \
-       %{?with_sanlock:--enable-lockd-sanlock} \
+       %{?with_cluster:--enable-lvmlockd-dlm} \
+       %{?with_sanlock:--enable-lvmlockd-sanlock} \
 %endif
 %endif
-       %{?with_lvmetad:--enable-lvmetad} \
+       --enable-lvmpolld \
        --enable-ocf \
        --enable-ocf \
-       %{?with_python2:--enable-python2-bindings} \
-       %{?with_python3:--enable-python3-bindings} \
+       --enable-pkgconfig \
        --enable-readline \
        %{!?with_selinux:--disable-selinux} \
        --enable-readline \
        %{!?with_selinux:--disable-selinux} \
-       --enable-pkgconfig \
+       --disable-silent-rules \
+       --enable-thin_check_needs_check \
        --enable-udev_sync \
        --enable-udev_rules \
        --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-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}
-       --with-clvmd=corosync \
-       --enable-cmirrord \
-%endif
+       --with-default-locking-dir=/var/lock/lvm \
        --with-dmeventd-path=%{_sbindir}/dmeventd \
        --with-interface=ioctl \
        --with-dmeventd-path=%{_sbindir}/dmeventd \
        --with-interface=ioctl \
-       --with-lvm1=internal \
+       --with-libexecdir=%{_libexecdir} \
        --with-mirrors=internal \
        --with-optimisation="%{rpmcflags}" \
        --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-snapshots=internal \
        --with-thin=internal \
        --with-thin-check=/usr/sbin/thin_check \
@@ -441,29 +304,32 @@ unset CC
        --with-thin-repair=/usr/sbin/thin_repair \
        --with-thin-restore=/usr/sbin/thin_restore \
        --with-udev-prefix=/ \
        --with-thin-repair=/usr/sbin/thin_repair \
        --with-thin-restore=/usr/sbin/thin_restore \
        --with-udev-prefix=/ \
-       --with-usrlibdir=%{_libdir}
-
-%{__make} -j1
-%{__make} -j1 -C libdm LIB_STATIC=libdevmapper.a
+       --with-usrlibdir=%{_libdir} \
+       --with-vdo=internal --with-vdo-format=%{_bindir}/vdoformat \
+       --with-writecache=internal
+# use bash because of "set -o pipefail"
+# V=1 still used because of missing --disable-silent-rules support in libdm (as of 2.03.09)
+%{__make} -j1 \
+       SHELL=/bin/bash \
+       V=1
+%{__make} -j1 -C libdm \
+       LIB_STATIC=libdevmapper.a \
+       V=1
 
 %install
 rm -rf $RPM_BUILD_ROOT
 
 %install
 rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT{/%{_lib},%{_sysconfdir}/lvm,/etc/sysconfig}
-%{?with_dietlibc:install -d $RPM_BUILD_ROOT%{dietlibdir}}
+install -d $RPM_BUILD_ROOT{/%{_lib},%{_sysconfdir}/lvm,/etc/sysconfig,/var/lock/lvm/subsys}
 
 %{__make} install install_system_dirs install_initscripts \
        DESTDIR=$RPM_BUILD_ROOT \
 
 %{__make} install install_system_dirs install_initscripts \
        DESTDIR=$RPM_BUILD_ROOT \
+       PYTHON_PREFIX=%{_prefix} \
        OWNER="" \
        GROUP=""
 
 %{__make} -C scripts \
        OWNER="" \
        GROUP=""
 
 %{__make} -C scripts \
-       DESTDIR=$RPM_BUILD_ROOT \
-
-%if %{with cluster}
-cp -p %{SOURCE1} $RPM_BUILD_ROOT/etc/sysconfig/clvmd
-%endif
+       DESTDIR=$RPM_BUILD_ROOT
 
 
-mv $RPM_BUILD_ROOT%{_libdir}/lib*.so.* $RPM_BUILD_ROOT/%{_lib}
+%{__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')
 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')
@@ -472,73 +338,157 @@ done
 
 touch $RPM_BUILD_ROOT%{_sysconfdir}/lvm/lvm.conf
 
 
 touch $RPM_BUILD_ROOT%{_sysconfdir}/lvm/lvm.conf
 
-%if %{with initrd}
-install -d $RPM_BUILD_ROOT%{_libdir}/initrd
-install -p initrd-lvm $RPM_BUILD_ROOT%{_libdir}/initrd/lvm
-install -p initrd-dmsetup $RPM_BUILD_ROOT%{_libdir}/initrd/dmsetup
-
-%{?with_dietlibc:cp -a diet-libdevmapper.a $RPM_BUILD_ROOT%{dietlibdir}/libdevmapper.a}
-%endif
-
 cp -a libdm/libdevmapper.a $RPM_BUILD_ROOT%{_libdir}
 
 %clean
 rm -rf $RPM_BUILD_ROOT
 
 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
 %post
-/sbin/chkconfig --add lvm2-lvmetad
-%service lvm2-lvmetad restart
 /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
 /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
 
 %preun
 if [ "$1" = "0" ]; then
-       %service lvm2-lvmetad stop
-       /sbin/chkconfig --del lvm2-lvmetad
        %service lvm2-lvmpolld stop
        /sbin/chkconfig --del lvm2-lvmpolld
        %service lvm2-monitor stop
        /sbin/chkconfig --del lvm2-monitor
        %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
 
        /sbin/chkconfig --del blk-availability
 fi
 
 %post  -n device-mapper-libs -p /sbin/ldconfig
 %postun        -n device-mapper-libs -p /sbin/ldconfig
 
-%post clvmd
-/sbin/chkconfig --add clvmd
-# no service restart - it breaks current locks!
-export NORESTART=1
-# re-exec instead
-/usr/sbin/clvmd -S 2>/dev/null || :
-
-%preun clvmd
-if [ "$1" = "0" ]; then
-       %service clvmd stop
-       /sbin/chkconfig --del clvmd
-fi
-
 %files
 %defattr(644,root,root,755)
 %doc README WHATS_NEW doc/*
 %attr(755,root,root) %{_sbindir}/blkdeactivate
 %attr(755,root,root) %{_sbindir}/fsadm
 %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*
+%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}/lvm_import_vdo
+%attr(755,root,root) %{_sbindir}/lvmconfig
+%attr(755,root,root) %{_sbindir}/lvmdevices
+%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}/vgimportdevices
+%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
+%attr(755,root,root) %{_libexecdir}/lvresize_fs_helper
 %{_mandir}/man5/lvm.conf.5*
 %{_mandir}/man5/lvm.conf.5*
+%{_mandir}/man7/lvmautoactivation.7*
 %{_mandir}/man7/lvmcache.7*
 %{_mandir}/man7/lvmcache.7*
+%{_mandir}/man7/lvmraid.7*
+%{_mandir}/man7/lvmreport.7*
 %{_mandir}/man7/lvmsystemid.7*
 %{_mandir}/man7/lvmthin.7*
 %{_mandir}/man7/lvmsystemid.7*
 %{_mandir}/man7/lvmthin.7*
+%{_mandir}/man7/lvmvdo.7*
 %{_mandir}/man8/blkdeactivate.8*
 %{_mandir}/man8/fsadm.8*
 %{_mandir}/man8/blkdeactivate.8*
 %{_mandir}/man8/fsadm.8*
-%{_mandir}/man8/lv*.8*
-%{_mandir}/man8/pv*.8*
-%{_mandir}/man8/vg*.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/lvm_import_vdo.8*
+%{_mandir}/man8/lvmconfig.8*
+%{_mandir}/man8/lvmdevices.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/vgimportdevices.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
 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lvm/lvm.conf
 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lvm/lvmlocal.conf
@@ -549,30 +499,27 @@ fi
 %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/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
-%if %{with lvmetad}
-/lib/udev/rules.d/69-dm-lvm-metad.rules
-%endif
+%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
 %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
+%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
+%attr(700,root,root) %dir /var/lock/lvm/subsys
+%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}
 %endif
 %if %{with lvmpolld}
+%attr(755,root,root) %{_sbindir}/lvmpolld
 %attr(754,root,root) /etc/rc.d/init.d/lvm2-lvmpolld
 %attr(754,root,root) /etc/rc.d/init.d/lvm2-lvmpolld
+%{_mandir}/man8/lvmpolld.8*
 %endif
 %endif
-%attr(754,root,root) /etc/rc.d/init.d/lvm2-monitor
-%attr(700,root,root) %dir /var/lock/lvm
-%attr(700,root,root) %dir /var/run/lvm
 
 %if %{with cluster}
 
 %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
-%{_mandir}/man8/clvmd.8*
-
 %files cmirrord
 %defattr(644,root,root,755)
 %attr(755,root,root) %{_usrsbindir}/cmirrord
 %files cmirrord
 %defattr(644,root,root,755)
 %attr(755,root,root) %{_usrsbindir}/cmirrord
@@ -580,24 +527,19 @@ fi
 %{_mandir}/man8/cmirrord.8*
 %endif
 
 %{_mandir}/man8/cmirrord.8*
 %endif
 
-%files resource-agents
+%if %{with lvmdbusd}
+%files dbusd
 %defattr(644,root,root,755)
 %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
+%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
 
 %endif
 
-%if %{with python3}
-%files -n python3-lvm
+%files resource-agents
 %defattr(644,root,root,755)
 %defattr(644,root,root,755)
-%attr(755,root,root) %{py3_sitedir}/lvm*.so
-%{py3_sitedir}/lvm-%{version}_*-py*.egg-info
-%endif
+%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)
 
 %files -n device-mapper
 %defattr(644,root,root,755)
@@ -605,13 +547,24 @@ fi
 /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/10-dm.rules
 /lib/udev/rules.d/11-dm-lvm.rules
 /lib/udev/rules.d/13-dm-disk.rules
+/lib/udev/rules.d/69-dm-lvm.rules
 /lib/udev/rules.d/95-dm-notify.rules
 %attr(755,root,root) %{_sbindir}/dmeventd
 /lib/udev/rules.d/95-dm-notify.rules
 %attr(755,root,root) %{_sbindir}/dmeventd
+%attr(755,root,root) %{_sbindir}/dmfilemapd
 %attr(755,root,root) %{_sbindir}/dmsetup
 %attr(755,root,root) %{_sbindir}/dmstats
 %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
 %dir %{_libdir}/device-mapper
-%attr(755,root,root) %{_libdir}/device-mapper/*.so
-%attr(755,root,root) %{_libdir}/libdevmapper-event-*.so
+%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/dmfilemapd.8*
 %{_mandir}/man8/dmsetup.8*
 %{_mandir}/man8/dmstats.8*
 %{_mandir}/man8/dmeventd.8*
 %{_mandir}/man8/dmsetup.8*
 %{_mandir}/man8/dmstats.8*
 %{_mandir}/man8/dmeventd.8*
@@ -621,39 +574,20 @@ fi
 %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}/libdevmapper.so.*.*
 %attr(755,root,root) /%{_lib}/libdevmapper-event.so.*.*
 %attr(755,root,root) /%{_lib}/libdevmapper-event-lvm2.so.*.*
-%attr(755,root,root) /%{_lib}/liblvm2app.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) /%{_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}/liblvm2app.so
+%attr(755,root,root) %{_libdir}/libdevmapper-event-lvm2.so
 %attr(755,root,root) %{_libdir}/liblvm2cmd.so
 %{_includedir}/libdevmapper.h
 %{_includedir}/libdevmapper-event.h
 %attr(755,root,root) %{_libdir}/liblvm2cmd.so
 %{_includedir}/libdevmapper.h
 %{_includedir}/libdevmapper-event.h
-%{_includedir}/lvm2app.h
 %{_includedir}/lvm2cmd.h
 %{_pkgconfigdir}/devmapper.pc
 %{_pkgconfigdir}/devmapper-event.pc
 %{_includedir}/lvm2cmd.h
 %{_pkgconfigdir}/devmapper.pc
 %{_pkgconfigdir}/devmapper-event.pc
-%{_pkgconfigdir}/lvm2app.pc
 
 %files -n device-mapper-static
 %defattr(644,root,root,755)
 %{_libdir}/libdevmapper.a
 
 %files -n device-mapper-static
 %defattr(644,root,root,755)
 %{_libdir}/libdevmapper.a
-
-%if %{with initrd}
-%if %{with dietlibc}
-%files -n device-mapper-dietlibc
-%defattr(644,root,root,755)
-%{dietlibdir}/libdevmapper.a
-%endif
-
-%files -n device-mapper-initrd
-%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/initrd/dmsetup
-
-%files initrd
-%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/initrd/lvm
-%endif