| |
@@ -0,0 +1,114 @@
|
| |
+ From f1fbef17862e033bf9518bd318339b405f2664dd Mon Sep 17 00:00:00 2001
|
| |
+ From: Nicola Sella <nsella@redhat.com>
|
| |
+ Date: Mon, 22 Mar 2021 17:37:51 +0100
|
| |
+ Subject: [PATCH 1/2] Better explain traceback of rpm.error with dnf
|
| |
+
|
| |
+ =changelog=
|
| |
+ msg: Add dnf.error message to explain rpm.error traceback when package not found after resolving a transaction
|
| |
+ type: bugfix
|
| |
+ resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1815327
|
| |
+ resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1887293
|
| |
+ resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1909845
|
| |
+ ---
|
| |
+ dnf/db/group.py | 78 ++++++++++++++++++++++++++-----------------------
|
| |
+ 1 file changed, 41 insertions(+), 37 deletions(-)
|
| |
+
|
| |
+ diff --git a/dnf/db/group.py b/dnf/db/group.py
|
| |
+ index 312e3b98..3a17019a 100644
|
| |
+ --- a/dnf/db/group.py
|
| |
+ +++ b/dnf/db/group.py
|
| |
+ @@ -26,6 +26,7 @@ import dnf.exceptions
|
| |
+ from dnf.i18n import _
|
| |
+ from dnf.util import logger
|
| |
+
|
| |
+ +import rpm
|
| |
+
|
| |
+ class PersistorBase(object):
|
| |
+ def __init__(self, history):
|
| |
+ @@ -316,43 +317,46 @@ class RPMTransaction(object):
|
| |
+ modular_problems = 0
|
| |
+
|
| |
+ for tsi in self:
|
| |
+ - if tsi.action == libdnf.transaction.TransactionItemAction_DOWNGRADE:
|
| |
+ - hdr = tsi.pkg._header
|
| |
+ - modular_problems += self._test_fail_safe(hdr, tsi.pkg)
|
| |
+ - ts.addInstall(hdr, tsi, 'u')
|
| |
+ - elif tsi.action == libdnf.transaction.TransactionItemAction_DOWNGRADED:
|
| |
+ - ts.addErase(tsi.pkg.idx)
|
| |
+ - elif tsi.action == libdnf.transaction.TransactionItemAction_INSTALL:
|
| |
+ - hdr = tsi.pkg._header
|
| |
+ - modular_problems += self._test_fail_safe(hdr, tsi.pkg)
|
| |
+ - ts.addInstall(hdr, tsi, 'i')
|
| |
+ - elif tsi.action == libdnf.transaction.TransactionItemAction_OBSOLETE:
|
| |
+ - hdr = tsi.pkg._header
|
| |
+ - modular_problems += self._test_fail_safe(hdr, tsi.pkg)
|
| |
+ - ts.addInstall(hdr, tsi, 'u')
|
| |
+ - elif tsi.action == libdnf.transaction.TransactionItemAction_OBSOLETED:
|
| |
+ - ts.addErase(tsi.pkg.idx)
|
| |
+ - elif tsi.action == libdnf.transaction.TransactionItemAction_REINSTALL:
|
| |
+ - # note: in rpm 4.12 there should not be set
|
| |
+ - # rpm.RPMPROB_FILTER_REPLACEPKG to work
|
| |
+ - hdr = tsi.pkg._header
|
| |
+ - modular_problems += self._test_fail_safe(hdr, tsi.pkg)
|
| |
+ - ts.addReinstall(hdr, tsi)
|
| |
+ - elif tsi.action == libdnf.transaction.TransactionItemAction_REINSTALLED:
|
| |
+ - # Required when multiple packages with the same NEVRA marked as installed
|
| |
+ - ts.addErase(tsi.pkg.idx)
|
| |
+ - elif tsi.action == libdnf.transaction.TransactionItemAction_REMOVE:
|
| |
+ - ts.addErase(tsi.pkg.idx)
|
| |
+ - elif tsi.action == libdnf.transaction.TransactionItemAction_UPGRADE:
|
| |
+ - hdr = tsi.pkg._header
|
| |
+ - modular_problems += self._test_fail_safe(hdr, tsi.pkg)
|
| |
+ - ts.addInstall(hdr, tsi, 'u')
|
| |
+ - elif tsi.action == libdnf.transaction.TransactionItemAction_UPGRADED:
|
| |
+ - ts.addErase(tsi.pkg.idx)
|
| |
+ - elif tsi.action == libdnf.transaction.TransactionItemAction_REASON_CHANGE:
|
| |
+ - pass
|
| |
+ - else:
|
| |
+ - raise RuntimeError("TransactionItemAction not handled: %s" % tsi.action)
|
| |
+ + try:
|
| |
+ + if tsi.action == libdnf.transaction.TransactionItemAction_DOWNGRADE:
|
| |
+ + hdr = tsi.pkg._header
|
| |
+ + modular_problems += self._test_fail_safe(hdr, tsi.pkg)
|
| |
+ + ts.addInstall(hdr, tsi, 'u')
|
| |
+ + elif tsi.action == libdnf.transaction.TransactionItemAction_DOWNGRADED:
|
| |
+ + ts.addErase(tsi.pkg.idx)
|
| |
+ + elif tsi.action == libdnf.transaction.TransactionItemAction_INSTALL:
|
| |
+ + hdr = tsi.pkg._header
|
| |
+ + modular_problems += self._test_fail_safe(hdr, tsi.pkg)
|
| |
+ + ts.addInstall(hdr, tsi, 'i')
|
| |
+ + elif tsi.action == libdnf.transaction.TransactionItemAction_OBSOLETE:
|
| |
+ + hdr = tsi.pkg._header
|
| |
+ + modular_problems += self._test_fail_safe(hdr, tsi.pkg)
|
| |
+ + ts.addInstall(hdr, tsi, 'u')
|
| |
+ + elif tsi.action == libdnf.transaction.TransactionItemAction_OBSOLETED:
|
| |
+ + ts.addErase(tsi.pkg.idx)
|
| |
+ + elif tsi.action == libdnf.transaction.TransactionItemAction_REINSTALL:
|
| |
+ + # note: in rpm 4.12 there should not be set
|
| |
+ + # rpm.RPMPROB_FILTER_REPLACEPKG to work
|
| |
+ + hdr = tsi.pkg._header
|
| |
+ + modular_problems += self._test_fail_safe(hdr, tsi.pkg)
|
| |
+ + ts.addReinstall(hdr, tsi)
|
| |
+ + elif tsi.action == libdnf.transaction.TransactionItemAction_REINSTALLED:
|
| |
+ + # Required when multiple packages with the same NEVRA marked as installed
|
| |
+ + ts.addErase(tsi.pkg.idx)
|
| |
+ + elif tsi.action == libdnf.transaction.TransactionItemAction_REMOVE:
|
| |
+ + ts.addErase(tsi.pkg.idx)
|
| |
+ + elif tsi.action == libdnf.transaction.TransactionItemAction_UPGRADE:
|
| |
+ + hdr = tsi.pkg._header
|
| |
+ + modular_problems += self._test_fail_safe(hdr, tsi.pkg)
|
| |
+ + ts.addInstall(hdr, tsi, 'u')
|
| |
+ + elif tsi.action == libdnf.transaction.TransactionItemAction_UPGRADED:
|
| |
+ + ts.addErase(tsi.pkg.idx)
|
| |
+ + elif tsi.action == libdnf.transaction.TransactionItemAction_REASON_CHANGE:
|
| |
+ + pass
|
| |
+ + else:
|
| |
+ + raise RuntimeError("TransactionItemAction not handled: %s" % tsi.action)
|
| |
+ + except rpm.error as e:
|
| |
+ + raise dnf.exceptions.Error(_("An rpm exception occurred: %s" % e))
|
| |
+ if modular_problems:
|
| |
+ raise dnf.exceptions.Error(_("No available modular metadata for modular package"))
|
| |
+
|
| |
+ --
|
| |
+ 2.39.0
|
| |
+
|
| |
Fixes: https://pagure.io/centos-sig-hyperscale/package-updates/issue/130