Based on the BZ patch, with some modifications: - got rid of (now unused) yum-cron.sysvinit
- added BuildRequires: systemd-units, as recommended on https://fedoraproject.org/wiki/PackagingDrafts:SystemdClarification#Packaging - also updated yum-cron/Makefile RPMs have built fine in rawhide, but I'm not sure this patch is 100% correct, especially if hardcoding yum-cron.service path in Makefile is ok: +install -D -m 644 yum-cron.service $(DESTDIR)/usr/lib/systemd/system/yum-cron.service Is there a way to expand ${_unitdir} in Makefiles? --- yum-cron/Makefile | 2 +- yum-cron/yum-cron.service | 10 +++++ yum-cron/yum-cron.sysvinit | 105 --------------------------------------------- yum.spec | 49 ++++----------------- 4 files changed, 19 insertions(+), 147 deletions(-) create mode 100644 yum-cron/yum-cron.service delete mode 100755 yum-cron/yum-cron.sysvinit diff --git a/yum-cron/Makefile b/yum-cron/Makefile index 1a68a3c..0b68d37 100644 --- a/yum-cron/Makefile +++ b/yum-cron/Makefile @@ -11,5 +11,5 @@ install: # Install yum-update.cron as 0yum-update.cron so it runs before items like # manpage update, mlocate, and prelink install -D -m 755 yum-update.cron.sh $(DESTDIR)/etc/cron.daily/0yum-update.cron - install -D -m 755 yum-cron.sysvinit $(DESTDIR)/etc/rc.d/init.d/yum-cron + install -D -m 644 yum-cron.service $(DESTDIR)/usr/lib/systemd/system/yum-cron.service install -D -m 755 yum-cron.py $(DESTDIR)/usr/sbin/yum-cron diff --git a/yum-cron/yum-cron.service b/yum-cron/yum-cron.service new file mode 100644 index 0000000..534d9b0 --- /dev/null +++ b/yum-cron/yum-cron.service @@ -0,0 +1,10 @@ +[Unit] +Description=Run automatic yum updates as a cron job + +[Service] +Type=simple +ExecStart=/bin/touch /var/lock/subsys/yum-cron +ExecStop=/bin/rm -f /var/lock/subsys/yum-cron + +[Install] +WantedBy=multi-user.target diff --git a/yum-cron/yum-cron.sysvinit b/yum-cron/yum-cron.sysvinit deleted file mode 100755 index 7b44d5e..0000000 --- a/yum-cron/yum-cron.sysvinit +++ /dev/null @@ -1,105 +0,0 @@ -#!/bin/bash -# -# yum-cron Enable or disable scheduled yum system updates. -# -# chkconfig: - 50 01 -# -# description: This controls whether yum-cron runs. If this service is \ -# off, the yum-cron scripts in /etc/cron.daily exit \ -# immediately; otherwise, they download and/or apply package \ -# updates as configured in /etc/yum/yum-cron.conf. -# processname: yum-cron -# - -# source function library -. /etc/rc.d/init.d/functions -lockfile=/var/lock/subsys/yum-cron - -# This is generated by /usr/sbin/yum-cron and will exist when that script -# is running and not otherwise. -pidfile=/var/lock/yum-cron.pid -SERVICE_WAITS=yes - -RETVAL=0 - -start() { - echo -n $"Enabling scheduled yum updates: " - # The cron script exits silently if this file doesn't exist. - touch "$lockfile" && success || failure - RETVAL=$? - echo -} - -stop() { - # Disabling this is just removing the so-called lock file. But we - # also have logic to delay shutdown if a transaction is in-progress. - # All that affects is the exit of _this_ script, which may be - # waited on by other things in the shutdown process. - echo -n $"Disabling scheduled yum updates: " - if [ "$SERVICE_WAITS" = "yes" ]; then - # if SERVICE_WAITS is yes, we check for an active pid - # file and recheck in 5 second increments up to - # SERVICE_WAIT_TIME before continuing. - if (set -o noclobber; ! echo "$$" > $pidfile ) 2>/dev/null; then - # yum-cron has the lock. Read the pid, and wait and then loop - # until it's done. - activepid="$(< $pidfile)" 2>/dev/null - if [ $? != 0 ]; then - echo; echo -n $"Stale yum-cron lock ignored. " - else - echo; echo -n $"Waiting for in-progress yum transaction" - end=$( expr $( date +%s ) + ${SERVICE_WAIT_TIME:-300} ) - while checkpid $activepid 2>/dev/null ; do - echo -n "." - if [ $( date +%s ) -gt $end ]; then - echo -n " Timed out. " - break - fi - sleep 5 - done - fi - else - # we got the lock. we don't really want it; remove and move on. - rm -f "$pidfile" - fi - fi - rm -f "$lockfile" && success || failure - RETVAL=$? - echo -} - -restart() { - stop - start -} - -case "$1" in - start) - start - ;; - stop) - stop - ;; - restart|force-reload) - restart - ;; - reload) - ;; - condrestart) - [ -f "$lockfile" ] && restart - ;; - status) - if [ -f $lockfile ]; then - echo $"Scheduled yum updates are enabled." - RETVAL=0 - else - echo $"Scheduled yum updates are disabled." - RETVAL=3 - fi - ;; - *) - echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}" - exit 1 -esac - -exit $RETVAL diff --git a/yum.spec b/yum.spec index d7568db..c3e065b 100644 --- a/yum.spec +++ b/yum.spec @@ -114,11 +114,10 @@ can notify you when they are available via email, syslog or dbus. Summary: Files needed to run yum updates as a cron job Group: System Environment/Base Requires: yum >= 3.0 cronie crontabs findutils -Requires(post): /sbin/chkconfig -Requires(post): /sbin/service -Requires(preun): /sbin/chkconfig -Requires(preun): /sbin/service -Requires(postun): /sbin/service +BuildRequires: systemd-units +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd %description cron These are the files needed to run yum updates as a cron job. @@ -198,45 +197,13 @@ exit 0 %post cron -# Make sure chkconfig knows about the service -/sbin/chkconfig --add yum-cron -# if an upgrade: -if [ "$1" -ge "1" ]; then -# if there's a /etc/rc.d/init.d/yum file left, assume that there was an -# older instance of yum-cron which used this naming convention. Clean -# it up, do a conditional restart - if [ -f /etc/init.d/yum ]; then -# was it on? - /sbin/chkconfig yum - RETVAL=$? - if [ $RETVAL = 0 ]; then -# if it was, stop it, then turn on new yum-cron - /sbin/service yum stop 1> /dev/null 2>&1 - /sbin/service yum-cron start 1> /dev/null 2>&1 - /sbin/chkconfig yum-cron on - fi -# remove it from the service list - /sbin/chkconfig --del yum - fi -fi -exit 0 +%systemd_post yum-cron.service %preun cron -# if this will be a complete removeal of yum-cron rather than an upgrade, -# remove the service from chkconfig control -if [ $1 = 0 ]; then - /sbin/chkconfig --del yum-cron - /sbin/service yum-cron stop 1> /dev/null 2>&1 -fi -exit 0 +%systemd_preun yum-cron.service %postun cron -# If there's a yum-cron package left after uninstalling one, do a -# conditional restart of the service -if [ "$1" -ge "1" ]; then - /sbin/service yum-cron condrestart 1> /dev/null 2>&1 -fi -exit 0 +%systemd_postun_with_restart yum-cron.service @@ -283,7 +250,7 @@ exit 0 %doc COPYING %{_sysconfdir}/cron.daily/0yum-update.cron %config(noreplace) %{_sysconfdir}/yum/yum-cron.conf -%{_sysconfdir}/rc.d/init.d/yum-cron +%{_unitdir}/yum-cron.service %{_sbindir}/yum-cron %{_mandir}/man*/yum-cron.* -- 1.7.11.7 _______________________________________________ Yum-devel mailing list [email protected] http://lists.baseurl.org/mailman/listinfo/yum-devel
