From 55904453191a617c633e9e96d6cd5569ca6311ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Wed, 14 Jan 2015 02:27:34 +0100 Subject: [PATCH] fedora: reduce code duplication in systemd triggers --- rpm_spec/core-vm.spec | 76 +++++++++++++------------------------------ 1 file changed, 23 insertions(+), 53 deletions(-) diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index d36a892..559e62c 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -72,6 +72,27 @@ BuildRequires: qubes-libvchan-%{backend_vmm}-devel %define kde_service_dir /usr/share/kde4/services +%define installOverridenServices() \ +UNITDIR=/lib/systemd/system\ +OVERRIDEDIR=/usr/lib/qubes/init\ +# Install overriden services only when original exists\ +for srv in %*; do\ + if [ -f $UNITDIR/$srv.service ]; then\ + cp $OVERRIDEDIR/$srv.service /etc/systemd/system/\ + /bin/systemctl is-enabled $srv.service >/dev/null && /bin/systemctl --no-reload reenable $srv.service 2>/dev/null\ + fi\ + if [ -f $UNITDIR/$srv.socket -a -f $OVERRIDEDIR/$srv.socket ]; then\ + cp $OVERRIDEDIR/$srv.socket /etc/systemd/system/\ + /bin/systemctl is-enabled $srv.socket >/dev/null && /bin/systemctl --no-reload reenable $srv.socket 2>/dev/null\ + fi\ + if [ -f $UNITDIR/$srv.path -a -f $OVERRIDEDIR/$srv.path ]; then\ + cp $OVERRIDEDIR/$srv.path /etc/systemd/system/\ + /bin/systemctl is-enabled $srv.path >/dev/null && /bin/systemctl --no-reload reenable $srv.path 2>/dev/null\ + fi\ +done\ +/bin/systemctl daemon-reload\ +%{nil} + %description The Qubes core files for installation inside a Qubes VM. @@ -555,22 +576,6 @@ done /bin/systemctl enable qubes-update-check.timer 2> /dev/null -UNITDIR=/lib/systemd/system -OVERRIDEDIR=/usr/lib/qubes/init - -# Install overriden services only when original exists -for srv in cups ModemManager NetworkManager NetworkManager-wait-online ntpd chronyd; do - if [ -f $UNITDIR/$srv.service ]; then - cp $OVERRIDEDIR/$srv.service /etc/systemd/system/ - fi - if [ -f $UNITDIR/$srv.socket -a -f $OVERRIDEDIR/$srv.socket ]; then - cp $OVERRIDEDIR/$srv.socket /etc/systemd/system/ - fi - if [ -f $UNITDIR/$srv.path -a -f $OVERRIDEDIR/$srv.path ]; then - cp $OVERRIDEDIR/$srv.path /etc/systemd/system/ - fi -done - # Set default "runlevel" rm -f /etc/systemd/system/default.target ln -s /lib/systemd/system/multi-user.target /etc/systemd/system/default.target @@ -606,50 +611,15 @@ rm -f /etc/systemd/system/getty.target.wants/getty@tty*.service exit 0 %triggerin systemd -- NetworkManager -UNITDIR=/lib/systemd/system -OVERRIDEDIR=/usr/lib/qubes/init -# Install overriden services only when original exists -for srv in ModemManager NetworkManager NetworkManager-wait-online; do - if [ -f $UNITDIR/$srv.service ]; then - cp $OVERRIDEDIR/$srv.service /etc/systemd/system/ - fi - if [ -f $UNITDIR/$srv.socket -a -f $OVERRIDEDIR/$srv.socket ]; then - cp $OVERRIDEDIR/$srv.socket /etc/systemd/system/ - fi - if [ -f $UNITDIR/$srv.path -a -f $OVERRIDEDIR/$srv.path ]; then - cp $OVERRIDEDIR/$srv.path /etc/systemd/system/ - fi -done - -# Disable original service to enable overriden one -/bin/systemctl disable ModemManager.service 2> /dev/null -/bin/systemctl disable NetworkManager.service 2> /dev/null +%installOverridenServices ModemManager NetworkManager NetworkManager-wait-online # Disable D-BUS activation of NetworkManager - in AppVm it causes problems (eg PackageKit timeouts) /bin/systemctl mask dbus-org.freedesktop.NetworkManager.service 2> /dev/null -/bin/systemctl enable ModemManager.service 2> /dev/null -/bin/systemctl enable NetworkManager.service 2> /dev/null # Fix for https://bugzilla.redhat.com/show_bug.cgi?id=974811 /bin/systemctl enable NetworkManager-dispatcher.service 2> /dev/null exit 0 %triggerin systemd -- cups -UNITDIR=/lib/systemd/system -OVERRIDEDIR=/usr/lib/qubes/init -# Install overriden services only when original exists -for srv in cups; do - if [ -f $UNITDIR/$srv.service ]; then - cp $OVERRIDEDIR/$srv.service /etc/systemd/system/ - fi - if [ -f $UNITDIR/$srv.socket -a -f $OVERRIDEDIR/$srv.socket ]; then - cp $OVERRIDEDIR/$srv.socket /etc/systemd/system/ - fi - if [ -f $UNITDIR/$srv.path -a -f $OVERRIDEDIR/$srv.path ]; then - cp $OVERRIDEDIR/$srv.path /etc/systemd/system/ - fi -done - -# Enable cups only when it is real SystemD service -[ -e /lib/systemd/system/cups.service ] && /bin/systemctl enable cups.service 2> /dev/null +%installOverridenServices cups exit 0 %triggerin systemd -- haveged