[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