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 0.7.13-6 +- convert to systemd-native startup (#716997) + * Mon Jun 13 2011 Nalin Dahyabhai 0.7.13-5 - change the file path Requires: we have for pam_ldap into a package name Requires: (#601931)