[yum-cvs] yum/yum depsolve.py,1.111,1.112
Jeremy Katz
katzj at linux.duke.edu
Mon Feb 12 22:46:04 UTC 2007
Update of /home/groups/yum/cvs/yum/yum
In directory login1.linux.duke.edu:/tmp/cvs-serv11247/yum
Modified Files:
depsolve.py
Log Message:
make removes fast too.
Index: depsolve.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/depsolve.py,v
retrieving revision 1.111
retrieving revision 1.112
diff -u -r1.111 -r1.112
--- depsolve.py 12 Feb 2007 22:01:41 -0000 1.111
+++ depsolve.py 12 Feb 2007 22:46:02 -0000 1.112
@@ -902,11 +902,29 @@
for prov in provs:
if prov[0].startswith('rpmlib('): # ignore rpmlib() provides
continue
- if prov[0].startswith("/usr/share/doc"): # ignore doc files
+ if prov[0].startswith("/usr/share/doc"): # XXX: ignore doc files
continue
self.verbose_logger.log(logginglevels.DEBUG_4, "looking to see what requires %s of %s" %(prov, txmbr.po))
(r, f, v) = prov
+ removeList = []
+ # we don't care if they require exactly our version
+ for pkgtup in self.rpmdb.whatRequires(r, None, v):
+ if pkgtup in removeList:
+ continue
+ # check the rpmdb first for something still installed
+ txmbrs = self.tsInfo.getMembers(pkgtup)
+ toRemove = False
+ for tx in txmbrs:
+ if tx.output_state in TS_REMOVE_STATES:
+ toRemove = True
+ break
+ if not toRemove:
+ removeList.append(pkgtup)
+
+ if len(removeList) == 0:
+ continue
+
# if something else provides this name and it's not being
# removed, then we don't need to worry about it
stillavail = False
@@ -915,32 +933,21 @@
if len(txmbrs) == 0: # not in tsinfo, so must still be avail
stillavail = True
break
- for txmbr in txmbrs:
- if txmbr.output_state not in TS_REMOVE_STATES:
+ for tx in txmbrs:
+ if tx.output_state not in TS_REMOVE_STATES:
stillavail = True # it's being installed
break
if stillavail:
self.verbose_logger.log(logginglevels.DEBUG_1, "more than one package provides %s" %(r,))
continue
- # we don't care if they require exactly our version
- f = None
- for pkgtup in self.rpmdb.whatRequires(r, f, v):
- # check the rpmdb first for something still installed
- txmbrs = self.tsInfo.getMembers(pkgtup)
- toRemove = False
- for txmbr in txmbrs:
- if txmbr.output_state in TS_REMOVE_STATES:
- toRemove = True
- break
- if not toRemove:
- po = self.getInstalledPackageObject(pkgtup)
- self.verbose_logger.info("removing %s for %s, was provided by %s" %(po, r, txmbr.po))
- tx = self.tsInfo.addErase(po)
- tx.setAsDep(po = txmbr.po)
- ret.append(tx)
-
-
+ for pkgtup in removeList:
+ po = self.getInstalledPackageObject(pkgtup)
+ self.verbose_logger.info("removing %s for %s, was provided by %s" %(po, r, txmbr.po))
+ tx = self.tsInfo.addErase(po)
+ tx.setAsDep(po = txmbr.po)
+ ret.append(tx)
+
return ret
def tsCheck(self, tocheck):
More information about the Yum-cvs-commits
mailing list