[nss-pam-ldapd] - convert to systemd-native startup (#716997)

Nalin Dahyabhai nalin at fedoraproject.org
Thu Jul 14 18:47:14 UTC 2011


commit ca9ea0ccedfa631d9f3519a10864d0e819cd950f
Author: Nalin Dahyabhai <nalin at dahyabhai.net>
Date:   Wed Jul 13 18:40:48 2011 -0400

    - convert to systemd-native startup (#716997)

 nss-pam-ldapd.spec |   82 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 80 insertions(+), 2 deletions(-)
---
diff --git a/nss-pam-ldapd.spec b/nss-pam-ldapd.spec
index 0b15452..fb2585c 100644
--- a/nss-pam-ldapd.spec
+++ b/nss-pam-ldapd.spec
@@ -1,3 +1,17 @@
+%if 0%{?fedora} > 15 || 0%{?rhel} > 6
+%global systemd 1
+%global sysvinit 0
+%else
+%global systemd 0
+%global sysvinit 1
+%endif
+
+%if 0%{?fedora} > 14 || 0%{?rhel} > 6
+%global tmpfiles 1
+%else
+%global tmpfiles 0
+%endif
+
 Name:		nss-pam-ldapd
 Version:	0.7.13
 Release:	5%{?dist}
@@ -9,6 +23,7 @@ Source0:	http://arthurdejong.org/nss-pam-ldapd/nss-pam-ldapd-%{version}.tar.gz
 Source1:	http://arthurdejong.org/nss-pam-ldapd/nss-pam-ldapd-%{version}.tar.gz.sig
 Source2:	nslcd.init
 Source3:	nslcd.tmpfiles
+Source4:	nslcd.service
 BuildRoot:	%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 BuildRequires:	openldap-devel, krb5-devel
 Obsoletes:	nss-ldapd < 0.7
@@ -20,9 +35,18 @@ Provides:	nss-ldapd = %{version}-%{release}
 Requires:	pam_ldap%{?_isa}
 # Pull in nscd, which is recommended.
 Requires:	nscd
+%if %{sysvinit}
 Requires(post):		/sbin/ldconfig, chkconfig, grep, sed
 Requires(preun):	chkconfig, initscripts
 Requires(postun):	/sbin/ldconfig, initscripts
+%endif
+%if %{systemd}
+BuildRequires:	systemd-units
+Requires(post):	systemd-units
+Requires(preun):	systemd-units
+Requires(postun):	systemd-units
+Requires(post):	systemd-sysv
+%endif
 
 %description
 The nss-pam-ldapd daemon, nslcd, uses a directory server to look up name
@@ -39,8 +63,13 @@ make %{?_smp_mflags}
 %install
 rm -rf $RPM_BUILD_ROOT
 make install DESTDIR=$RPM_BUILD_ROOT
-mkdir -p $RPM_BUILD_ROOT/{%{_initddir},%{_libdir}}
+mkdir -p $RPM_BUILD_ROOT/{%{_initddir},%{_libdir},lib/systemd/system}
+%if %{sysvinit}
 install -p -m755 %{SOURCE2} $RPM_BUILD_ROOT/%{_initddir}/nslcd
+%endif
+%if %{systemd}
+install -p -m755 %{SOURCE4} $RPM_BUILD_ROOT/lib/systemd/system/
+%endif
 %if 0%{?fedora} > 13
 # Follow glibc's convention and provide a .so symlink so that people who know
 # what to expect can link directly with the module.
@@ -59,8 +88,10 @@ sed -i -e 's,^uid.*,uid nslcd,g' -e 's,^gid.*,gid ldap,g' \
 $RPM_BUILD_ROOT/%{_sysconfdir}/nslcd.conf
 touch -r nslcd.conf $RPM_BUILD_ROOT/%{_sysconfdir}/nslcd.conf
 mkdir -p -m 0755 $RPM_BUILD_ROOT/var/run/nslcd
+%if %{tmpfiles}
 mkdir -p -m 0755 $RPM_BUILD_ROOT/etc/tmpfiles.d
 install -p -m 0644 %{SOURCE3} $RPM_BUILD_ROOT/etc/tmpfiles.d/%{name}.conf
+%endif
 
 %clean
 rm -rf $RPM_BUILD_ROOT
@@ -72,10 +103,17 @@ rm -rf $RPM_BUILD_ROOT
 /%{_lib}/*.so.*
 %{_mandir}/*/*
 %attr(0600,root,root) %config(noreplace) %verify(not md5 size mtime) /etc/nslcd.conf
+%if %{tmpfiles}
 %attr(0644,root,root) %config(noreplace) /etc/tmpfiles.d/%{name}.conf
+%endif
+%if %{sysvinit}
 %attr(0755,root,root) %{_initddir}/nslcd
+%endif
+%if %{systemd}
+%config(noreplace) /lib/systemd/system/*
+%endif
 %attr(0755,nslcd,root) /var/run/nslcd
-%if 0%{?fedora} > 13
+%if 0%{?fedora} > 13 || %{?rhel} > 5
 # This would be the only thing in the -devel subpackage, so we include it.  It
 # will conflict with nss_ldap, so only include it for releases where pam_ldap is
 # its own package.
@@ -91,7 +129,12 @@ getent passwd nslcd > /dev/null || \
 
 %post
 # The usual stuff.
+%if %{sysvinit}
 /sbin/chkconfig --add nslcd
+%endif
+%if %{systemd}
+/bin/systemctl daemon-reload >/dev/null 2>&1 || :
+%endif
 /sbin/ldconfig
 # Import important non-default settings from nss_ldap or pam_ldap configuration
 # files, but only the first time this package is installed.
@@ -143,7 +186,12 @@ fi
 # is an upgrade, leave the user's runlevel selections alone.
 if [ "$1" -eq "1" ]; then
 	if egrep -q '^USELDAP=yes$' /etc/sysconfig/authconfig 2> /dev/null ; then
+%if %{sysvinit}
 		/sbin/chkconfig nslcd on
+%endif
+%if %{systemd}
+		/bin/systemctl --no-reload enable nslcd.service >/dev/null 2>&1 ||:
+%endif
 	fi
 fi
 # Earlier versions of 0.7.6 of this package would have included both 'gid
@@ -162,19 +210,49 @@ exit 0
 
 %preun
 if [ "$1" -eq "0" ]; then
+%if %{sysvinit}
 	/sbin/service nslcd stop >/dev/null 2>&1
 	/sbin/chkconfig --del nslcd
+%endif
+%if %{systemd}
+	/bin/systemctl --no-reload disable nslcd.service > /dev/null 2>&1 || :
+	/bin/systemctl stop nslcd.service > /dev/null 2>&1 || :
+%endif
 fi
 exit 0
 
 %postun
 /sbin/ldconfig
+%if %{sysvinit}
 if [ "$1" -ge "1" ]; then
 	/etc/rc.d/init.d/nslcd condrestart >/dev/null 2>&1
 fi
+%endif
+%if %{systemd}
+/bin/systemctl daemon-reload >/dev/null 2>&1 || :
+if [ "$1" -ge "1" ]; then
+	/bin/systemctl try-restart nslcd.service >/dev/null 2>&1
+fi
+%endif
+exit 0
+
+%if %{systemd}
+%triggerun -- nss-pam-ldapd < 0.7.13-6
+# Save the current service runlevel info, in case the user wants to apply
+# the enabled status manually later, by running
+#   "systemd-sysv-convert --apply nslcd".
+%{_bindir}/systemd-sysv-convert --save nslcd >/dev/null 2>&1 ||:
+# Do this because the old package's %%postun doesn't know we need to do it.
+/sbin/chkconfig --del nslcd >/dev/null 2>&1 || :
+# Do this because the old package's %%postun wouldn't have tried.
+/bin/systemctl try-restart nslcd.service >/dev/null 2>&1 || :
 exit 0
+%endif
 
 %changelog
+* Wed Jul 13 2011 Nalin Dahyabhai <nalin at redhat.com> 0.7.13-6
+- convert to systemd-native startup (#716997)
+
 * Mon Jun 13 2011 Nalin Dahyabhai <nalin at redhat.com> 0.7.13-5
 - change the file path Requires: we have for pam_ldap into a package name
   Requires: (#601931)


More information about the scm-commits mailing list