Ops...
There are some imports missing...
Try this one...
Florian Festi
Index: yum/transactioninfo.py
===================================================================
RCS file: /cvsroot/yum/cvs/yum/yum/transactioninfo.py,v
retrieving revision 1.41
diff -u -r1.41 transactioninfo.py
--- yum/transactioninfo.py 6 Jun 2007 15:18:55 -0000 1.41
+++ yum/transactioninfo.py 14 Jun 2007 12:54:09 -0000
@@ -21,7 +21,9 @@
# with the given txmbr.
from constants import *
-from packageSack import ListPackageSack
+from packageSack import ListPackageSack, PackageSack
+from packages import YumInstalledPackage
+from sqlitesack import YumAvailablePackageSqlite
import Errors
import warnings
@@ -38,6 +40,10 @@
self.conditionals = {} # key = pkgname, val = list of pos to add
+ self.rpmdb = None
+ self.pkgSack = None
+ self.localSack = PackageSack()
+
# lists of txmbrs in their states - just placeholders
self.instgroups = []
self.removedgroups = []
@@ -144,6 +150,10 @@
self.pkgdict[txmember.pkgtup].append(txmember)
self.changed = True
+ # Is this the right criteria?
+ if not isinstance(txmember.po, (YumInstalledPackage, YumAvailablePackageSqlite)):
+ self.localSack.addPackage(txmember.po)
+
if self.conditionals.has_key(txmember.name):
for po in self.conditionals[txmember.name]:
condtxmbr = self.addInstall(po)
@@ -157,6 +167,9 @@
return
for txmbr in self.pkgdict[pkgtup]:
txmbr.po.state = None
+ # Is this the right criteria?
+ if not isinstance(txmbr.po, (YumInstalledPackage, YumAvailablePackageSqlite)):
+ self.localSack.delPackage(txmbr.po)
del self.pkgdict[pkgtup]
self.changed = True
@@ -337,6 +350,61 @@
return txmbr
+ def setDatabases(self, rpmdb, pkgSack):
+ self.rpmdb = rpmdb
+ self.pkgSack = pkgSack
+
+ def getNewProvides(self, name, flag=None, version=None):
+ """return dict { packages -> list of matching provides }
+ searches in packages to be installed"""
+ result = { }
+ for pkg, hits in self.pkgSack.getProvides(name, flag, version).iteritems():
+ if self.getMembersWithState(pkg.pkgtup, TS_INSTALL_STATES):
+ result[pkg] = hits
+ result.update(self.localSack.getProvides(name, flag, version))
+ return result
+
+ def getOldProvides(self, name, flag=None, version=None):
+ """return dict { packages -> list of matching provides }
+ searches in packages already installed and not going to be removed"""
+ result = { }
+ for pkg, hits in self.rpmdb.getProvides(name, flag, version).iteritems():
+ if not self.getMembersWithState(pkg.pkgtup, TS_REMOVE_STATES):
+ result[pkg] = hits
+ return result
+
+ def getProvides(self, name, flag=None, version=None):
+ """return dict { packages -> list of matching provides }"""
+ result = self.getOldProvides(name, flag, version)
+ result.update(self.getNewProvides(name, flag, version))
+ return result
+
+ def getNewRequires(self, name, flag=None, version=None):
+ """return dict { packages -> list of matching provides }
+ searches in packages to be installed"""
+ result = { }
+ for pkg, hits in self.pkgSack.getRequires(name, flag, version).iteritems():
+ if self.getMembersWithState(pkg.pkgtup, TS_INSTALL_STATES):
+ result[pkg] = hits
+ result.update(self.localSack.getRequires(name, flag, version))
+ return result
+
+
+ def getOldRequires(self, name, flag=None, version=None):
+ """return dict { packages -> list of matching provides }
+ searches in packages already installed and not going to be removed"""
+ result = { }
+ for pkg, hits in self.rpmdb.getRequires(name, flag, version).iteritems():
+ if not self.getMembersWithState(pkg.pkgtup, TS_REMOVE_STATES):
+ result[pkg] = hits
+ return result
+
+ def getRequires(self, name, flag=None, version=None):
+ """return dict { packages -> list of matching provides }"""
+ result = self.getOldRequires(name, flag, version)
+ result.update(self.getNewRequires(name, flag, version))
+ return result
+
class ConditionalTransactionData(TransactionData):
"""A transaction data implementing conditional package addition"""
def __init__(self):
_______________________________________________
Yum-devel mailing list
[email protected]
https://lists.dulug.duke.edu/mailman/listinfo/yum-devel