[packages/mailman] systemd and systemd-cronjobs support added
jajcus
jajcus at pld-linux.org
Fri Mar 10 15:22:33 CET 2017
commit e107c305ca004a1ab3a646a6dea001df435d6ec4
Author: Jacek Konieczny <j.konieczny at eggsoft.pl>
Date: Fri Mar 10 15:22:09 2017 +0100
systemd and systemd-cronjobs support added
rel. 2
cronjob-mailman-checkdbs.service | 6 +++++
cronjob-mailman-checkdbs.timer | 13 +++++++++++
cronjob-mailman-cull_bad_shunt.service | 6 +++++
cronjob-mailman-cull_bad_shunt.timer | 11 ++++++++++
cronjob-mailman-disabled.service | 6 +++++
cronjob-mailman-disabled.timer | 12 ++++++++++
cronjob-mailman-gate_news.service | 6 +++++
cronjob-mailman-gate_news.timer | 13 +++++++++++
cronjob-mailman-mailpasswds.service | 6 +++++
cronjob-mailman-mailpasswds.timer | 12 ++++++++++
cronjob-mailman-nightly_gzip.service | 6 +++++
cronjob-mailman-nightly_gzip.timer | 13 +++++++++++
cronjob-mailman-senddigests.service | 6 +++++
cronjob-mailman-senddigests.timer | 11 ++++++++++
mailman.service | 14 ++++++++++++
mailman.spec | 40 ++++++++++++++++++++++++++++++----
16 files changed, 177 insertions(+), 4 deletions(-)
---
diff --git a/mailman.spec b/mailman.spec
index 3a1d42e..054e200 100644
--- a/mailman.spec
+++ b/mailman.spec
@@ -2,7 +2,7 @@
# Conditional build:
%bcond_with umbrella_hack # break anonimization (for use with moderated umbrella list of moderated lists)
-%define rel 1
+%define rel 2
Summary: The GNU Mailing List Management System
Summary(es.UTF-8): El Sistema de Mantenimiento de listas de GNU
Summary(pl.UTF-8): System Zarządzania Listami Pocztowymi GNU
@@ -24,6 +24,21 @@ Source5: %{name}.logrotate
Source6: add_nonmembers
Source7: subscribe_list
Source8: %{name}.tmpfiles
+Source9: %{name}.service
+Source10: cronjob-mailman-checkdbs.timer
+Source11: cronjob-mailman-cull_bad_shunt.timer
+Source12: cronjob-mailman-disabled.timer
+Source13: cronjob-mailman-gate_news.timer
+Source14: cronjob-mailman-mailpasswds.timer
+Source15: cronjob-mailman-nightly_gzip.timer
+Source16: cronjob-mailman-senddigests.timer
+Source20: cronjob-mailman-checkdbs.service
+Source21: cronjob-mailman-cull_bad_shunt.service
+Source22: cronjob-mailman-disabled.service
+Source23: cronjob-mailman-gate_news.service
+Source24: cronjob-mailman-mailpasswds.service
+Source25: cronjob-mailman-nightly_gzip.service
+Source26: cronjob-mailman-senddigests.service
Patch0: %{name}-MM_FIND_GROUP_NAME.patch
Patch1: %{name}-dont-send-broken-reminder-ugly-hack.patch
Patch2: %{name}-mailmanctl-status.patch
@@ -47,7 +62,8 @@ BuildRequires: python-devel
BuildRequires: python-dns
BuildRequires: python-modules
BuildRequires: rpm-pythonprov
-BuildRequires: rpmbuild(macros) >= 1.234
+BuildRequires: rpmbuild(macros) >= 1.644
+BuildRequires: sed >= 4.0
Requires(post): /bin/hostname
Requires(post): grep
Requires(post,preun): /sbin/chkconfig
@@ -60,12 +76,13 @@ Requires(pre): /usr/bin/getgid
Requires(pre): /usr/sbin/groupadd
Requires(pre): /usr/sbin/useradd
Requires: /sbin/chkconfig
-Requires: crondaemon
+Requires: cronjobs
Requires: mailcap >= 2.3-5
Requires: python-dns
Requires: python-modules
Requires: rc-scripts
Requires: smtpdaemon
+Requires: systemd-units >= 38
Requires: webapps
Requires: webserver
Requires: webserver(indexfile)
@@ -223,7 +240,7 @@ install -p %{SOURCE6} %{SOURCE7} contrib
%install
rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT{/etc/{cron.d,logrotate.d,rc.d/init.d,sysconfig,smrsh},%{_mandir}} \
- $RPM_BUILD_ROOT{%{_sysconfdir},%{_logarchdir}} \
+ $RPM_BUILD_ROOT{%{_sysconfdir},%{_logarchdir},%{systemdunitdir}} \
$RPM_BUILD_ROOT/usr/lib/tmpfiles.d
export PYTHONPATH=$RPM_BUILD_ROOT%{_libdir}/%{name}:$RPM_BUILD_ROOT%{_libdir}/%{name}/pythonlib
@@ -248,6 +265,11 @@ install %{SOURCE8} $RPM_BUILD_ROOT/usr/lib/tmpfiles.d/%{name}.conf
cp -a cron/crontab.in $RPM_BUILD_ROOT/etc/cron.d/%{name}
+cp -p %{SOURCE9} $RPM_BUILD_ROOT%{systemdunitdir}
+cp -p %{SOURCE10} %{SOURCE11} %{SOURCE12} %{SOURCE13} %{SOURCE14} %{SOURCE15} %{SOURCE16} $RPM_BUILD_ROOT%{systemdunitdir}
+cp -p %{SOURCE20} %{SOURCE21} %{SOURCE22} %{SOURCE23} %{SOURCE24} %{SOURCE25} %{SOURCE26} $RPM_BUILD_ROOT%{systemdunitdir}
+sed -i -e 's#/usr/lib/mailman#%{_libdir}/mailman#g' $RPM_BUILD_ROOT%{systemdunitdir}/*
+
install -p contrib/{subscribe_list,add_nonmembers} $RPM_BUILD_ROOT%{_libdir}/%{name}/bin
ln -s %{_sysconfdir}/sitelist.cfg $RPM_BUILD_ROOT%{_var}/lib/mailman/data/sitelist.cfg
@@ -345,12 +367,14 @@ if [ ! -f %{_sysconfdir}/aliases ]; then
chmod 660 %{_sysconfdir}/aliases{,.db}
fi
%service mailman restart "Mailman Qrunner Daemon"
+%systemd_post mailman.service cronjob-mailman-checkdbs.timer cronjob-mailman-mailpasswds.timer cronjob-mailman-cull_bad_shunt.timer cronjob-mailman-nightly_gzip.timer cronjob-mailman-disabled.timer cronjob-mailman-senddigests.timer cronjob-mailman-gate_news.timer
%preun
if [ "$1" = "0" ]; then
%service mailman stop
/sbin/chkconfig --del mailman
fi
+%systemd_preun mailman.service cronjob-mailman-checkdbs.timer cronjob-mailman-mailpasswds.timer cronjob-mailman-cull_bad_shunt.timer cronjob-mailman-nightly_gzip.timer cronjob-mailman-disabled.timer cronjob-mailman-senddigests.timer cronjob-mailman-gate_news.timer
%postun
if [ "$1" = "0" ]; then
@@ -358,6 +382,7 @@ if [ "$1" = "0" ]; then
%groupremove mailman
%service -q crond restart
fi
+%systemd_reload
%triggerin -- apache1 < 1.3.37-3, apache1-base
%webapp_register apache %{_webapp}
@@ -445,6 +470,10 @@ rm -f /etc/httpd/httpd.conf/90_%{name}.conf
/usr/sbin/webapp register httpd %{_webapp}
%service -q httpd reload
+%triggerpostun -- mailman < 5:2.1.23-2
+%systemd_trigger mailman.service
+%systemd_service_enable cronjob-mailman-checkdbs.timer cronjob-mailman-mailpasswds.timer cronjob-mailman-cull_bad_shunt.timer cronjob-mailman-nightly_gzip.timer cronjob-mailman-disabled.timer cronjob-mailman-senddigests.timer cronjob-mailman-gate_news.timer
+
%files -f %{name}.lang
%defattr(644,root,root,755)
%doc BUGS FAQ NEWS README README.CONTRIB README.NETSCAPE README.USERAGENT TODO UPGRADING INSTALL
@@ -569,6 +598,9 @@ rm -f /etc/httpd/httpd.conf/90_%{name}.conf
%dir %{_piddir}
/usr/lib/tmpfiles.d/%{name}.conf
+%systemdunitdir/*.service
+%systemdunitdir/*.timer
+
%files sendmail
%defattr(644,root,root,755)
/etc/smrsh/%{name}
diff --git a/cronjob-mailman-checkdbs.service b/cronjob-mailman-checkdbs.service
new file mode 100644
index 0000000..4656ce7
--- /dev/null
+++ b/cronjob-mailman-checkdbs.service
@@ -0,0 +1,6 @@
+[Unit]
+Description=mailman checkdbs cronjob
+
+[Service]
+ExecStart=/usr/lib/mailman/cron/checkdbs
+User=mailman
diff --git a/cronjob-mailman-checkdbs.timer b/cronjob-mailman-checkdbs.timer
new file mode 100644
index 0000000..b36c994
--- /dev/null
+++ b/cronjob-mailman-checkdbs.timer
@@ -0,0 +1,13 @@
+[Unit]
+Description=mailman checkdbs cronjob timer
+
+[Timer]
+# At 8AM every day, mail reminders to admins as to pending requests.
+# They are less likely to ignore these reminders if they're mailed
+# early in the morning, but of course, this is local time... ;)
+OnCalendar=08:00
+
+[Install]
+WantedBy=cronjobs.target
+
+# vi: ft=systemd
diff --git a/cronjob-mailman-cull_bad_shunt.service b/cronjob-mailman-cull_bad_shunt.service
new file mode 100644
index 0000000..97ef9db
--- /dev/null
+++ b/cronjob-mailman-cull_bad_shunt.service
@@ -0,0 +1,6 @@
+[Unit]
+Description=mailman cull_bad_shunt cronjob
+
+[Service]
+ExecStart=/usr/lib/mailman/cron/cull_bad_shunt
+User=mailman
diff --git a/cronjob-mailman-cull_bad_shunt.timer b/cronjob-mailman-cull_bad_shunt.timer
new file mode 100644
index 0000000..fd84923
--- /dev/null
+++ b/cronjob-mailman-cull_bad_shunt.timer
@@ -0,0 +1,11 @@
+[Unit]
+Description=mailman cull_bad_shunt cronjob timer
+
+[Timer]
+# At 4:30AM daily, cull old entries from the 'bad' and 'shunt' queues.
+OnCalendar=04:30
+
+[Install]
+WantedBy=cronjobs.target
+
+# vi: ft=systemd
diff --git a/cronjob-mailman-disabled.service b/cronjob-mailman-disabled.service
new file mode 100644
index 0000000..ac7ecff
--- /dev/null
+++ b/cronjob-mailman-disabled.service
@@ -0,0 +1,6 @@
+[Unit]
+Description=mailman disabled cronjob
+
+[Service]
+ExecStart=/usr/lib/mailman/cron/disabled
+User=mailman
diff --git a/cronjob-mailman-disabled.timer b/cronjob-mailman-disabled.timer
new file mode 100644
index 0000000..8b7b567
--- /dev/null
+++ b/cronjob-mailman-disabled.timer
@@ -0,0 +1,12 @@
+[Unit]
+Description=mailman diabled cronjob timer
+
+[Timer]
+# At 9AM, send notifications to disabled members that are due to be
+# reminded to re-enable their accounts.
+OnCalendar=09:00
+
+[Install]
+WantedBy=cronjobs.target
+
+# vi: ft=systemd
diff --git a/cronjob-mailman-gate_news.service b/cronjob-mailman-gate_news.service
new file mode 100644
index 0000000..2a66283
--- /dev/null
+++ b/cronjob-mailman-gate_news.service
@@ -0,0 +1,6 @@
+[Unit]
+Description=mailman gate_news cronjob
+
+[Service]
+ExecStart=/usr/lib/mailman/cron/gate_news
+User=mailman
diff --git a/cronjob-mailman-gate_news.timer b/cronjob-mailman-gate_news.timer
new file mode 100644
index 0000000..4084897
--- /dev/null
+++ b/cronjob-mailman-gate_news.timer
@@ -0,0 +1,13 @@
+[Unit]
+Description=mailman gate_news cronjob timer
+
+[Timer]
+# Every 5 mins, try to gate news to mail. You can comment this one out
+# if you don't want to allow gating, or don't have any going on right now,
+# or want to exclusively use a callback strategy instead of polling.
+OnCalendar=*:00/5
+
+[Install]
+WantedBy=cronjobs.target
+
+# vi: ft=systemd
diff --git a/cronjob-mailman-mailpasswds.service b/cronjob-mailman-mailpasswds.service
new file mode 100644
index 0000000..84374a3
--- /dev/null
+++ b/cronjob-mailman-mailpasswds.service
@@ -0,0 +1,6 @@
+[Unit]
+Description=mailman mailpasswds cronjob
+
+[Service]
+ExecStart=/usr/lib/mailman/cron/mailpasswds
+User=mailman
diff --git a/cronjob-mailman-mailpasswds.timer b/cronjob-mailman-mailpasswds.timer
new file mode 100644
index 0000000..bd5ab6d
--- /dev/null
+++ b/cronjob-mailman-mailpasswds.timer
@@ -0,0 +1,12 @@
+[Unit]
+Description=mailman diabled cronjob timer
+
+[Timer]
+# 5 AM on the first of each month, mail out password reminders.
+OnCalendar=*-*-01 05:00
+Persistent=true
+
+[Install]
+WantedBy=cronjobs.target
+
+# vi: ft=systemd
diff --git a/cronjob-mailman-nightly_gzip.service b/cronjob-mailman-nightly_gzip.service
new file mode 100644
index 0000000..dd42df0
--- /dev/null
+++ b/cronjob-mailman-nightly_gzip.service
@@ -0,0 +1,6 @@
+[Unit]
+Description=mailman nightly_gzip cronjob
+
+[Service]
+ExecStart=/usr/lib/mailman/cron/nightly_gzip
+User=mailman
diff --git a/cronjob-mailman-nightly_gzip.timer b/cronjob-mailman-nightly_gzip.timer
new file mode 100644
index 0000000..98b1ea4
--- /dev/null
+++ b/cronjob-mailman-nightly_gzip.timer
@@ -0,0 +1,13 @@
+[Unit]
+Description=mailman nightly_gzip cronjob timer
+
+[Timer]
+# At 3:27am every night, regenerate the gzip'd archive file. Only
+# turn this on if the internal archiver is used and
+# GZIP_ARCHIVE_TXT_FILES is false in mm_cfg.py
+OnCalendar=03:27
+
+[Install]
+WantedBy=cronjobs.target
+
+# vi: ft=systemd
diff --git a/cronjob-mailman-senddigests.service b/cronjob-mailman-senddigests.service
new file mode 100644
index 0000000..0ae6881
--- /dev/null
+++ b/cronjob-mailman-senddigests.service
@@ -0,0 +1,6 @@
+[Unit]
+Description=mailman senddigests cronjob
+
+[Service]
+ExecStart=/usr/lib/mailman/cron/senddigests
+User=mailman
diff --git a/cronjob-mailman-senddigests.timer b/cronjob-mailman-senddigests.timer
new file mode 100644
index 0000000..95de150
--- /dev/null
+++ b/cronjob-mailman-senddigests.timer
@@ -0,0 +1,11 @@
+[Unit]
+Description=mailman senddigests cronjob timer
+
+[Timer]
+# Noon, mail digests for lists that do periodic as well as threshhold delivery.
+OnCalendar=12:00
+
+[Install]
+WantedBy=cronjobs.target
+
+# vi: ft=systemd
diff --git a/mailman.service b/mailman.service
new file mode 100644
index 0000000..0570ab5
--- /dev/null
+++ b/mailman.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=mailman qrunner daemon
+After=network.target
+
+[Service]
+Type=forking
+ExecStart=/usr/lib/mailman/bin/mailmanctl -q -s -u start
+ExecStop=/usr/lib/mailman/bin/mailmanctl -u stop
+ExecReload=/usr/lib/mailman/bin/mailmanctl -u reopen
+Restart=on-failure
+User=mailman
+
+[Install]
+WantedBy=multi-user.target
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/mailman.git/commitdiff/e107c305ca004a1ab3a646a6dea001df435d6ec4
More information about the pld-cvs-commit
mailing list