Fix systemctl command (#1478247)

When multiple units are passed to systemctl and one fails it doesn't
finish the others. Change the template command to call systemctl for
each unit individually.

This also removes the lvm2-activation-generator in runtime-cleanup.tmpl
This commit is contained in:
Brian C. Lane 2017-08-14 13:58:25 -07:00
parent e3dcb1e329
commit 3382a24498
2 changed files with 11 additions and 7 deletions

View File

@ -47,6 +47,9 @@ systemctl mask fedora-configure.service fedora-loadmodules.service \
systemd-tmpfiles-clean.service systemd-tmpfiles-clean.timer \ systemd-tmpfiles-clean.service systemd-tmpfiles-clean.timer \
ldconfig.service ldconfig.service
## remove because it cannot be disabled
remove usr/lib/systemd/system-generators/lvm2-activation-generator
## Remove the more terrible parts of systemd-tmpfiles. ## Remove the more terrible parts of systemd-tmpfiles.
## etc.conf is written with the assumption that /etc/ is empty, which is ## etc.conf is written with the assumption that /etc/ is empty, which is
## ridiculous, and it also creates a broken /etc/resolv.conf, which breaks ## ridiculous, and it also creates a broken /etc/resolv.conf, which breaks

View File

@ -775,11 +775,12 @@ class LoraxTemplateRunner(object):
logger.debug("systemctl: no units given for %s, ignoring", cmd) logger.debug("systemctl: no units given for %s, ignoring", cmd)
return return
self.mkdir("/run/systemd/system") # XXX workaround for systemctl bug self.mkdir("/run/systemd/system") # XXX workaround for systemctl bug
systemctl = ('systemctl', '--root', self.outroot, '--no-reload', systemctl = ['systemctl', '--root', self.outroot, '--no-reload', cmd]
'--quiet', cmd) # When a unit doesn't exist systemd aborts the command. Run them one at a time.
# XXX for some reason 'systemctl enable/disable' always returns 1 # XXX for some reason 'systemctl enable/disable' always returns 1
for unit in units:
try: try:
cmd = systemctl + units cmd = systemctl + [unit]
runcmd(cmd) runcmd(cmd)
except CalledProcessError: except CalledProcessError:
pass pass