Hi!
More testing fun:
The .whatProvides() method is provided by the RpmSack only. In fact that
method should be used anymore anyway. And - ta ta - I still had some patches
fixing that issue. It also moves the cheaterlookup to contain package
objects insted of pkgtups. Can someone please have a short look at them and
commit them?
TIA
Florian
>From 87e0a19487c558439a4b656c6aa37ac416e5ae45 Mon Sep 17 00:00:00 2001
From: Florian Festi <[EMAIL PROTECTED]>
Date: Wed, 22 Aug 2007 15:59:10 +0200
Subject: [PATCH] use package objects in the cheaterlookup instead of pkgtups
---
yum/depsolve.py | 23 +++++++++--------------
1 files changed, 9 insertions(+), 14 deletions(-)
diff --git a/yum/depsolve.py b/yum/depsolve.py
index 4075116..5c0f960 100644
--- a/yum/depsolve.py
+++ b/yum/depsolve.py
@@ -273,21 +273,21 @@ class Depsolve(object):
if self.cheaterlookup.has_key((needname, needflags, needversion)):
self.verbose_logger.log(logginglevels.DEBUG_2, 'Needed Require has already been looked up, cheating')
- cheater_tup = self.cheaterlookup[(needname, needflags, needversion)]
- providers = [cheater_tup]
+ cheater_po = self.cheaterlookup[(needname, needflags, needversion)]
+ providers = [cheater_po]
elif self.rpmdb.installed(name=needname):
txmbrs = self.tsInfo.matchNaevr(name=needname)
for txmbr in txmbrs:
- providers.append(txmbr.pkgtup)
+ providers.append(txmbr.po)
else:
self.verbose_logger.log(logginglevels.DEBUG_2, 'Needed Require is not a package name. Looking up: %s', niceformatneed)
- providers = self.rpmdb.whatProvides(needname, needflags, needversion)
+ providers = self.rpmdb.getProvides(needname, needflags, needversion)
- for insttuple in providers:
- inst_str = '%s.%s %s:%s-%s' % insttuple
- (i_n, i_a, i_e, i_v, i_r) = insttuple
+ for inst_po in providers:
+ inst_str = '%s.%s %s:%s-%s' % inst_po.pkgtup
+ (i_n, i_a, i_e, i_v, i_r) = inst_po.pkgtup
self.verbose_logger.log(logginglevels.DEBUG_2,
'Potential Provider: %s', inst_str)
thismode = self.tsInfo.getMode(name=i_n, arch=i_a,
@@ -303,13 +303,8 @@ class Depsolve(object):
if thismode is not None:
needmode = thismode
- if self.rpmdb.installed(name=i_n, arch=i_a, ver=i_v,
- epoch=i_e, rel=i_r):
- needpo = self.rpmdb.searchPkgTuple(insttuple)[0]
- else:
- needpo = self.getPackageObject(insttuple)
- self.cheaterlookup[(needname, needflags, needversion)] = insttuple
+ self.cheaterlookup[(needname, needflags, needversion)] = inst_po
self.verbose_logger.log(logginglevels.DEBUG_2, 'Mode is %s for provider of %s: %s',
needmode, niceformatneed, inst_str)
break
@@ -321,7 +316,7 @@ class Depsolve(object):
self.verbose_logger.log(logginglevels.DEBUG_2, 'TSINFO: %s package requiring %s marked as erase',
requiringPo, needname)
txmbr = self.tsInfo.addErase(requiringPo)
- txmbr.setAsDep(po=needpo)
+ txmbr.setAsDep(po=inst_po)
checkdeps = 1
if needmode in ['i', 'u']:
--
1.5.2.4
>From 4a9187f414fe136d3040bafb17697773e787c4f8 Mon Sep 17 00:00:00 2001
From: Florian Festi <[EMAIL PROTECTED]>
Date: Wed, 22 Aug 2007 15:58:24 +0200
Subject: [PATCH] move from whatProvides to getProvides in returnInstalledPackagesByDep
---
yum/__init__.py | 9 +--------
1 files changed, 1 insertions(+), 8 deletions(-)
diff --git a/yum/__init__.py b/yum/__init__.py
index eeeb51e..64f6586 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -1738,7 +1738,6 @@ class YumBase(depsolve.Depsolve):
"""Pass in a generic [build]require string and this function will
pass back the installed packages it finds providing that dep."""
- results = []
# parse the string out
# either it is 'dep (some operator) e:v-r'
# or /file/dep
@@ -1757,14 +1756,8 @@ class YumBase(depsolve.Depsolve):
if not SYMBOLFLAGS.has_key(flagsymbol):
raise Errors.YumBaseError, 'Invalid version flag'
depflags = SYMBOLFLAGS[flagsymbol]
-
- pkglist = self.rpmdb.whatProvides(depname, depflags, depver)
-
- for pkgtup in pkglist:
- results.append(self.getInstalledPackageObject(pkgtup))
- return results
-
+ return self.rpmdb.getProvides(depname, depflags, depver).keys()
def _bestPackageFromList(self, pkglist):
"""take list of package objects and return the best package object.
--
1.5.2.4
_______________________________________________
Yum-devel mailing list
[email protected]
https://lists.dulug.duke.edu/mailman/listinfo/yum-devel