[Yum-devel] [PATCH] Always catch _rpmdb_warn_checks errors. BZ 735234.

Zdeněk Pavlas zpavlas at redhat.com
Wed Feb 15 08:41:41 UTC 2012


This fixes all callers.
---
 yum/__init__.py |   11 ++++++++++-
 yummain.py      |   16 ++++------------
 2 files changed, 14 insertions(+), 13 deletions(-)

diff --git a/yum/__init__.py b/yum/__init__.py
index a786248..d64f75a 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -1492,7 +1492,7 @@ class YumBase(depsolve.Depsolve):
             toRemove.add(dep)
             self._getDepsToRemove(dep, deptree, toRemove)
 
-    def _rpmdb_warn_checks(self, out=None, warn=True, chkcmd=None, header=None,
+    def _rpmdb_warn_checks_exc(self, out=None, warn=True, chkcmd=None, header=None,
                            ignore_pkgs=[]):
         if out is None:
             out = self.logger.warning
@@ -1560,6 +1560,15 @@ class YumBase(depsolve.Depsolve):
 
         return probs
 
+    def _rpmdb_warn_checks(self, out=None, warn=True, chkcmd=None, header=None,
+                           ignore_pkgs=[]):
+        try:
+            return self._rpmdb_warn_checks_exc(out, warn, chkcmd, header, ignore_pkgs)
+        except Errors.YumBaseError, e:
+            # This is mainly for PackageSackError from rpmdb.
+            self.verbose_logger.info(_(" Yum checks failed: %s"), exception2msg(e))
+            return []
+
     def runTransaction(self, cb):
         """Perform the transaction.
 
diff --git a/yummain.py b/yummain.py
index e1a9702..7345b6e 100755
--- a/yummain.py
+++ b/yummain.py
@@ -76,16 +76,6 @@ def main(args):
             return 200
         return 0
 
-    def rpmdb_warn_checks():
-        try:
-            probs = base._rpmdb_warn_checks(out=verbose_logger.info, warn=False)
-        except Errors.YumBaseError, e:
-            # This is mainly for PackageSackError from rpmdb.
-            verbose_logger.info(_(" Yum checks failed: %s"), exception2msg(e))
-            probs = []
-        if not probs:
-            verbose_logger.info(_(" You could try running: rpm -Va --nofiles --nodigest"))
-
     logger = logging.getLogger("yum.main")
     verbose_logger = logging.getLogger("yum.verbose.main")
 
@@ -209,7 +199,8 @@ def main(args):
         if base._depsolving_failed:
             if not base.conf.skip_broken:
                 verbose_logger.info(_(" You could try using --skip-broken to work around the problem"))
-            rpmdb_warn_checks()
+            if not base._rpmdb_warn_checks(out=verbose_logger.info, warn=False):
+                verbose_logger.info(_(" You could try running: rpm -Va --nofiles --nodigest"))
         if unlock(): return 200
         return 1
     elif result == 2:
@@ -241,7 +232,8 @@ def main(args):
         (result, resultmsgs) = return_code
         for msg in resultmsgs:
             logger.critical("%s", msg)
-        rpmdb_warn_checks()
+        if not base._rpmdb_warn_checks(out=verbose_logger.info, warn=False):
+            verbose_logger.info(_(" You could try running: rpm -Va --nofiles --nodigest"))
         return_code = result
         if base._ts_save_file:
             verbose_logger.info(_("Your transaction was saved, rerun it with:\n yum load-transaction %s") % base._ts_save_file)
-- 
1.7.4.4



More information about the Yum-devel mailing list