[packages/util-linux] - added systemd service for blockdev - rel 4

baggins baggins at pld-linux.org
Sun Dec 29 21:01:14 CET 2013


commit d18bf87751ec850b1879cba1d429ae25453c90be
Author: Jan Rękorajski <baggins at pld-linux.org>
Date:   Sun Dec 29 21:00:59 2013 +0100

    - added systemd service for blockdev
    - rel 4

 blockdev.service | 10 ++++++++++
 blockdev.sh      | 32 ++++++++++++++++++++++++++++++++
 util-linux.spec  | 24 +++++++++++++++++++++---
 3 files changed, 63 insertions(+), 3 deletions(-)
---
diff --git a/util-linux.spec b/util-linux.spec
index 617db4c..91d3902 100644
--- a/util-linux.spec
+++ b/util-linux.spec
@@ -37,7 +37,7 @@ Summary(tr.UTF-8):	Temel sistem araçları
 Summary(uk.UTF-8):	Набір базових системних утиліт для Linux
 Name:		util-linux
 Version:	2.24
-Release:	3
+Release:	4
 License:	GPL
 Group:		Applications/System
 Source0:	https://www.kernel.org/pub/linux/utils/util-linux/v2.24/%{name}-%{version}.tar.xz
@@ -54,6 +54,8 @@ Source8:	runuser.pamd
 Source9:	runuser-l.pamd
 Source10:	nologin.c
 Source11:	nologin.8
+Source12:	blockdev.service
+Source13:	blockdev.sh
 Patch0:		%{name}-pl.po-update.patch
 Patch1:		%{name}-ng-union-mount.patch
 
@@ -72,6 +74,7 @@ BuildRequires:	gettext-devel >= 0.14.1
 %{?with_fallocate:BuildRequires:	glibc-devel >= 6:2.11}
 BuildRequires:	gtk-doc >= 1.10
 BuildRequires:	gtk-doc-automake >= 1.10
+BuildRequires:	libcap-ng-devel
 %{?with_selinux:BuildRequires:	libselinux-devel >= 2.0}
 %{?with_selinux:BuildRequires:	libsepol-devel}
 BuildRequires:	libtool >= 2:2.2
@@ -81,7 +84,7 @@ BuildRequires:	pam-devel >= %{pam_ver}
 BuildRequires:	pkgconfig
 BuildRequires:	python3-devel
 BuildRequires:	rpm >= 4.4.9-56
-BuildRequires:	rpmbuild(macros) >= 1.470
+BuildRequires:	rpmbuild(macros) >= 1.671
 BuildRequires:	sed >= 4.0
 BuildRequires:	tar >= 1:1.22
 BuildRequires:	udev-devel
@@ -196,8 +199,10 @@ Summary:	Support for blockdev
 Summary(pl.UTF-8):	Obsługa blockdev
 Group:		Applications/System
 Requires(post,preun):	/sbin/chkconfig
+Requires(post,preun,postun):	systemd-units >= 38
 Requires:	coreutils
 Requires:	rc-scripts >= 0.4.3.0
+Requires:	systemd-units >= 38
 
 %description -n blockdev
 The utility blockdev allows one to call block device ioctls from the
@@ -783,7 +788,8 @@ export CPPFLAGS="%{rpmcppflags} -I/usr/include/ncurses -DHAVE_LSEEK64_PROTOTYPE
 %install
 rm -rf $RPM_BUILD_ROOT
 install -d $RPM_BUILD_ROOT/etc/{pam.d,rc.d/init.d,sysconfig,init,security} \
-	$RPM_BUILD_ROOT{/%{_lib},/var/{lock,lib/libuuid}}
+	$RPM_BUILD_ROOT{/%{_lib},/var/{lock,lib/libuuid}} \
+	$RPM_BUILD_ROOT{/lib/systemd/pld-helpers.d,%{systemdunitdir}}
 %{?with_dietlibc:install -d $RPM_BUILD_ROOT%{dietlibdir}}
 
 %{__make} install \
@@ -799,6 +805,8 @@ cp -p %{SOURCE2} $RPM_BUILD_ROOT/etc/pam.d/login
 install -p %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/blockdev
 cp -p %{SOURCE4} $RPM_BUILD_ROOT/etc/sysconfig/blockdev
 cp -p %{SOURCE5} $RPM_BUILD_ROOT/etc/init/blockdev.conf
+cp -p %{SOURCE12} $RPM_BUILD_ROOT%{systemdunitdir}/blockdev.service
+cp -p %{SOURCE13} $RPM_BUILD_ROOT/lib/systemd/pld-helpers.d/blockdev.sh
 %if %{with su}
 ln -s ../sbin/runuser  $RPM_BUILD_ROOT/bin/runuser
 cp -p %{SOURCE6} $RPM_BUILD_ROOT/etc/pam.d/su
@@ -887,12 +895,20 @@ rm -rf $RPM_BUILD_ROOT
 %post -n blockdev
 /sbin/chkconfig --add blockdev
 %service blockdev restart
+%systemd_post blockdev.service
 
 %preun -n blockdev
 if [ "$1" = "0" ]; then
 	%service blockdev stop
 	/sbin/chkconfig --del blockdev
 fi
+%systemd_preun blockdev.service
+
+%postun -n blockdev
+%systemd_reload
+
+%triggerpostun -n blockdev -- blockdev < 2.24-4
+%systemd_trigger blockdev.service
 
 %post	-n libblkid -p /sbin/ldconfig
 %postun -n libblkid -p /sbin/ldconfig
@@ -1365,6 +1381,8 @@ fi
 %attr(755,root,root) /sbin/blockdev
 %{_mandir}/man8/blockdev.8*
 %lang(ja) %{_mandir}/ja/man8/blockdev.8*
+%{systemdunitdir}/blockdev.service
+%attr(755,root,root) /lib/systemd/pld-helpers.d/blockdev.sh
 
 %files -n mount
 %defattr(644,root,root,755)
diff --git a/blockdev.service b/blockdev.service
new file mode 100644
index 0000000..cc0e6e9
--- /dev/null
+++ b/blockdev.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Advanced block devices setup
+After=local-fs.target
+
+[Service]
+Type=oneshot
+ExecStart=/lib/systemd/pld-helpers.d/blockdev.sh
+
+[Install]
+WantedBy=multi-user.target
diff --git a/blockdev.sh b/blockdev.sh
new file mode 100644
index 0000000..adb4348
--- /dev/null
+++ b/blockdev.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+[ -f /etc/sysconfig/blockdev ] || exit 0
+
+blockdevs=$(awk -F= '!/^#/ && !/^$/ {if ($2) print $1}' /etc/sysconfig/blockdev)
+[ -n "$blockdevs" ] || exit 0
+
+# Source blockdev configuration.
+. /etc/sysconfig/blockdev
+
+for var in $blockdevs; do
+	realdrive=
+	drive=${var#BLOCKDEV_}
+	if [ -d "/sys/block/${drive}" -a -e "/dev/${drive}" ]; then
+		realdrive="/dev/${drive}"
+	elif [ -e "/dev/mapper/${drive}" ]; then
+		realdrive="/dev/mapper/${drive}"
+	elif drive=$(echo $drive | tr _ -) && [ -d "/sys/block/${drive}" -a -e "/dev/${drive}" ]; then
+		realdrive="/dev/${drive}"
+	elif [ -e "/dev/mapper/${drive}" ]; then
+		realdrive="/dev/mapper/${drive}"
+	fi
+
+	if [ -n "$realdrive" ]; then
+		eval PARAMS=\$$var
+		if [ -n "${PARAMS}" ]; then
+			/sbin/blockdev ${PARAMS} $realdrive
+		fi
+	fi
+done
+
+exit 0
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/util-linux.git/commitdiff/d18bf87751ec850b1879cba1d429ae25453c90be



More information about the pld-cvs-commit mailing list