Blob Blame History Raw
autofs-5.0.5 - add systemd unit support

From: Ian Kent <ikent@redhat.com>

Add a systemd unit file and attempt to integrating it into our
install.
---

 CHANGELOG                 |    1 
 Makefile.conf.in          |    2 +
 aclocal.m4                |   28 ++++++++++++++++++++++
 autofs.spec               |   58 +++++++++++++++++++++++++++++++++++++++++-----
 configure                 |   47 +++++++++++++++++++++++++++++++++++++
 configure.in              |    9 +++++++
 redhat/Makefile           |   10 ++++++-
 samples/Makefile          |   23 +++++++++++++-----
 samples/autofs.service.in |   12 +++++++++
 9 files changed, 176 insertions(+), 14 deletions(-)
 create mode 100644 samples/autofs.service.in


--- autofs-5.0.6.orig/CHANGELOG
+++ autofs-5.0.6/CHANGELOG
@@ -17,6 +17,7 @@
 - fix ipv6 rpc calls.
 - fix ipv6 configure check.
 - add piddir to configure.
+- add systemd unit support.
 
 28/06/2011 autofs-5.0.6
 -----------------------
--- autofs-5.0.6.orig/Makefile.conf.in
+++ autofs-5.0.6/Makefile.conf.in
@@ -98,3 +98,5 @@ mandir = @mandir@
 # Location for init.d files
 initdir = @initdir@
 
+# Location of systemd unit files
+systemddir = @systemddir@
--- autofs-5.0.6.orig/aclocal.m4
+++ autofs-5.0.6/aclocal.m4
@@ -199,6 +199,34 @@ fi], [AC_MSG_RESULT(no)])
 ])
 
 dnl --------------------------------------------------------------------------
+dnl AF_WITH_SYSTEMD
+dnl
+dnl Check the location of the systemd unit files directory
+dnl --------------------------------------------------------------------------
+AC_DEFUN([AF_WITH_SYSTEMD],
+[AC_ARG_WITH(systemd,
+[  --with-systemd         install systemd unit file if systemd unit directory
+			  is found on system],
+[if test "$withval" = yes; then
+  if test -z "$systemddir"; then
+    AC_MSG_CHECKING([location of the systemd unit files directory])
+    for systemd_d in /lib/systemd/system; do
+      if test -z "$systemddir"; then
+        if test -d "$systemd_d"; then
+          systemddir="$systemd_d"
+        fi
+      fi
+    done
+  fi
+  if test -n "$systemddir"; then
+    AC_MSG_RESULT($systemddir)
+  else
+    AC_MSG_RESULT(not found)
+  fi
+fi])
+])
+
+dnl --------------------------------------------------------------------------
 dnl AF_CHECK_LIBXML
 dnl
 dnl Check for lib xml
--- autofs-5.0.6.orig/autofs.spec
+++ autofs-5.0.6/autofs.spec
@@ -8,6 +8,10 @@
 %define _lib lib64
 %endif
 
+# Use --without systemd in your rpmbuild command or force values to 0 to
+# disable them.
+%define with_systemd        %{?_without_systemd:        0} %{?!_without_systemd:        1}
+
 Summary: A tool from automatically mounting and umounting filesystems.
 Name: autofs
 %define version 5.0.6
@@ -18,9 +22,18 @@ License: GPL
 Group: System Environment/Daemons
 Source: ftp://ftp.kernel.org/pub/linux/daemons/autofs/v4/autofs-%{version}.tar.gz
 Buildroot: %{_tmppath}/%{name}-tmp
+%if %{with_systemd}
+BuildRequires: systemd-units
+%endif
 BuildPrereq: autoconf, hesiod-devel, openldap-devel, bison, flex, cyrus-sasl-devel
 Prereq: chkconfig
 Requires: /bin/bash mktemp sed textutils sh-utils grep /bin/ps
+%if %{with_systemd}
+Requires(post): systemd-sysv
+Requires(post): systemd-units
+Requires(preun): systemd-units
+Requires(postun): systemd-units
+%endif
 Obsoletes: autofs-ldap
 Summary(de): autofs daemon 
 Summary(fr): démon autofs
@@ -55,14 +68,22 @@ inkludera nätfilsystem, CD-ROM, floppydi
 %prep
 %setup -q
 echo %{version}-%{release} > .version
+%if %{with_systemd}
+  %define _unitdir %{?_unitdir:/lib/systemd/system}
+  %define systemd_configure_arg --with-systemd
+%endif
 
 %build
-CFLAGS="$RPM_OPT_FLAGS -Wall" ./configure --libdir=%{_libdir} --disable-mount-locking --enable-ignore-busy --with-libtirpc --disable-mount-move
+CFLAGS="$RPM_OPT_FLAGS -Wall" ./configure --libdir=%{_libdir} --disable-mount-locking --enable-ignore-busy --with-libtirpc --disable-mount-move %{?systemd_configure_arg:}
 CFLAGS="$RPM_OPT_FLAGS -Wall" make initdir=/etc/rc.d/init.d DONTSTRIP=1
 
 %install
 rm -rf $RPM_BUILD_ROOT
+%if %{with_systemd}
+install -d -m 755 $RPM_BUILD_ROOT%{_unitdir}
+%else
 mkdir -p -m755 $RPM_BUILD_ROOT/etc/rc.d/init.d
+%endif
 mkdir -p -m755 $RPM_BUILD_ROOT%{_sbindir}
 mkdir -p -m755 $RPM_BUILD_ROOT%{_libdir}/autofs
 mkdir -p -m755 $RPM_BUILD_ROOT%{_mandir}/{man5,man8}
@@ -70,31 +91,56 @@ mkdir -p -m755 $RPM_BUILD_ROOT/etc/sysco
 mkdir -p -m755 $RPM_BUILD_ROOT/etc/auto.master.d
 
 make install mandir=%{_mandir} initdir=/etc/rc.d/init.d INSTALLROOT=$RPM_BUILD_ROOT
+echo make -C redhat
 make -C redhat
+%if %{with_systemd}
+install -m 644 redhat/autofs.service $RPM_BUILD_ROOT%{_unitdir}/autofs.service
+%else
 install -m 755 redhat/autofs.init $RPM_BUILD_ROOT/etc/rc.d/init.d/autofs
+%endif
 install -m 644 redhat/autofs.sysconfig $RPM_BUILD_ROOT/etc/sysconfig/autofs
 
 %clean
 [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
 
 %post
+%if %{with_systemd}
+/bin/systemctl daemon-reload >/dev/null 2>&1 || :
+%else
 chkconfig --add autofs
-
-%postun
-if [ $1 -ge 1 ] ; then
-	/sbin/service autofs condrestart > /dev/null 2>&1 || :
-fi
+%endif
 
 %preun
 if [ "$1" = 0 ] ; then
+%if %{with_systemd}
+	/bin/systemctl --no-reload disable autofs.service > /dev/null 2>&1 || :
+	/bin/systemctl stop autofs.service > /dev/null 2>&1 || :
+%else
 	/sbin/service autofs stop > /dev/null 2>&1 || :
 	/sbin/chkconfig --del autofs
+%endif
 fi
 
+%postun
+%if %{with_systemd}
+/bin/systemctl daemon-reload >/dev/null 2>&1 || :
+if [ $1 -ge 1 ] ; then
+	/bin/systemctl try-restart autofs.service >/dev/null 2>&1 || :
+fi
+%else
+if [ $1 -ge 1 ] ; then
+	/sbin/service autofs condrestart > /dev/null 2>&1 || :
+fi
+%endif
+
 %files
 %defattr(-,root,root)
 %doc CREDITS CHANGELOG INSTALL COPY* README* samples/ldap* samples/autofs.schema samples/autofs_ldap_auth.conf
+%if %{with_systemd}
+%{_unitdir}/autofs.service
+%else
 %config /etc/rc.d/init.d/autofs
+%endif
 %config(noreplace) /etc/auto.master
 %config(noreplace,missingok) /etc/auto.misc
 %config(noreplace,missingok) /etc/auto.net
--- autofs-5.0.6.orig/configure
+++ autofs-5.0.6/configure
@@ -650,6 +650,8 @@ flagdir
 fifodir
 mapdir
 confdir
+systemddir
+piddir
 initdir
 target_alias
 host_alias
@@ -693,6 +695,7 @@ ac_subst_files=''
 ac_user_opts='
 enable_option_checking
 with_path
+with_systemd
 with_confdir
 with_mapdir
 with_fifodir
@@ -1337,6 +1340,8 @@ Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
   --with-path=PATH	  look in PATH for binaries needed by the automounter
+  --with-systemd         install systemd unit file if systemd unit directory
+			  is found on system
   --with-confdir=DIR	  use DIR for autofs configuration files
   --with-mapdir=PATH	  look in PATH for mount maps used by the automounter
   --with-fifodir=PATH	   use PATH as the directory for fifos used by the automounter
@@ -2119,6 +2124,48 @@ $as_echo "$initdir" >&6; }
   done
 fi
 
+if test -z "$piddir"; then
+  for pid_d in /run /var/run /tmp; do
+    if test -z "$piddir"; then
+      if test -d "$pid_d"; then
+        piddir="$pid_d"
+      fi
+    fi
+  done
+fi
+
+
+#
+# Check for systemd unit files direectory exists if unit file installation
+# is requested
+#
+
+# Check whether --with-systemd was given.
+if test "${with_systemd+set}" = set; then :
+  withval=$with_systemd; if test "$withval" = yes; then
+  if test -z "$systemddir"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking location of the systemd unit files directory" >&5
+$as_echo_n "checking location of the systemd unit files directory... " >&6; }
+    for systemd_d in /lib/systemd/system; do
+      if test -z "$systemddir"; then
+        if test -d "$systemd_d"; then
+          systemddir="$systemd_d"
+        fi
+      fi
+    done
+  fi
+  if test -n "$systemddir"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $systemddir" >&5
+$as_echo "$systemddir" >&6; }
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+  fi
+fi
+fi
+
+
+
 
 #
 # Location of system config script directory?
--- autofs-5.0.6.orig/configure.in
+++ autofs-5.0.6/configure.in
@@ -43,6 +43,15 @@ AF_LINUX_PROCFS()
 #
 AF_INIT_D()
 AC_SUBST(initdir)
+AF_PID_D()
+AC_SUBST(piddir)
+
+#
+# Check for systemd unit files direectory exists if unit file installation
+# is requested
+#
+AF_WITH_SYSTEMD()
+AC_SUBST(systemddir)
 
 #
 # Location of system config script directory?
--- autofs-5.0.6.orig/redhat/Makefile
+++ autofs-5.0.6/redhat/Makefile
@@ -2,7 +2,7 @@
 -include ../Makefile.conf
 include ../Makefile.rules
 
-all: autofs.init autofs.sysconfig
+all: autofs.init autofs.sysconfig autofs.service
 
 autofs.init: autofs.init.in
 	sed -e "s|@@sbindir@@|$(sbindir)|g" \
@@ -15,6 +15,12 @@ autofs.sysconfig: autofs.sysconfig.in
 	sed -e "s|@@autofsmapdir@@|$(autofsmapdir)|g" \
 		< autofs.sysconfig.in > autofs.sysconfig
 
+autofs.service: ../samples/autofs.service.in
+	sed -e "s|@@sbindir@@|$(sbindir)|g" \
+	    -e "s|@@autofsconfdir@@|$(autofsconfdir)|g" \
+	    -e "s|@@autofspiddir@@|$(autofspiddir)|g" \
+		< ../samples/autofs.service.in > autofs.service
+
 clean:
-	rm -f autofs.init autofs.sysconfig
+	rm -f autofs.init autofs.sysconfig autofs.service
 
--- autofs-5.0.6.orig/samples/Makefile
+++ autofs-5.0.6/samples/Makefile
@@ -4,7 +4,7 @@ include ../Makefile.rules
 
 SAMPLES = auto.master auto.misc auto.net auto.smb
 
-all: rc.autofs autofs.conf.default
+all: rc.autofs autofs.conf.default autofs.service
 
 rc.autofs: rc.autofs.in
 	sed -e "s|@@sbindir@@|$(sbindir)|g" \
@@ -16,6 +16,12 @@ autofs.conf.default: autofs.conf.default
 	sed -e "s|@@autofsmapdir@@|$(autofsmapdir)|g" \
 		< autofs.conf.default.in > autofs.conf.default
 
+autofs.service: autofs.service.in
+	sed -e "s|@@sbindir@@|$(sbindir)|g" \
+	    -e "s|@@autofsconfdir@@|$(autofsconfdir)|g" \
+	    -e "s|@@autofspiddir@@|$(autofspiddir)|g" \
+		< autofs.service.in > autofs.service
+
 .PHONY: dirs
 dirs:
 	install -d -m 755 $(INSTALLROOT)$(autofsmapdir)
@@ -26,13 +32,18 @@ dirs:
 .PHONY: autofs.init
 autofs.init:
 	@echo
-ifneq ($(initdir),)
+ifneq ($(systemddir),)
+	install -d -m 755 $(INSTALLROOT)$(systemddir)
+	install autofs.service -m 644 $(INSTALLROOT)$(systemddir)/autofs.service
+else
+   ifneq ($(initdir),)
 	install -d -m 755 $(INSTALLROOT)$(initdir)
 	install rc.autofs -m 755 $(INSTALLROOT)$(initdir)/autofs
-else
+   else
 	if test -d $(INSTALLROOT)/etc/rc.d ; then \
 		install -c rc.autofs -m 755 $(INSTALLROOT)/etc/rc.d ; \
 	fi
+   endif
 endif
 
 CONFIG = $(shell test -e $(INSTALLROOT)$(autofsconfdir)/autofs.orig || echo "-b --suffix=.orig")
@@ -173,10 +184,10 @@ auto.smb:
 		fi ; \
 	fi
 
-install: rc.autofs autofs.conf.default dirs autofs.init autofs.conf \
-		autofs_ldap_auth.conf $(SAMPLES)
+install: rc.autofs autofs.conf.default dirs autofs.init autofs.service \
+		autofs.conf autofs_ldap_auth.conf $(SAMPLES)
 	@echo
 
 clean:
-	rm -f *.o *.s rc.autofs autofs.conf.default
+	rm -f *.o *.s rc.autofs autofs.conf.default autofs.service
 
--- /dev/null
+++ autofs-5.0.6/samples/autofs.service.in
@@ -0,0 +1,12 @@
+[Unit]
+Description=Automounts filesystems on demand
+After=network.target ypbind.service
+
+[Service]
+Type=forking
+PIDFile=@@autofspiddir@@/autofs.pid
+EnvironmentFile=-@@autofsconfdir@@/autofs
+ExecStart=@@sbindir@@/automount ${OPTIONS} --pid-file @@autofspiddir@@/autofs.pid
+
+[Install]
+WantedBy=multi-user.target