Fix updates notification on Fedora 29
Workaround for https://bugzilla.redhat.com/1650446 This caused not clearing updates-available flag after installing updates in the template. Fixes QubesOS/qubes-issues#2009
This commit is contained in:
		
							parent
							
								
									bb28efe628
								
							
						
					
					
						commit
						8d7313b928
					
				| @ -43,16 +43,28 @@ class QubesHooks(dnf.Plugin): | ||||
|             config = self.read_config(self.base.conf) | ||||
| 
 | ||||
|         if config.getboolean('main', 'notify-updates'): | ||||
|             # Get all updates available _before_ this transaction | ||||
|             query = self.base.sack.query() | ||||
|             query = query.upgrades() | ||||
|             updates = set(query.run()) | ||||
|             # Get packages installed in this transaction... | ||||
|             just_installed = self.base.transaction | ||||
|             # ...and filter them out of available updates | ||||
|             for item in just_installed: | ||||
|                 for pkg in item.installs(): | ||||
|                     updates.discard(pkg) | ||||
|             if LooseVersion(dnf.const.VERSION) > '4.0.0': | ||||
|                 # self.base.transaction empty at this point in dnf4 | ||||
|                 # https://bugzilla.redhat.com/1650446 | ||||
|                 # until fixed, load the repositories again and again check for | ||||
|                 # updates | ||||
|                 base = dnf.Base() | ||||
|                 base.read_all_repos() | ||||
|                 base.fill_sack() | ||||
|                 query = base.sack.query() | ||||
|                 query = query.upgrades() | ||||
|                 updates = set(query.run()) | ||||
|             else: | ||||
|                 # Get all updates available _before_ this transaction | ||||
|                 query = self.base.sack.query() | ||||
|                 query = query.upgrades() | ||||
|                 updates = set(query.run()) | ||||
|                 # Get packages installed in this transaction... | ||||
|                 just_installed = self.base.transaction | ||||
|                 # ...and filter them out of available updates | ||||
|                 for item in just_installed: | ||||
|                     for pkg in item.installs(): | ||||
|                         updates.discard(pkg) | ||||
|             subprocess.call([ | ||||
|                 '/usr/lib/qubes/qrexec-client-vm', | ||||
|                 'dom0', | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Marek Marczykowski-Górecki
						Marek Marczykowski-Górecki