[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