From 40652b700bf4d45f284c3a3b0fbcd8eca3f87780 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Sat, 3 Aug 2019 03:39:10 +0200 Subject: [PATCH] dnf: clear updates-available flag when dnf update yields no updates Fixes QubesOS/qubes-issues#2009 --- misc/dnf-qubes-hooks.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/misc/dnf-qubes-hooks.py b/misc/dnf-qubes-hooks.py index 1771851..608f6cc 100644 --- a/misc/dnf-qubes-hooks.py +++ b/misc/dnf-qubes-hooks.py @@ -36,6 +36,22 @@ class QubesHooks(dnf.Plugin): self.base = base self.log = logging.getLogger('dnf') + def resolved(self): + # in case of no action to do, transaction() hook won't be called; + # report updates availability here - especially when everything is up + # to date - to clear updates-available flag + if not self.base.transaction: + query = self.base.sack.query() + query = query.upgrades() + updates = set(query.run()) + subprocess.call([ + '/usr/lib/qubes/qrexec-client-vm', + 'dom0', + 'qubes.NotifyUpdates', + '/bin/echo', + str(len(updates)) + ]) + def transaction(self): if LooseVersion(dnf.const.VERSION) < '2.0.0': config = self.read_config(self.base.conf, PLUGIN_CONF)