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

Reply via email to