[mrtg/f16] add systemd support

Tom Callaway spot at fedoraproject.org
Thu Sep 8 18:56:23 UTC 2011


commit 0850604d3e4e76d3fc4cecc087e0cd846875c62e
Author: Tom "spot" Callaway <tcallawa at redhat.com>
Date:   Thu Sep 8 14:56:10 2011 -0400

    add systemd support

 mrtg.service |   36 ++++++++++++++++++++++++++++++++++++
 mrtg.spec    |   53 ++++++++++++++++++++++++++++++++++-------------------
 mrtg.timer   |   20 ++++++++++++++++++++
 3 files changed, 90 insertions(+), 19 deletions(-)
---
diff --git a/mrtg.service b/mrtg.service
new file mode 100644
index 0000000..e480970
--- /dev/null
+++ b/mrtg.service
@@ -0,0 +1,36 @@
+# To customize, copy this file to /etc/systemd/system and edit there
+#
+# This unit facilitates starting of MRTG.  There are 2 options of
+# how to run MRTG:
+# - as a daemon (preferred); in this case please put
+#   RunAsDaemon: yes in mrtg.conf (or use --daemon switch)
+# - periodically - please see and enable mrtg.timer
+#   Periodic settings need Type=oneshot set here
+#
+# Other recommended settings in mrtg.cfg for daemon mode:
+# NoDetach: yes 
+# If you set this, change below Type=simple
+#
+# Please disable /etc/crond.d/mrtg job when using this unit!
+#
+# do not enable both mrtg-as-a-daemon and timer at the same time
+
+[Unit]
+Description=Multi-router Traffic Grapher
+After=syslog.target
+
+[Service]
+Environment=LANG=C
+ExecStart=/usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok
+# Type= settings cheatsheet:
+# - RunAsDaemon: yes; NoDetach: yes :
+#Type=simple
+# - RunAsDaemon: yes; NoDetach: no :
+#Type=forking
+# - RunAsDaemon: no; (periodic invocation) :
+#Type=oneshot
+Type=simple
+StandardOutput=syslog
+
+[Install]
+WantedBy=multi-user.target
diff --git a/mrtg.spec b/mrtg.spec
index ff9bd5e..9bd5d06 100644
--- a/mrtg.spec
+++ b/mrtg.spec
@@ -6,26 +6,27 @@
 Summary:   Multi Router Traffic Grapher
 Name:      mrtg
 Version:   2.17.2
-Release:   2%{?dist}
+Release:   4%{?dist}
 URL:       http://oss.oetiker.ch/mrtg/
 Source0:   http://oss.oetiker.ch/mrtg/pub/mrtg-%{version}.tar.gz
 Source1:   http://oss.oetiker.ch/mrtg/pub/mrtg-%{version}.tar.gz.md5
 Source2:   mrtg.cfg
 Source3:   filter-requires-mrtg.sh
-Source4:   mrtg.crond.in
 Source5:   mrtg-httpd.conf
 Source6:   filter-provides-mrtg.sh
 Source7:   mrtg.tmpfiles
+Source8:   mrtg.service
+Source9:   mrtg.timer
 Patch0:    mrtg-2.15.0-lib64.patch
 License:   GPLv2+
 Group:     Applications/Internet
-Requires:  vixie-cron
-Requires(post): /sbin/service
-Requires(postun): /sbin/service
+Requires(post): systemd-units
+Requires(preun): systemd-units
+Requires(postun): systemd-units
 Requires:  perl-Socket6 perl-IO-Socket-INET6
 Requires:  gd
-Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 BuildRequires: gd-devel, libpng-devel
+BuildRequires: systemd-units
 
 %global __find_requires %{SOURCE3}
 %global __find_provides %{SOURCE6}
@@ -59,7 +60,6 @@ rm -rf   $RPM_BUILD_ROOT
 make install DESTDIR=$RPM_BUILD_ROOT
 
 mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/mrtg
-mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/cron.d
 mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/mrtg
 mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lock/mrtg
 mkdir -p $RPM_BUILD_ROOT%{contentdir}
@@ -69,10 +69,6 @@ install -m 644 images/*   $RPM_BUILD_ROOT%{contentdir}/
 sed 's, at CONTENTDIR@,%{contentdir},g; s, at LIBDIR@,%{_localstatedir}/lib/mrtg,g' \
     %{SOURCE2} > $RPM_BUILD_ROOT%{_sysconfdir}/mrtg/mrtg.cfg
 chmod 644 $RPM_BUILD_ROOT%{_sysconfdir}/mrtg/mrtg.cfg
-sed -e 's, at bindir@,%{_bindir},g; s, at sysconfdir@,%{_sysconfdir},g;' \
-    -e 's, at localstatedir@,%{_localstatedir},g' %{SOURCE4} \
-    > $RPM_BUILD_ROOT%{_sysconfdir}/cron.d/mrtg
-chmod 644 $RPM_BUILD_ROOT%{_sysconfdir}/cron.d/mrtg
 
 install -m 644 %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/httpd/conf.d/mrtg.conf
 
@@ -80,6 +76,11 @@ install -m 644 %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/httpd/conf.d/mrtg.conf
     install -p -D -m 644 %{SOURCE7} $RPM_BUILD_ROOT/%{_sysconfdir}/tmpfiles.d/mrtg.conf
 %endif
 
+# install systemd files
+mkdir -p $RPM_BUILD_ROOT/lib/systemd/system
+install -p -m 644 %{SOURCE8} $RPM_BUILD_ROOT%{_unitdir}/mrtg.service
+install -p -m 644 %{SOURCE9} $RPM_BUILD_ROOT%{_unitdir}/mrtg.timer
+
 # Add mrtg-traffic-sum here when upstream decides to install it
 for i in mrtg cfgmaker indexmaker mrtg-traffic-sum; do
     sed -i 's;@@lib@@;%{_lib};g' "$RPM_BUILD_ROOT"%{_bindir}/"$i"
@@ -87,28 +88,32 @@ done
 
 sed -i 's;@@lib@@;%{_lib};g' "$RPM_BUILD_ROOT"%{_mandir}/man1/*.1
 
-# Tell crond to reload its configuration.
 %post
 install -d -m 0755 -o root -g root /var/lock/mrtg
-/sbin/service crond condrestart 2>&1 > /dev/null || :
+if [ $1 -eq 1 ] ; then 
+    # Initial installation 
+    /bin/systemctl daemon-reload >/dev/null 2>&1 || :
+fi
 
 %preun
 if [ $1 -eq 0 ]; then
   rm -rf /var/lock/mrtg
+    # Package removal, not upgrade
+    /bin/systemctl --no-reload disable mrtg.service > /dev/null 2>&1 || :
+    /bin/systemctl stop mrtg.service > /dev/null 2>&1 || :
 fi
 
 %postun
-/sbin/service crond condrestart 2>&1 > /dev/null || :
-
-%clean
-rm -rf $RPM_BUILD_ROOT
+/bin/systemctl daemon-reload >/dev/null 2>&1 || :
+if [ $1 -ge 1 ] ; then
+    # Package upgrade, not uninstall
+    /bin/systemctl try-restart mrtg.service >/dev/null 2>&1 || :
+fi
 
 %files
-%defattr(-,root,root,-)
 %doc contrib CHANGES COPYING COPYRIGHT README THANKS
 %dir %{_sysconfdir}/mrtg
 %config(noreplace) %{_sysconfdir}/mrtg/mrtg.cfg
-%config(noreplace) %{_sysconfdir}/cron.d/mrtg
 %config(noreplace) %{_sysconfdir}/httpd/conf.d/mrtg.conf
 %{contentdir}
 %{_bindir}/*
@@ -122,8 +127,18 @@ rm -rf $RPM_BUILD_ROOT
     %config(noreplace) %{_sysconfdir}/tmpfiles.d/mrtg.conf
 %endif
 %ghost /var/lock/mrtg
+%{_unitdir}/mrtg.service
+%{_unitdir}/mrtg.timer
 
 %changelog
+* Thu Sep  8 2011 Tom Callaway <spot at fedoraproject.org> - 2.17.2-4
+- add missing systemd scriptlets
+- drop cron.d config (systemd handles it now)
+
+* Wed Aug 24 2011 Vitezslav Crhonek <vcrhonek at redhat.com> - 2.17.2-3
+- Ship systemd files
+  Resolves: #696147
+
 * Thu Mar 24 2011 Vitezslav Crhonek <vcrhonek at redhat.com> - 2.17.2-2
 - Use %%ghost for /var/lock/mrtg
   Resolves: #656629
diff --git a/mrtg.timer b/mrtg.timer
new file mode 100644
index 0000000..814627c
--- /dev/null
+++ b/mrtg.timer
@@ -0,0 +1,20 @@
+# To customize, copy this file to /etc/systemd/system and edit there
+#
+# You can use this unit to periodically run mrtg.service.
+# Only enable if you do not want to run mrtg as a daemon.
+# Starting mrtg.timer while mrtg.service is running as a daemon has no point.
+#
+# Please disable /etc/crond.d/mrtg job when using this unit!
+#
+# Default is to run mrtg.service every 5 minutes, starting
+# 1 minute after system boot.
+
+[Unit]
+Description=periodic invocation of MRTG
+
+[Timer]
+OnBootSec=1m
+OnUnitActiveSec=5m
+
+[Install]
+WantedBy=multi-user.target


More information about the scm-commits mailing list