[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