-Summary: Device-mapper RAID tool and library
+#
+# Conditional build:
+%bcond_with initrd # without initrd version
+%bcond_with dietlibc # build initrd version with static glibc instead of dietlibc
+%bcond_without selinux # build without SELinux support (needs selinux-disabled device-mapper)
+
+%define rel 3
+%define subver rc16.3
+Summary: Device-mapper RAID tool
+Summary(pl.UTF-8): Narzędzie do RAID-u opartego o device-mapper
Name: dmraid
Version: 1.0.0
-Release: 0.1
-License: GPL
+Release: 0.%{subver}.%{rel}
+License: GPL v2+
Group: Base
-Source0: http://people.redhat.com/~heinzm/sw/dmraid/src/%{name}-%{version}-rc4.tar.bz2
-# Source0-md5: 96ab9ad2891045a28688f84c5329cedc
+Source0: http://people.redhat.com/~heinzm/sw/dmraid/src/%{name}-%{version}.rc16-3.tar.bz2
+# Source0-md5: 819338fcef98e8e25819f0516722beeb
+Source1: dmraid-activation.sh
+Source2: dmraid-activation.service
+Patch0: %{name}-selinux-static.patch
+Patch1: %{name}-optflags.patch
+Patch2: %{name}-unsigned.patch
+Patch3: %{name}-diet.patch
+Patch4: %{name}-format.patch
URL: http://people.redhat.com/~heinzm/sw/dmraid/
BuildRequires: autoconf
-BuildRequires: device-mapper-devel
+BuildRequires: automake
+BuildRequires: device-mapper-devel >= 1.02.02
+BuildRequires: zlib-devel
+%if %{with initrd}
+ %if %{with dietlibc}
+BuildRequires: device-mapper-dietlibc
+BuildRequires: dietlibc-static >= 2:0.31-5
+ %else
+BuildRequires: device-mapper-static >= 1.02.05-0.4
+BuildRequires: glibc-static
+BuildRequires: udev-static
+%if %{with selinux}
+BuildRequires: libselinux-static
+BuildRequires: libsepol-static
+%endif
+ %endif
+%endif
+%if %{with selinux}
+BuildRequires: libselinux-devel
+BuildRequires: libsepol-devel
+%endif
+BuildRequires: rpmbuild(macros) >= 1.671
+Requires: systemd-units >= 38
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+%define _sbindir /sbin
+
%description
DMRAID supports device discovery, set activation and display of
properties for ATARAID on Linux >= 2.4 using device-mapper.
+%description -l pl.UTF-8
+DMRAID obsługuje wykrywanie urządzeń, ustawianie aktywacji i
+wyświetlanie właściwości ATARAID-u na Linuksie >= 2.4 przy użyciu
+device-mappera.
+
+%package devel
+Summary: Header files for dmraid library
+Summary(pl.UTF-8): Pliki nagłówkowe biblioteki dmraid
+Group: Development/Libraries
+Requires: %{name} = %{version}-%{release}
+
+%description devel
+dmraid-devel provides a library interface for RAID device discovery,
+RAID set activation and display of properties for ATARAID volumes.
+
+%description devel -l pl.UTF-8
+Ten pakiet udostępnia interfejs biblioteczny do wykrywania urządzeń
+RAID, włączania zestawu RAID i wyświetlania właściwości wolumenów
+ATARAID.
+
+%package static
+Summary: Static library for dmraid
+Summary(pl.UTF-8): Statyczna biblioteka dmraid
+Group: Development/Libraries
+Requires: %{name}-devel = %{version}-%{release}
+
+%description static
+dmraid-static provides a library interface for RAID device discovery,
+RAID set activation and display of properties for ATARAID volumes.
+
+%description static -l pl.UTF-8
+Ten pakiet udostępnia statyczną bibliotekę do wykrywania urządzeń
+RAID, włączania zestawu RAID i wyświetlania właściwości wolumenów
+ATARAID.
+
+%package initrd
+Summary: Device-mapper RAID tool - statically linked version
+Summary(pl.UTF-8): Narzędzie do RAID-u opartego o device-mapper - wersja statyczna
+Group: Base
+Conflicts: geninitrd < 10000.10
+
+%description initrd
+Statically linked version of dmraid utility.
+
+%description initrd -l pl.UTF-8
+Statycznie skonsolidowana wersja programu narzędziowego dmraid.
+
%prep
%setup -q -n %{name}
-mv */* ./
+mv %{version}.*/dmraid/* .
+%{?with_selinux:%patch0 -p2}
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
%build
-
-%{__gettextize}
+cp -f /usr/share/automake/config.sub autoconf
%{__aclocal}
%{__autoconf}
-%configure
-%{__make}
+%if %{with initrd}
+%configure \
+ %if %{with dietlibc}
+ CC="diet %{__cc} %{rpmcflags} %{rpmldflags} -Os -static" \
+ --disable-libselinux \
+ --disable-libsepol \
+ %else
+ %if %{with selinux}
+ --enable-libselinux \
+ --enable-libsepol \
+ %endif
+ %endif
+ --enable-static_link
+
+%{__make} -j1
+mv -f tools/dmraid dmraid-initrd
+%{__make} clean
+%endif
+
+%configure \
+ --with-usrlibdir=%{_libdir} \
+ --disable-static_link \
+ --enable-led \
+ --enable-intel_led
+%{__make} -j1
%install
rm -rf $RPM_BUILD_ROOT
+install -d $RPM_BUILD_ROOT{/%{_lib},%{systemdunitdir}}
+
+%{__make} install \
+ DESTDIR=$RPM_BUILD_ROOT
+
+mv $RPM_BUILD_ROOT%{_libdir}/libdmraid.so.* $RPM_BUILD_ROOT/%{_lib}
+ln -sf /%{_lib}/$(cd $RPM_BUILD_ROOT/%{_lib} ; echo libdmraid.so.*.*.*) \
+ $RPM_BUILD_ROOT%{_libdir}/libdmraid.so
+
+%if %{with initrd}
+install -d $RPM_BUILD_ROOT%{_libdir}/initrd
+install -p dmraid-initrd $RPM_BUILD_ROOT%{_libdir}/initrd/dmraid
+%endif
-install -D tools/dmraid $RPM_BUILD_ROOT%{_sbindir}/dmraid
-install -D man/dmraid.8 $RPM_BUILD_ROOT%{_mandir}/man8/dmraid.8
+# Install systemd unit
+install -p %{SOURCE1} $RPM_BUILD_ROOT/lib/systemd/dmraid-activation
+install -p %{SOURCE2} $RPM_BUILD_ROOT%{systemdunitdir}/dmraid-activation.service
%clean
rm -rf $RPM_BUILD_ROOT
+%post
+/sbin/ldconfig
+%systemd_post dmraid-activation.service
+
+%preun
+%systemd_preun dmraid-activation.service
+
+%postun
+/sbin/ldconfig
+%systemd_reload
+
+%triggerpostun -- %{name} < 1.0.0-0.rc16.3.3
+%systemd_trigger dmraid-activation.service
+
%files
%defattr(644,root,root,755)
-%doc README TODO doc/dmraid_design.txt
-%attr(755,root,root) %{_sbindir}/*
-%attr(644,root,root) %{_mandir}/man8/*
+%doc CHANGELOG CREDITS KNOWN_BUGS README TODO doc/dmraid_design.txt
+%attr(755,root,root) /lib/systemd/dmraid-activation
+%{systemdunitdir}/dmraid-activation.service
+%attr(755,root,root) %{_sbindir}/dmevent_tool
+%attr(755,root,root) %{_sbindir}/dmraid
+%attr(755,root,root) /%{_lib}/libdmraid.so.*.*.*
+%attr(755,root,root) %ghost /%{_lib}/libdmraid.so.1
+%attr(755,root,root) %{_libdir}/libdmraid-events-isw.so
+%attr(755,root,root) %{_libdir}/device-mapper/libdmraid-events-isw.so
+%{_mandir}/man8/dmevent_tool.8*
+%{_mandir}/man8/dmraid.8*
+
+%files devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libdmraid.so
+%{_includedir}/dmraid
+
+%files static
+%defattr(644,root,root,755)
+%{_libdir}/libdmraid.a
+
+%if %{with initrd}
+%files initrd
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/initrd/dmraid
+%endif