[cyrus-imapd] now using systemd

Michal Hlavinka mhlavink at fedoraproject.org
Mon Apr 4 15:10:24 UTC 2011


commit 41d9d318b6e8e54313695b261a07c58dce84e8c4
Author: Michal Hlavinka <mhlavink at redhat.com>
Date:   Mon Apr 4 17:10:19 2011 +0200

    now using systemd

 cyr_systemd_helper  |   38 ++++++++++++++++++++++++++++++++++++++
 cyrus-imapd.service |   13 +++++++++++++
 cyrus-imapd.spec    |   44 +++++++++++++++++++++++++++++++-------------
 3 files changed, 82 insertions(+), 13 deletions(-)
---
diff --git a/cyr_systemd_helper b/cyr_systemd_helper
new file mode 100755
index 0000000..2d9ad56
--- /dev/null
+++ b/cyr_systemd_helper
@@ -0,0 +1,38 @@
+#!/bin/sh
+# get_config [config default]
+# extracts config option from config file
+get_config() {
+  if conf=$(grep "^$1" /etc/imapd.conf); then
+    echo $conf | cut -d: -f2
+  else
+    echo $2
+  fi
+}
+
+CONFIGDIRECTORY=$(get_config configdirectory /var/lib/imap)
+RETVAL=0
+
+start() {
+      cd $CONFIGDIRECTORY
+      runuser - cyrus -s /bin/sh -c "umask 166 ; /usr/lib/cyrus-imapd/cvt_cyrusdb_all > ${CONFIGDIRECTORY}/rpm/db_import.log 2>&1" < /dev/null
+      RETVAL=$?
+}
+
+stop() {
+      cd $CONFIGDIRECTORY
+      runuser - cyrus -s /bin/sh -c "umask 166 ; /usr/lib/cyrus-imapd/cvt_cyrusdb_all export > ${CONFIGDIRECTORY}/rpm/db_export.log 2>&1" < /dev/null
+      RETVAL=$?
+}
+
+case "$1" in
+  start)
+    start
+    ;;
+  stop)
+    stop
+    ;;
+  *)
+    ;;
+esac
+
+exit $RETVAL
diff --git a/cyrus-imapd.service b/cyrus-imapd.service
new file mode 100644
index 0000000..4675ec1
--- /dev/null
+++ b/cyrus-imapd.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Cyrus-imapd IMAP/POP3 email server
+After=local-fs.target network.target
+
+[Service]
+Type=simple
+EnvironmentFile=/etc/sysconfig/cyrus-imapd
+ExecStartPre=/usr/lib/cyrus-imapd/cyr_systemd_helper start
+ExecStart=/usr/lib/cyrus-imapd/cyrus-master $CYRUSOPTIONS
+ExecStopPost=/usr/lib/cyrus-imapd/cyr_systemd_helper stop
+
+[Install]
+WantedBy=multi-user.target
diff --git a/cyrus-imapd.spec b/cyrus-imapd.spec
index ea092e9..37cf687 100644
--- a/cyrus-imapd.spec
+++ b/cyrus-imapd.spec
@@ -1,6 +1,6 @@
 Name: cyrus-imapd
 Version: 2.4.7
-Release: 1%{?dist}
+Release: 2%{?dist}
 
 %define ssl_pem_file %{_sysconfdir}/pki/%{name}/%{name}.pem
 
@@ -22,13 +22,16 @@ Source2: cyrus-imapd.imap-2.3.x-conf
 Source3: cyrus-imapd.pam-config
 Source4: http://email.uoa.gr/projects/cyrus/autocreate/README.autocreate-cyrus-2.3
 Source5: http://email.uoa.gr/projects/cyrus/autosievefolder/README.autosievefolder
-Source6: cyrus-imapd.init
 Source7: cyrus-imapd.sysconfig
 Source8: cyrus-imapd.cvt_cyrusdb_all
 Source9: cyrus-imapd.magic
 Source10: cyrus-imapd.cron-daily
 Source11: README.rpm
 
+#systemd support
+Source12: cyrus-imapd.service
+Source13: cyr_systemd_helper
+
 # inclusion requested:
 # http://bugzilla.cyrusimap.org/bugzilla3/show_bug.cgi?id=3182
 # http://bugzilla.cyrusimap.org/bugzilla3/show_bug.cgi?id=3212
@@ -59,9 +62,9 @@ BuildRequires: krb5-devel
 BuildRequires: net-snmp-devel
 BuildRequires: transfig
 
-Requires(post): e2fsprogs, chkconfig, initscripts, perl, grep, coreutils, findutils
-Requires(preun): chkconfig, initscripts, coreutils
-Requires(postun): initscripts
+Requires(post):   e2fsprogs, perl, grep, coreutils, findutils, systemd-units
+Requires(preun):  systemd-units, coreutils
+Requires(postun): systemd-units
 
 Requires: %{name}-utils = %{version}-%{release}
 Requires: file, db4-utils
@@ -229,10 +232,12 @@ install -p -m 644 %{SOURCE3}    %{buildroot}%{_sysconfdir}/pam.d/lmtp
 install -p -m 644 %{SOURCE3}    %{buildroot}%{_sysconfdir}/pam.d/nntp
 install -p -m 644 %{SOURCE3}    %{buildroot}%{_sysconfdir}/pam.d/csync
 install -p -m 644 %{SOURCE1}    %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
-install -p -m 755 %{SOURCE6}   %{buildroot}%{_sysconfdir}/rc.d/init.d/%{name}
 install -p -m 644 %{SOURCE7}   %{buildroot}%{_sysconfdir}/sysconfig/%{name}
 install -p -m 755 %{SOURCE10}   %{buildroot}%{_sysconfdir}/cron.daily/%{name}
 
+install -p -D -m 644 %{SOURCE12}   %{buildroot}/lib/systemd/system/cyrus-imapd.service
+install -p -D -m 755 %{SOURCE13}   %{buildroot}%{_cyrexecdir}/cyr_systemd_helper
+
 # Cleanup of doc dir
 find doc perl -name CVS -type d -prune -exec rm -rf {} \;
 find doc perl -name .cvsignore -type f -exec rm -f {} \;
@@ -296,7 +301,10 @@ rm -rf %{buildroot}
   -G saslauth -s /sbin/nologin -u %{uid} -r %{_cyrususer} 2> /dev/null || :
 
 %post
-/sbin/chkconfig --add %{name}
+/sbin/service cyrus-imapd condrestart >/dev/null 2>&1 ||:
+if [ $1 -eq 1 ]; then
+        /bin/systemctl enable cyrus-imapd.service >/dev/null 2>&1 || :
+fi
 
 # Force synchronous updates, usually only on ext2 filesystems
 for i in %{_var}/lib/imap/{user,quota} %{_var}/spool/imap
@@ -328,23 +336,28 @@ popd
 fi
 
 %preun
-if [ $1 = 0 ]; then
-  /sbin/service %{name} stop >/dev/null 2>&1 || :
-  /sbin/chkconfig --del %{name}
+if [ $1 -eq 0 ] ; then
+        # Package removal, not upgrade
+        /bin/systemctl disable cyrus-imapd.service >/dev/null 2>&1 || :
+        /bin/systemctl stop cyrus-imapd.service > /dev/null 2>&1 || :
 fi
 
 %postun
-if [ $1 != 0 ]; then
-  /sbin/service %{name} condrestart >/dev/null 2>&1 || :
+/bin/systemctl daemon-reload >/dev/null 2>&1 || :
+if [ $1 -ge 1 ] ; then
+        # Package upgrade, not uninstall
+        /bin/systemctl try-restart cyrus-imapd.service >/dev/null 2>&1 || :
 fi
 
+%triggerun -- smartmontools < 2.4.7-2
+/sbin/chkconfig smartd && /bin/systemctl enable smartd.service >/dev/null 2>&1 || :
+
 %files
 %defattr(-,root,root,-)
 %doc COPYRIGHT README
 %doc doc/*
 %config(noreplace) %{_sysconfdir}/cyrus.conf
 %config(noreplace) %{_sysconfdir}/imapd.conf
-%{_sysconfdir}/rc.d/init.d/%{name}
 %config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
 %config(noreplace) %{_sysconfdir}/sysconfig/%{name}
 %config(noreplace) %{_sysconfdir}/pam.d/pop
@@ -355,7 +368,9 @@ fi
 %config(noreplace) %{_sysconfdir}/pam.d/csync
 %config(noreplace) %{_sysconfdir}/pam.d/nntp
 %{_sysconfdir}/cron.daily/%{name}
+/lib/systemd/system/cyrus-imapd.service
 %dir %{_cyrexecdir}
+%{_cyrexecdir}/cyr_systemd_helper
 %{_cyrexecdir}/arbitron
 %{_cyrexecdir}/arbitronsort.pl
 %{_cyrexecdir}/chk_cyrus
@@ -474,6 +489,9 @@ fi
 %{_mandir}/man1/*
 
 %changelog
+* Mon Apr 04 2011 Michal Hlaivnka <mhlavink at redhat.com> - 2.4.7-2
+- now using systemd
+
 * Thu Mar 31 2011 Michal Hlavinka <mhlavink at redhat.com> - 2.4.7-1
 - updated to 2.4.7
 


More information about the scm-commits mailing list