[yum-commits] Branch 'yum-3_2_X' - 2 commits - yumcommands.py yum/Errors.py yum/__init__.py
James Antill
james at osuosl.org
Mon Sep 21 14:01:00 UTC 2009
yum/Errors.py | 3 +++
yum/__init__.py | 25 +++++++++++++++----------
yumcommands.py | 10 +++++++---
3 files changed, 25 insertions(+), 13 deletions(-)
New commits:
commit ca2768f92d9b6f8655a74ced6bad33d971e8c27f
Author: James Antill <james at and.org>
Date: Fri Sep 18 11:30:32 2009 -0400
Be nice and don't traceback when people screw their rpmdb, BZ 522259
diff --git a/yum/Errors.py b/yum/Errors.py
index 6f0ffe4..3a5aca9 100644
--- a/yum/Errors.py
+++ b/yum/Errors.py
@@ -101,6 +101,9 @@ class RepoMDError(YumBaseError):
class PackageSackError(YumBaseError):
pass
+class RpmDBError(YumBaseError):
+ pass
+
class CompsException(YumBaseError):
pass
diff --git a/yum/__init__.py b/yum/__init__.py
index 79c9712..eca0bfb 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -1087,7 +1087,7 @@ class YumBase(depsolve.Depsolve):
self.logger.critical(_('%s was supposed to be installed' \
' but is not!' % txmbr.po))
continue
- po = self.rpmdb.searchPkgTuple(txmbr.pkgtup)[0]
+ po = self.getInstalledPackageObject(txmbr.pkgtup)
rpo = txmbr.po
po.yumdb_info.from_repo = rpo.repoid
po.yumdb_info.reason = txmbr.reason
@@ -1802,7 +1802,7 @@ class YumBase(depsolve.Depsolve):
for (pkgtup, instTup) in self.up.getObsoletesTuples():
(n,a,e,v,r) = pkgtup
pkgs = self.pkgSack.searchNevra(name=n, arch=a, ver=v, rel=r, epoch=e)
- instpo = self.rpmdb.searchPkgTuple(instTup)[0] # the first one
+ instpo = self.getInstalledPackageObject(instTup)
for po in pkgs:
obsoletes.append(po)
obsoletesTuples.append((po, instpo))
@@ -2345,11 +2345,16 @@ class YumBase(depsolve.Depsolve):
return result
def getInstalledPackageObject(self, pkgtup):
- """returns a YumInstallPackage object for the pkgtup specified"""
- warnings.warn(_('getInstalledPackageObject() will go away, use self.rpmdb.searchPkgTuple().\n'),
- Errors.YumFutureDeprecationWarning, stacklevel=2)
-
- po = self.rpmdb.searchPkgTuple(pkgtup)[0] # take the first one
+ """ Returns a YumInstallPackage object for the pkgtup specified, or
+ raises an exception. You should use this instead of
+ searchPkgTuple() if you are assuming there is a value. """
+
+ pkgs = self.rpmdb.searchPkgTuple(pkgtup)
+ if len(pkgs) == 0:
+ raise Errors.RpmDBError, _('Package tuple %s could not be found in rpmdb') % str(pkgtup)
+
+ # Dito. FIXME from getPackageObject() for len() > 1 ... :)
+ po = pkgs[0] # take the first one
return po
def gpgKeyCheck(self):
@@ -2613,7 +2618,7 @@ class YumBase(depsolve.Depsolve):
if not isinstance(po, YumLocalPackage):
for (obstup, inst_tup) in self.up.getObsoletersTuples(name=po.name):
if po.pkgtup == obstup:
- installed_pkg = self.rpmdb.searchPkgTuple(inst_tup)[0]
+ installed_pkg = self.getInstalledPackageObject(inst_tup)
yield installed_pkg
else:
for (obs_n, obs_f, (obs_e, obs_v, obs_r)) in po.obsoletes:
@@ -2917,7 +2922,7 @@ class YumBase(depsolve.Depsolve):
topkg = self._test_loop(obsoleting_pkg, self._pkg2obspkg)
if topkg is not None:
obsoleting_pkg = topkg
- installed_pkg = self.rpmdb.searchPkgTuple(installed)[0]
+ installed_pkg = self.getInstalledPackageObject(installed)
txmbr = self.tsInfo.addObsoleting(obsoleting_pkg, installed_pkg)
self.tsInfo.addObsoleted(installed_pkg, obsoleting_pkg)
if requiringPo:
@@ -3078,7 +3083,7 @@ class YumBase(depsolve.Depsolve):
updated)
else:
- updated_pkg = self.rpmdb.searchPkgTuple(updated)[0]
+ updated_pkg = self.getInstalledPackageObject(updated)
txmbr = self.tsInfo.addUpdate(available_pkg, updated_pkg)
if requiringPo:
txmbr.setAsDep(requiringPo)
commit 2ffe59eb3e441f3fce3038d1c19079cc5c59eb74
Author: James Antill <james at and.org>
Date: Mon Sep 21 02:05:29 2009 -0400
Catch and ignore any repo. errors, and allow cache only (BZ 524454)
diff --git a/yumcommands.py b/yumcommands.py
index bd73d0c..3d88ee4 100644
--- a/yumcommands.py
+++ b/yumcommands.py
@@ -778,13 +778,17 @@ class RepoListCommand(YumCommand):
arg = 'enabled'
extcmds = map(lambda x: x.lower(), extcmds)
- # Setup so len(repo.sack) is correct
- base.repos.populateSack()
+ verbose = base.verbose_logger.isEnabledFor(logginglevels.DEBUG_3)
+ try:
+ # Setup so len(repo.sack) is correct
+ base.repos.populateSack()
+ except yum.Errors.RepoError:
+ if verbose:
+ raise
repos = base.repos.repos.values()
repos.sort()
enabled_repos = base.repos.listEnabled()
- verbose = base.verbose_logger.isEnabledFor(logginglevels.DEBUG_3)
if arg == 'all':
ehibeg = base.term.FG_COLOR['green'] + base.term.MODE['bold']
dhibeg = base.term.FG_COLOR['red']
More information about the Yum-commits
mailing list