Ok, nice try... Here's the patch
Have fun
Florian
Index: yum/__init__.py
===================================================================
RCS file: /cvsroot/yum/cvs/yum/yum/__init__.py,v
retrieving revision 1.325
diff -u -r1.325 __init__.py
--- yum/__init__.py 26 Apr 2007 14:10:01 -0000 1.325
+++ yum/__init__.py 30 Apr 2007 10:06:08 -0000
@@ -1619,7 +1619,6 @@
"""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
@@ -1638,14 +1637,8 @@
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.whatProvides(depname, depflags, depver)
def _bestPackageFromList(self, pkglist):
"""take list of package objects and return the best package object.
Index: yum/depsolve.py
===================================================================
RCS file: /cvsroot/yum/cvs/yum/yum/depsolve.py,v
retrieving revision 1.163
diff -u -r1.163 depsolve.py
--- yum/depsolve.py 24 Apr 2007 21:02:50 -0000 1.163
+++ yum/depsolve.py 30 Apr 2007 10:06:08 -0000
@@ -361,21 +361,21 @@
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)
- 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.pkgtuple
+ (i_n, i_a, i_e, i_v, i_r) = inst_po.pkgtuple
self.verbose_logger.log(logginglevels.DEBUG_2,
'Potential Provider: %s', inst_str)
thismode = self.tsInfo.getMode(name=i_n, arch=i_a,
@@ -391,13 +391,8 @@
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
@@ -409,7 +404,7 @@
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']:
@@ -689,12 +684,12 @@
best = None
(r, f, v) = req
- for pkgtup in self.rpmdb.whatProvides(r, f, v):
+ for po in self.rpmdb.whatProvides(r, f, v):
# check the rpmdb first for something providing it that's not
# set to be removed
- txmbrs = self.tsInfo.getMembersWithState(pkgtup, TS_REMOVE_STATES)
+ txmbrs = self.tsInfo.getMembersWithState(po.pkgtup,
+ TS_REMOVE_STATES)
if not txmbrs:
- po = self.getInstalledPackageObject(pkgtup)
self.deps[req] = po
return po
@@ -973,11 +968,10 @@
None, rpm.RPMDEP_SENSE_CONFLICTS) )
inst = self.rpmdb.whatProvides(r, None, None)
- for pkgtup in inst:
- txmbrs = self.tsInfo.getMembersWithState(pkgtup,
+ for po in inst:
+ txmbrs = self.tsInfo.getMembersWithState(po.pkgtup,
TS_REMOVE_STATES)
if not txmbrs:
- po = self.getInstalledPackageObject(pkgtup)
if po.checkPrco('provides', (r, f, v)):
ret.append( ((txmbr.name, txmbr.version, txmbr.release),
(r, version_tuple_to_string(v)), flags[f],
@@ -1004,7 +998,7 @@
newpoprovs[(f, None, (None, None, None))] = 1
ret = []
- self._removing = []
+ self._removing = set()
goneprovs = {}
gonefiles = {}
removes = {}
@@ -1025,10 +1019,7 @@
# now see what from the rpmdb really requires these
for (provname, prov) in goneprovs.items() + gonefiles.items():
- instrequirers = []
- for pkgtup in self.rpmdb.whatRequires(provname, None, None):
- instpo = self.getInstalledPackageObject(pkgtup)
- instrequirers.append(instpo)
+ instrequirers = self.rpmdb.whatRequires(provname, None, None)
self.verbose_logger.log(logginglevels.DEBUG_4, "looking to see what requires %s of %s", prov, po)
removes[prov] = self._requiredByPkg(prov, instrequirers)
@@ -1099,14 +1090,14 @@
self.verbose_logger.log(logginglevels.DEBUG_2, "looking at %s as a requirement of %s", r, pkgtup)
isok = False
# now see if anything else is providing what we need
- for provtup in self.rpmdb.whatProvides(r, None, None):
+ for provpo in self.rpmdb.whatProvides(r, None, None):
# check if this provider is being removed
- if provtup in self._removing:
+ if provpo.pkgtup in self._removing:
continue
- if self.tsInfo.getMembersWithState(provtup, TS_REMOVE_STATES):
+ if self.tsInfo.getMembersWithState(provpo.pkgtup,
+ TS_REMOVE_STATES):
continue
- provpo = self.getInstalledPackageObject(provtup)
if provpo in removeList:
continue
# check if provpo actually satisfies instpo's need for r
Index: yum/rpmsack.py
===================================================================
RCS file: /cvsroot/yum/cvs/yum/yum/rpmsack.py,v
retrieving revision 1.46
diff -u -r1.46 rpmsack.py
--- yum/rpmsack.py 26 Apr 2007 15:30:14 -0000 1.46
+++ yum/rpmsack.py 30 Apr 2007 10:06:09 -0000
@@ -409,11 +409,7 @@
if po.checkPrco('provides', (name, flags, (r_e, r_v, r_r))):
defSack.addPackage(po)
- returnlist = []
- for pkg in defSack.returnPackages():
- returnlist.append(pkg.pkgtup)
-
- return returnlist
+ return defSack.returnPackages()
def whatRequires(self, name, flags, version):
"""searches the rpmdb for what provides the arguments
@@ -441,11 +437,7 @@
if po.checkPrco('requires', (name, flags, (r_e, r_v, r_r))):
defSack.addPackage(po)
- returnlist = []
- for pkg in defSack.returnPackages():
- returnlist.append(pkg.pkgtup)
-
- return returnlist
+ return defSack.returnPackages()
def main():
sack = RPMDBPackageSack('/')
_______________________________________________
Yum-devel mailing list
[email protected]
https://lists.dulug.duke.edu/mailman/listinfo/yum-devel