[spamassassin: 2/3] Commit new service file for systemd

Nick Bebout nb at fedoraproject.org
Sat Aug 13 21:52:28 UTC 2011


commit a458ea91d8daeeb49a9abb2f94a9be4cc815169e
Author: Nick Bebout <nb at fedoraproject.org>
Date:   Sat Aug 13 16:49:32 2011 -0500

    Commit new service file for systemd

 spamassassin.service |   13 ++++++++++
 spamassassin.spec    |   65 ++++++++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 76 insertions(+), 2 deletions(-)
---
diff --git a/spamassassin.service b/spamassassin.service
new file mode 100644
index 0000000..4f80e49
--- /dev/null
+++ b/spamassassin.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Spamassassin daemon
+
+[Service]
+EnvironmentFile=/etc/sysconfig/spamassassin
+ExecStartPre=-/sbin/portrelease spamd
+ExecStart=/usr/bin/spamd ${SPAMDOPTIONS}
+Restart=always
+StandardOutput=syslog
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/spamassassin.spec b/spamassassin.spec
index 538a759..b3036d7 100644
--- a/spamassassin.spec
+++ b/spamassassin.spec
@@ -24,6 +24,7 @@
 %define perl_devel 0
 %define dkim_deps  0
 %define require_encode_detect 0
+%define use_systemd 0
 
 # SSL and IPv6 (FC6+, RHEL5+)
 %if 0%{?fedora} > 5
@@ -51,6 +52,10 @@ Requires: portreserve
 %define dkim_deps 1
 %endif
 
+%if 0%{?fedora} >= 15
+%define use_systemd 1
+%endif
+
 %define real_name Mail-SpamAssassin
 %{!?perl_vendorlib: %define perl_vendorlib %(eval "`%{__perl} -V:installvendorlib`"; echo $installvendorlib)}
 
@@ -61,7 +66,7 @@ Summary: Spam filter for email which can be invoked from mail delivery agents
 Name: spamassassin
 Version: 3.3.2
 #Release: 0.8.%{prerev}%{?dist}
-Release: 1%{?dist}
+Release: 2%{?dist}
 License: ASL 2.0
 Group: Applications/Internet
 URL: http://spamassassin.apache.org/
@@ -81,6 +86,9 @@ Source10: spamassassin-helper.sh
 Source11: spamassassin-official.conf
 Source12: sought.conf
 Source13: README.RHEL.Fedora
+%if %{use_systemd}
+Source14: spamassassin.service
+%endif
 # Patches 0-99 are RH specific
 # none yet
 # Patches 100+ are SVN backports (DO NOT REUSE!)
@@ -96,6 +104,9 @@ BuildRequires: perl(Time::HiRes)
 BuildRequires: perl(HTML::Parser)
 BuildRequires: perl(NetAddr::IP)
 BuildRequires: openssl-devel
+%if %{use_systemd}
+BuildRequires: systemd-units
+%endif
 
 Requires: perl(HTTP::Date)
 Requires: perl(LWP::UserAgent)
@@ -129,7 +140,12 @@ BuildRequires: perl-devel
 Requires: perl(Mail::DKIM)
 %endif
 
-
+%if %{use_systemd}
+Requires(post): systemd-units
+Requires(post): systemd-sysv
+Requires(preun): systemd-units
+Requires(postun): systemd-units
+%endif
 
 Obsoletes: perl-Mail-SpamAssassin
 
@@ -191,6 +207,10 @@ install -m 0644 %{SOURCE7} %buildroot/etc/cron.d/sa-update
 install -m 0644 %{SOURCE9} %buildroot%{_sysconfdir}/sysconfig/sa-update
 # installed mode 744 as non root users can't run it, but can read it.
 install -m 0744 %{SOURCE8} %buildroot%{_datadir}/spamassassin/sa-update.cron
+%if %{use_systemd}
+mkdir -p %buildroot%{_unitdir}
+install -m 0644 %{SOURCE14} %buildroot%{_unitdir}/spamassassin.service
+%endif
 
 [ -x /usr/lib/rpm/brp-compress ] && /usr/lib/rpm/brp-compress
 
@@ -245,12 +265,24 @@ install -m 0644 %{SOURCE13} $RPM_BUILD_DIR/Mail-SpamAssassin-%{version}/
 %dir %{_localstatedir}/lib/spamassassin
 %config(noreplace) %{_sysconfdir}/logrotate.d/sa-update
 %config(noreplace) %{_sysconfdir}/portreserve/spamd
+%if %{use_systemd}
+%{_unitdir}/spamassassin.service
+%endif
 
 %clean
 rm -rf $RPM_BUILD_ROOT
 
 %post
+%if %{use_systemd} == 0
 /sbin/chkconfig --add spamassassin
+%endif
+
+%if %{use_systemd}
+if [ $1 -eq 1 ] ; then 
+    # Initial installation 
+    /bin/systemctl daemon-reload >/dev/null 2>&1 || :
+fi
+%endif
 
 # -a and --auto-whitelist options were removed from 3.0.0
 # prevent service startup failure
@@ -270,17 +302,46 @@ if [ -f /etc/mail/spamassassin.cf ]; then
 fi
 
 %postun
+%if %{use_systemd} == 0
 if [ "$1" -ge "1" ]; then
     /sbin/service spamassassin condrestart > /dev/null 2>&1
 fi
 exit 0
+%endif
+
+%if %{use_systemd}
+/bin/systemctl daemon-reload >/dev/null 2>&1 || :
+if [ $1 -ge 1 ] ; then
+    # Package upgrade, not uninstall
+    /bin/systemctl try-restart spamassassin.service >/dev/null 2>&1 || :
+fi
+%endif
 
 %preun
+%if %{use_systemd} == 0
 if [ $1 = 0 ] ; then
     /sbin/service spamassassin stop >/dev/null 2>&1
     /sbin/chkconfig --del spamassassin
 fi
 exit 0
+%endif
+
+%if %{use_systemd}
+if [ $1 -eq 0 ] ; then
+    # Package removal, not upgrade
+    /bin/systemctl --no-reload disable spamassassin.service > /dev/null 2>&1 || :
+    /bin/systemctl stop spamassassin.service > /dev/null 2>&1 || :
+fi
+%endif
+
+%if %{use_systemd}
+%triggerun -- spamassassin < 3.3.2-2
+%{_bindir}/systemd-sysv-convert --save spamassassin >/dev/null 2>&1 ||:
+
+# Run these because the SysV package being removed won't do them
+/sbin/chkconfig --del spamassassin >/dev/null 2>&1 || :
+/bin/systemctl try-restart spamassassin.service >/dev/null 2>&1 || :
+%endif
 
 %changelog
 * Mon Jun 6 2011 Warren Togami <warren at togami.com> - 3.3.2-1


More information about the scm-commits mailing list