[yum-cvs] yum/yum transactioninfo.py, 1.39, 1.40 depsolve.py, 1.159, 1.160

Jeremy Katz katzj at linux.duke.edu
Tue Apr 17 20:54:05 UTC 2007


Update of /home/groups/yum/cvs/yum/yum
In directory login1.linux.duke.edu:/tmp/cvs-serv14912/yum

Modified Files:
	transactioninfo.py depsolve.py 
Log Message:
fix broken api

if you have your own TransactionData class, then the signature of getMembers()
changing breaks thing substantially.  instead, just add a new method for the
new functionality that we want in the depsolver that can work with 
subclasses too


Index: transactioninfo.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/transactioninfo.py,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -r1.39 -r1.40
--- transactioninfo.py	1 Apr 2007 00:11:16 -0000	1.39
+++ transactioninfo.py	17 Apr 2007 20:54:03 -0000	1.40
@@ -62,8 +62,11 @@
         if self.debug:
             print msg
 
+    def getMembersWithState(self, pkgtup=None, output_states=None):
+        return filter(lambda p: p.output_state in output_states,
+                      self.getMembers(pkgtup))
 
-    def getMembers(self, pkgtup=None, output_states=None, asSack=False):
+    def getMembers(self, pkgtup=None):
         """takes an optional package tuple and returns all transaction members 
            matching, no pkgtup means it returns all transaction members"""
         
@@ -72,16 +75,12 @@
         if pkgtup is None:
             for key in self.pkgdict.keys():
                 for p in self.pkgdict[key]:
-                    if not output_states or p.output_state in output_states:
-                        returnlist.append(p)
+                    returnlist.append(p)
 
         elif self.pkgdict.has_key(pkgtup):
             for p in self.pkgdict[pkgtup]:
-                if not output_states or p.output_state in output_states:
-                    returnlist.append(p)
+                returnlist.append(p)
 
-        if asSack:
-            return ListPackageSack(map(lambda x: x.po, returnlist))
         return returnlist
             
     def getMode(self, name=None, arch=None, epoch=None, ver=None, rel=None):

Index: depsolve.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/depsolve.py,v
retrieving revision 1.159
retrieving revision 1.160
diff -u -r1.159 -r1.160
--- depsolve.py	9 Apr 2007 21:35:27 -0000	1.159
+++ depsolve.py	17 Apr 2007 20:54:03 -0000	1.160
@@ -692,7 +692,7 @@
         for pkgtup 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.getMembers(pkgtup, TS_REMOVE_STATES)
+            txmbrs = self.tsInfo.getMembersWithState(pkgtup, TS_REMOVE_STATES)
             if not txmbrs:
                 po = self.getInstalledPackageObject(pkgtup)            
                 self.deps[req] = po                
@@ -707,7 +707,7 @@
                 self.deps[req] = po
                 return po
         
-        for txmbr in self.tsInfo.getMembers(None, TS_INSTALL_STATES):
+        for txmbr in self.tsInfo.getMembersWithState(None, TS_INSTALL_STATES):
             if txmbr.po.checkPrco('provides', (r, f, v)):
                 self.deps[req] = txmbr.po
                 return txmbr.po
@@ -997,7 +997,7 @@
 
         # now, let's see if anything that we're installing requires anything
         # that this provides
-        for txmbr in self.tsInfo.getMembers(None, TS_INSTALL_STATES):
+        for txmbr in self.tsInfo.getMembersWithState(None, TS_INSTALL_STATES):
             for r in txmbr.po.requires_names:
                 prov = None
                 if r in goneprovs.keys():
@@ -1050,7 +1050,7 @@
         for instpo in pos:
             pkgtup = instpo.pkgtup
             # ignore stuff already being removed
-            if self.tsInfo.getMembers(pkgtup, TS_REMOVE_STATES):
+            if self.tsInfo.getMembersWithState(pkgtup, TS_REMOVE_STATES):
                 continue
             if pkgtup in self._removing:
                 continue
@@ -1065,7 +1065,7 @@
                 # check if this provider is being removed
                 if provtup in self._removing:
                     continue
-                if self.tsInfo.getMembers(provtup, TS_REMOVE_STATES):
+                if self.tsInfo.getMembersWithState(provtup, TS_REMOVE_STATES):
                     continue
 
                 provpo = self.getInstalledPackageObject(provtup)
@@ -1092,11 +1092,11 @@
             # from having to download the filelists for a lot of cases
             if r[0] == "/":
                 for po in self.pkgSack.searchProvides(r):
-                    if self.tsInfo.getMembers(po.pkgtup, TS_INSTALL_STATES):
+                    if self.tsInfo.getMembersWithState(po.pkgtup, TS_INSTALL_STATES):
                         isok = True
                         break
                 for po in self.rpmdb.searchFiles(r):
-                    if not self.tsInfo.getMembers(po.pkgtup, TS_REMOVE_STATES):
+                    if not self.tsInfo.getMembersWithState(po.pkgtup, TS_REMOVE_STATES):
                         isok = True
                         break
             if isok:
@@ -1104,7 +1104,7 @@
 
             # now do the same set of checks with packages that are
             # set to be installed.  
-            for txmbr in self.tsInfo.getMembers(None, TS_INSTALL_STATES):
+            for txmbr in self.tsInfo.getMembersWithState(None, TS_INSTALL_STATES):
                 if txmbr.po.checkPrco('provides',
                                       (r, None, (None,None,None))):
                     ok = True




More information about the Yum-cvs-commits mailing list