[packages/systemd-cronjobs] new package

jajcus jajcus at pld-linux.org
Thu Mar 9 14:48:40 CET 2017


commit cb6b2fe094bf1e73c11de2f42a52218436c8ea4b
Author: Jacek Konieczny <j.konieczny at eggsoft.pl>
Date:   Thu Mar 9 14:47:48 2017 +0100

    new package
    
    Proof of concept for the idea

 README                  | 50 ++++++++++++++++++++++++++++++
 cronjob-daily.service   |  5 +++
 cronjob-daily.timer     | 11 +++++++
 cronjob-hourly.service  |  5 +++
 cronjob-hourly.timer    | 11 +++++++
 cronjob-monthly.service |  5 +++
 cronjob-monthly.timer   | 11 +++++++
 cronjob-weekly.service  |  5 +++
 cronjob-weekly.timer    | 11 +++++++
 cronjobs.target         |  8 +++++
 systemd-cronjobs.spec   | 81 +++++++++++++++++++++++++++++++++++++++++++++++++
 11 files changed, 203 insertions(+)
---
diff --git a/systemd-cronjobs.spec b/systemd-cronjobs.spec
new file mode 100644
index 0000000..5c05d46
--- /dev/null
+++ b/systemd-cronjobs.spec
@@ -0,0 +1,81 @@
+Summary:	crond-like services for systemd
+Summary(pl.UTF-8):	Usługi typu crond dla systemd
+Name:		systemd-cronjobs
+Version:	0.1
+Release:	0.1
+License:	GPL v2
+Group:		Base
+Source0:	cronjobs.target
+Source1:	cronjob-hourly.timer
+Source2:	cronjob-hourly.service
+Source3:	cronjob-daily.timer
+Source4:	cronjob-daily.service
+Source5:	cronjob-weekly.timer
+Source6:	cronjob-weekly.service
+Source7:	cronjob-monthly.timer
+Source8:	cronjob-monthly.service
+Source9:	README
+URL:		http://pld-linux.org/
+Requires:	systemd-init
+Provides:	cronjobs
+Provides:	group(crontab)
+Obsoletes:	crondaemon
+Obsoletes:	cronjobs
+Obsoletes:	crontabs
+BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+
+%description
+crond-like services for systemd.
+
+%description -l pl.UTF-8
+Usługi typu crond dla systemd.
+
+%prep
+%setup -q -cT
+
+%build
+
+%install
+rm -rf $RPM_BUILD_ROOT
+install -d $RPM_BUILD_ROOT%{systemdunitdir} \
+	$RPM_BUILD_ROOT%{_sysconfdir}/cron.{hourly,daily,weekly,monthly}
+
+cp -p %{SOURCE0} %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} \
+	%{SOURCE5} %{SOURCE6} %{SOURCE7} %{SOURCE8} \
+	$RPM_BUILD_ROOT%{systemdunitdir}
+
+cp -p %{SOURCE9} .
+
+%post
+# the message displayed by systemd_post would be misleading
+# onlyt cronjobs.target needs to be started manually
+export SYSTEMD_LOG_LEVEL=warning SYSTEMD_LOG_TARGET=syslog
+/bin/systemd_booted && /bin/systemctl --quiet daemon-reload || :
+/bin/systemctl preset --preset-mode=enable-only cronjob-hourly.timer cronjob-daily.timer cronjob-weekly.timer cronjob-monthly.timer cronjobs.target
+/bin/systemd_booted && echo 'Run "/bin/systemctl start cronjobs.target" to start systemd cron jobs.' || :
+
+%pre
+%groupadd -g 117 -r -f crontab
+
+%preun
+%systemd_preun cronjob-hourly.timer cronjob-daily.timer cronjob-weekly.timer cronjob-monthly.timer cronjobs.target
+
+%postun
+if [ "$1" = "0" ]; then
+	%groupremove crontab
+fi
+%systemd_reload
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(644,root,root,755)
+%doc README
+%attr(750,root,crontab) %dir /etc/cron.daily
+%attr(750,root,crontab) %dir /etc/cron.hourly
+%attr(750,root,crontab) %dir /etc/cron.monthly
+%attr(750,root,crontab) %dir /etc/cron.weekly
+%{systemdunitdir}/cronjobs.target
+%{systemdunitdir}/cronjob-*.timer
+%{systemdunitdir}/cronjob-*.service
diff --git a/README b/README
new file mode 100644
index 0000000..ed3814b
--- /dev/null
+++ b/README
@@ -0,0 +1,50 @@
+systemd-cronjobs - crond replacement using systemd timers
+=========================================================
+
+The purpose of this package is to replace any crond package in PLD with much
+more powerful systemd timers, while not forcing them for every PLD
+installation.
+
+The package does not aim to be backward-compatible with existing crontabs.
+This could be done with some wrapper or systemd generator, but the cron jobs
+would be still designed for crond and just extra overhead would be added under
+systemd.
+
+Guarding any crontab entry with /sbin/systemd_booted is an extra overhead for
+non-systemd systems.
+
+The idea is that PLD packages can provide both crontabs and systemd timers,
+like they provide systemd units and init.d startup scripts. When a crond is
+installed, the crontabs would be used, when the new 'systemd-cronjobs' package
+is installed, then the systemd timers will be used.
+
+systemd-cronjobs obsoletes all cron daemons, so it can be used when no crond
+services are required in the system – neither by any of installed packages,
+nor by users.
+
+Packaging cronjobs
+------------------
+
+A package, to be compatible both with crond and systemd-cronjobs, should
+'Require: cronjobs' (instead of 'crondaemon' or 'crontabs') and provide both
+a crontab and a set of two systemd units:
+
+cronjob-%{name}.timer
+cronjob-%{name}.service
+
+The first one defines the schedule and should be WantedBy cronjobs.target (not
+multi-user.target, so it is used only when crond is not installed). The other
+defines how the service should be started each time the timer fires.
+
+The usual %systemd_{post,preun,reload} macros should be used in
+%post/%preun/%postun for the cronjob-%{name}.timer unit.
+
+For packages that do not have own crontabs, but just drop a script into
+/etc/cron.{hourly,daily,weekly,monthly} directory the only required change is
+the 'Require: cronjobs' dependency.
+
+Packaging cron daemons
+----------------------
+
+Cron daemon packages should Provide and Obsolete 'cronjobs' in addition to
+'crondaemon' and 'crontabs'.
diff --git a/cronjob-daily.service b/cronjob-daily.service
new file mode 100644
index 0000000..26b02f4
--- /dev/null
+++ b/cronjob-daily.service
@@ -0,0 +1,5 @@
+[Unit]
+Description=Daily cron jobs
+
+[Service]
+ExecStart=/bin/run-parts /etc/cron.daily
diff --git a/cronjob-daily.timer b/cronjob-daily.timer
new file mode 100644
index 0000000..fec4eff
--- /dev/null
+++ b/cronjob-daily.timer
@@ -0,0 +1,11 @@
+[Unit]
+Description=Daily cron jobs
+
+[Timer]
+OnCalendar=daily
+Persistent=true
+
+[Install]
+WantedBy=cronjobs.target
+
+# vi: ft=systemd
diff --git a/cronjob-hourly.service b/cronjob-hourly.service
new file mode 100644
index 0000000..b7dde87
--- /dev/null
+++ b/cronjob-hourly.service
@@ -0,0 +1,5 @@
+[Unit]
+Description=Hourly cron jobs
+
+[Service]
+ExecStart=/bin/run-parts /etc/cron.hourly
diff --git a/cronjob-hourly.timer b/cronjob-hourly.timer
new file mode 100644
index 0000000..57df8c4
--- /dev/null
+++ b/cronjob-hourly.timer
@@ -0,0 +1,11 @@
+[Unit]
+Description=Hourly cron jobs
+
+[Timer]
+OnCalendar=hourly
+Persistent=true
+
+[Install]
+WantedBy=cronjobs.target
+
+# vi: ft=systemd
diff --git a/cronjob-monthly.service b/cronjob-monthly.service
new file mode 100644
index 0000000..9069e48
--- /dev/null
+++ b/cronjob-monthly.service
@@ -0,0 +1,5 @@
+[Unit]
+Description=Monthly cron jobs
+
+[Service]
+ExecStart=/bin/run-parts /etc/cron.monthly
diff --git a/cronjob-monthly.timer b/cronjob-monthly.timer
new file mode 100644
index 0000000..ad884ca
--- /dev/null
+++ b/cronjob-monthly.timer
@@ -0,0 +1,11 @@
+[Unit]
+Description=Monthly cron jobs
+
+[Timer]
+OnCalendar=monthly
+Persistent=true
+
+[Install]
+WantedBy=cronjobs.target
+
+# vi: ft=systemd
diff --git a/cronjob-weekly.service b/cronjob-weekly.service
new file mode 100644
index 0000000..7cec461
--- /dev/null
+++ b/cronjob-weekly.service
@@ -0,0 +1,5 @@
+[Unit]
+Description=Weekly cron jobs
+
+[Service]
+ExecStart=/bin/run-parts /etc/cron.weekly
diff --git a/cronjob-weekly.timer b/cronjob-weekly.timer
new file mode 100644
index 0000000..bd1588a
--- /dev/null
+++ b/cronjob-weekly.timer
@@ -0,0 +1,11 @@
+[Unit]
+Description=Weekly cron jobs
+
+[Timer]
+OnCalendar=weekly
+Persistent=true
+
+[Install]
+WantedBy=cronjobs.target
+
+# vi: ft=systemd
diff --git a/cronjobs.target b/cronjobs.target
new file mode 100644
index 0000000..e7486cb
--- /dev/null
+++ b/cronjobs.target
@@ -0,0 +1,8 @@
+[Unit]
+Description=System cron jobs
+Before=multi-user.target
+
+[Install]
+WantedBy=multi-user.target
+
+# vi: ft=systemd
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/systemd-cronjobs.git/commitdiff/cb6b2fe094bf1e73c11de2f42a52218436c8ea4b



More information about the pld-cvs-commit mailing list