[yum-cvs] yum/yum depsolve.py,1.73,1.74

Jeremy Katz katzj at linux.duke.edu
Wed Dec 14 18:25:36 UTC 2005


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

Modified Files:
	depsolve.py 
Log Message:
better fix for #175647 -- find the package object once and allow it to be
either installed or from the sacks.  tested with
a) yum update libgcj on a system where updating gcj would break deps
b) yum update gnome-vfs2 where there are things depending on gnome-vfs2
c) yum remove gnome-vfs2

The only case I didn't check was the obsoletes case, but it looks like 
the right thing should happen


Index: depsolve.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/depsolve.py,v
retrieving revision 1.73
retrieving revision 1.74
diff -u -r1.73 -r1.74
--- depsolve.py	14 Dec 2005 03:55:07 -0000	1.73
+++ depsolve.py	14 Dec 2005 18:25:34 -0000	1.74
@@ -408,7 +408,7 @@
         # if it is then we need to find out what is being done to it and act accordingly
         rpmdbNames = self.rpmdb.getNamePkgList()
         needmode = None # mode in the transaction of the needed pkg (if any)
-        needpkgtup = None
+        needpo = None
         providers = []
         
         if self.cheaterlookup.has_key((needname, needflags, needversion)):
@@ -442,7 +442,10 @@
             
             if thismode is not None:
                 needmode = thismode
-                needpkgtup = insttuple
+                try:
+                    needpo = self.getInstalledPackageObject(insttuple)
+                except KeyError:
+                    needpo = self.getPackageObject(insttuple)
                 self.cheaterlookup[(needname, needflags, needversion)] = insttuple
                 self.log(5, 'Mode is %s for provider of %s: %s' % 
                             (needmode, niceformatneed, inst_str))
@@ -454,11 +457,6 @@
             self.log(5, 'TSINFO: %s package requiring %s marked as erase' %
                             (requiringPo, needname))
             txmbr = self.tsInfo.addErase(requiringPo)
-            
-            needpo = None
-            if needpkgtup:
-                needpo = self.getInstalledPackageObject(needpkgtup)
-            
             txmbr.setAsDep(po=needpo)
             checkdeps = 1
         
@@ -480,9 +478,6 @@
                         if po.pkgtup == new:
                             txmbr = self.tsInfo.addObsoleting(po, requiringPo)
                             self.tsInfo.addObsoleted(requiringPo, po)
-                            needpo = None
-                            if needpkgtup:
-                                needpo = self.getInstalledPackageObject(needpkgtup)
                             txmbr.setAsDep(po=needpo)
                             self.log(5, 'TSINFO: Obsoleting %s with %s to resolve dep.' % (requiringPo, po))
                             checkdeps = 1
@@ -513,11 +508,7 @@
                 for (new, old) in self.up.getUpdatesTuples():
                     if po.pkgtup == new:
                         txmbr = self.tsInfo.addUpdate(po, requiringPo)
-                        needpo = None
-                        if needpkgtup:
-                            needpo = self.getInstalledPackageObject(needpkgtup)
                         txmbr.setAsDep(po=needpo)
-                        
                         self.log(5, 'TSINFO: Updating %s to resolve dep.' % po)
                 checkdeps = 1
                 




More information about the Yum-cvs-commits mailing list