dnf plugin: don't try to execute qrexec if service is not running

Needed for QubesOS/qubes-issues#4867
This commit is contained in:
Frédéric Pierret (fepitre) 2021-05-05 11:19:21 +02:00
parent b1d8302b2b
commit a8ab8d4eff
No known key found for this signature in database
GPG Key ID: 484010B5CDC576E2

View File

@ -28,6 +28,10 @@ import subprocess
PLUGIN_CONF = 'qubes-hooks' PLUGIN_CONF = 'qubes-hooks'
def is_active(service):
status = subprocess.call(["systemctl", "is-active", "--quiet", service])
return status == 0
class QubesHooks(dnf.Plugin): class QubesHooks(dnf.Plugin):
name = 'qubes-hooks' name = 'qubes-hooks'
@ -37,6 +41,8 @@ class QubesHooks(dnf.Plugin):
self.log = logging.getLogger('dnf') self.log = logging.getLogger('dnf')
def resolved(self): def resolved(self):
if not is_active("qubes-qrexec-agent"):
return
# in case of no action to do, transaction() hook won't be called; # in case of no action to do, transaction() hook won't be called;
# report updates availability here - especially when everything is up # report updates availability here - especially when everything is up
# to date - to clear updates-available flag # to date - to clear updates-available flag
@ -53,6 +59,8 @@ class QubesHooks(dnf.Plugin):
]) ])
def transaction(self): def transaction(self):
if not is_active("qubes-qrexec-agent"):
return
if LooseVersion(dnf.const.VERSION) < '2.0.0': if LooseVersion(dnf.const.VERSION) < '2.0.0':
config = self.read_config(self.base.conf, PLUGIN_CONF) config = self.read_config(self.base.conf, PLUGIN_CONF)
else: else: