[yum-cvs] yum/yum depsolve.py,1.121,1.122

James Bowes jbowes at linux.duke.edu
Sun Feb 18 21:58:58 UTC 2007


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

Modified Files:
	depsolve.py 
Log Message:
Speed up erase by only doing tscheck on the new editions to tsInfo, rather than doing the old ones over and over again

Index: depsolve.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/depsolve.py,v
retrieving revision 1.121
retrieving revision 1.122
diff -u -r1.121 -r1.122
--- depsolve.py	18 Feb 2007 14:30:57 -0000	1.121
+++ depsolve.py	18 Feb 2007 21:58:56 -0000	1.122
@@ -38,7 +38,8 @@
         self.dsCallback = None
         self.logger = logging.getLogger("yum.Depsolve")
         self.verbose_logger = logging.getLogger("yum.verbose.Depsolve")
-    
+        self.tsInfoDelta = []
+
     def initActionTs(self):
         """sets up the ts we'll use for all the work"""
         
@@ -468,6 +469,7 @@
                 requiringPo, needname)
             txmbr = self.tsInfo.addErase(requiringPo)
             txmbr.setAsDep(po=needpo)
+            self.tsInfoDelta.append(txmbr)
             checkdeps = 1
         
         if needmode in ['i', 'u']:
@@ -490,6 +492,7 @@
                             txmbr = self.tsInfo.addObsoleting(po, requiringPo)
                             self.tsInfo.addObsoleted(requiringPo, po)
                             txmbr.setAsDep(po=needpo)
+                            self.tsInfoDelta.append(txmbr)
                             self.verbose_logger.log(logginglevels.DEBUG_2, 'TSINFO: Obsoleting %s with %s to resolve dep.', 
                                 requiringPo, po)
                             checkdeps = 1
@@ -521,6 +524,7 @@
                     if po.pkgtup == new:
                         txmbr = self.tsInfo.addUpdate(po, requiringPo)
                         txmbr.setAsDep(po=needpo)
+                        self.tsInfoDelta.append(txmbr)
                         self.verbose_logger.log(logginglevels.DEBUG_2, 'TSINFO: Updating %s to resolve dep.', po)
                 checkdeps = 1
                 
@@ -661,11 +665,13 @@
                 name)
             txmbr = self.tsInfo.addUpdate(best)
             txmbr.setAsDep()
+            self.tsInfoDelta.append(txmbr)
         else:
             self.verbose_logger.debug('TSINFO: Marking %s as install for %s', best,
                 name)
             txmbr = self.tsInfo.addInstall(best)
             txmbr.setAsDep()
+            self.tsInfoDelta.append(txmbr)
 
         checkdeps = 1
         
@@ -726,6 +732,7 @@
                 'TSINFO: Updating %s to resolve conflict.', po)
             txmbr = self.tsInfo.addUpdate(po)
             txmbr.setAsDep()
+            self.tsInfoDelta.append(txmbr)
             CheckDeps = 1
             
         else:
@@ -1049,7 +1056,7 @@
         # returns a list of tuples
         # ((name, version, release), (needname, needversion), flags, suggest, sense)
         ret = []
-        for txmbr in self.tsInfo.getMembers():
+        for txmbr in self.tsInfoDelta:
             if txmbr.output_state in (TS_INSTALL, TS_TRUEINSTALL, TS_OBSOLETING):
                 ret.extend(self._checkInstall(txmbr))
             elif txmbr.output_state in (TS_UPDATE,):
@@ -1057,6 +1064,7 @@
             elif txmbr.output_state in TS_REMOVE_STATES:
                 ret.extend(self._checkRemove(txmbr))
 
+        self.tsInfoDelta = []
         return ret
 
     def resolveDeps(self):
@@ -1069,6 +1077,7 @@
         errors = []
         if self.dsCallback: self.dsCallback.start()
 
+        self.tsInfoDelta = self.tsInfo.getMembers()
         while CheckDeps:
             self.cheaterlookup = {} # short cache for some information we'd resolve
                                     # (needname, needversion) = pkgtup




More information about the Yum-cvs-commits mailing list