[yum-cvs] yum/yum depsolve.py,1.146,1.147
Seth Vidal
skvidal at linux.duke.edu
Wed Mar 28 08:48:50 UTC 2007
Update of /home/groups/yum/cvs/yum/yum
In directory login1.linux.duke.edu:/tmp/cvs-serv15332/yum
Modified Files:
depsolve.py
Log Message:
make it a small amount faster. searching the transaction set members is slow
- it needs to be faster
Index: depsolve.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/depsolve.py,v
retrieving revision 1.146
retrieving revision 1.147
diff -u -r1.146 -r1.147
--- depsolve.py 28 Mar 2007 08:09:14 -0000 1.146
+++ depsolve.py 28 Mar 2007 08:48:48 -0000 1.147
@@ -1150,22 +1150,36 @@
# if anything else provides this as well and is installed or
# to be installed, then skip this whole step
other_provider = False
- tsSack = self.tsInfo.getMembers(None, TS_INSTALL_STATES, asSack=True)
- for provpo in self.rpmdb.searchProvides(r) + tsSack.searchProvides(r):
- if self.tsInfo.getMembers(provpo.pkgtup, TS_REMOVE_STATES): # if it's being removed in the ts, it doesn't count
- continue
+
+ #tsSack = self.tsInfo.getMembers(None, TS_INSTALL_STATES, asSack=True)
+ potential_providers = self.rpmdb.searchProvides(r)
+ # FIXME the below is expensive - make it less so
+ for txmbr in self.tsInfo.getMembers(None, TS_INSTALL_STATES):
+ if r in txmbr.po.provides_names or r in txmbr.po.filelist:
+ potential_providers.append(txmbr.po)
+
+ for provpo in potential_providers:
if provpo.pkgtup in self._removing: # if we're going to be removed in the ts, it doesn't count
continue
+
+ if self.tsInfo.getMembers(provpo.pkgtup, TS_REMOVE_STATES): # if it's being removed in the ts, it doesn't count
+ continue
+
if not provpo.checkPrco('provides', (r, f, v)): # if it doesn't actually provide the req, it doesn't count
continue
other_provider = True
-
+
if other_provider:
return []
-
+
# see what requires this provide name
- tsSack = self.tsInfo.getMembers(None, TS_INSTALL_STATES, asSack=True)
- for reqpo in self.rpmdb.searchRequires(r) + tsSack.searchRequires(r):
+ potential_remove = self.rpmdb.searchRequires(r)
+ # FIXME the below is expensive - make it less so
+ for txmbr in self.tsInfo.getMembers(None, TS_INSTALL_STATES):
+ if r in txmbr.po.requires_names:
+ potential_remove.append(txmbr.po)
+
+ for reqpo in potential_remove:
self.verbose_logger.log(logginglevels.DEBUG_2, "looking at %s as a requirement of %s", r, reqpo)
isok = False
# ignore stuff already being removed
More information about the Yum-cvs-commits
mailing list