Merge remote-tracking branch 'origin/pr/176'

* origin/pr/176:
  Fix downloading dom0 updates on Debian
  dnf: clear updates-available flag when dnf update yields no updates
This commit is contained in:
Marek Marczykowski-Górecki 2019-08-11 06:53:55 +02:00
commit b1f4c97087
No known key found for this signature in database
GPG Key ID: 063938BA42CFA724
2 changed files with 21 additions and 1 deletions

View File

@ -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)

View File

@ -116,6 +116,10 @@ YUM_COMMAND="fakeroot $YUM $YUM_ACTION -y --downloadonly"
# check for --downloadonly option - if not supported (Debian), fallback to
# yumdownloader
if ! $YUM --help | grep -q downloadonly; then
# setup environment for yumdownloader to be happy
if [ ! -e "$DOM0_UPDATES_DIR/etc/yum.conf" ]; then
ln -nsf dnf/dnf.conf "$DOM0_UPDATES_DIR/etc/yum.conf"
fi
if [ "$YUM_ACTION" = "install" ]; then
YUM_COMMAND="yumdownloader --destdir=$DOM0_UPDATES_DIR/packages --resolve"
elif [ "$YUM_ACTION" = "upgrade" ]; then
@ -162,7 +166,7 @@ else
$YUM_COMMAND $OPTS "${PKGLIST[@]}"
fi
find "$DOM0_UPDATES_DIR/var/cache" -name '*.rpm' -print0 |\
find "$DOM0_UPDATES_DIR/var/cache" -name '*.rpm' -print0 2>/dev/null |\
xargs -0 -r ln -f -t "$DOM0_UPDATES_DIR/packages/"
if ls "$DOM0_UPDATES_DIR"/packages/*.rpm > /dev/null 2>&1; then