[yum-cvs] yum/yum __init__.py, 1.189, 1.190 transactioninfo.py, 1.30, 1.31
Paul Nasrat
pnasrat at linux.duke.edu
Thu Mar 2 15:11:59 UTC 2006
Update of /home/groups/yum/cvs/yum/yum
In directory login1.linux.duke.edu:/tmp/cvs-serv5175/yum
Modified Files:
__init__.py transactioninfo.py
Log Message:
Add conditional group support
Index: __init__.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/__init__.py,v
retrieving revision 1.189
retrieving revision 1.190
diff -u -r1.189 -r1.190
--- __init__.py 28 Feb 2006 06:53:03 -0000 1.189
+++ __init__.py 2 Mar 2006 15:11:57 -0000 1.190
@@ -70,6 +70,8 @@
def _transactionDataFactory(self):
"""Factory method returning TransactionData object"""
+ if self.conf.enable_group_conditionals:
+ return transactioninfo.ConditionalTransactionData()
return transactioninfo.TransactionData()
def log(self, value, msg):
@@ -1376,6 +1378,22 @@
for txmbr in txmbrs:
txmbr.groups.append(thisgroup.groupid)
+ if self.conf.enable_group_conditionals:
+ for condreq, cond in thisgroup.conditional_packages.iteritems():
+ if self.rpmdb.installed(name = cond):
+ txmbrs = self.install(name = condreq)
+ txmbrs_used.extend(txmbrs)
+ for txmbr in txmbrs:
+ txmbr.groups.append(thisgroup.groupid)
+ continue
+ pkgs = self.pkgSack.searchNevra(name=condreq)
+ if pkgs:
+ pkgs = self.bestPackagesFromList(pkgs)
+ if self.tsInfo.conditionals.has_key(cond):
+ self.tsInfo.conditionals[cond].extend(pkgs)
+ else:
+ self.tsInfo.conditionals[cond] = pkgs
+
return txmbrs_used
def deselectGroup(self, grpid):
Index: transactioninfo.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/transactioninfo.py,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- transactioninfo.py 1 Feb 2006 21:12:31 -0000 1.30
+++ transactioninfo.py 2 Mar 2006 15:11:57 -0000 1.31
@@ -295,7 +295,22 @@
self.add(txmbr)
return txmbr
-class SortableTransactionData(TransactionData):
+class ConditionalTransactionData(TransactionData):
+ """A transaction data implementing conditional package addition"""
+ def __init__(self):
+ # Key: package name to trigger condition
+ # Value: list of package objects to add
+ self.conditionals = {}
+ TransactionData.__init__(self)
+
+ def add(self, txmember):
+ TransactionData.add(self, txmember)
+ if self.conditionals.has_key(txmember.name):
+ for po in self.conditionals[txmember.name]:
+ condtxmbr = self.addInstall(po)
+ condtxmbr.setAsDep(po=txmember.po)
+
+class SortableTransactionData(ConditionalTransactionData):
"""A transaction data implementing topological sort on it's members"""
def __init__(self):
# Cache of sort
@@ -306,7 +321,7 @@
self.loops = []
# Only resort if transaction data changed
self.changed = True
- TransactionData.__init__(self)
+ ConditionalTransactionData.__init__(self)
def _visit(self, txmbr):
self.path.append(txmbr.name)
@@ -328,11 +343,11 @@
def add(self, txmember):
txmember.sortColour = TX_WHITE
- TransactionData.add(self, txmember)
+ ConditionalTransactionData.add(self, txmember)
self.changed = True
def remove(self, pkgtup):
- TransactionData.remove(self, pkgtup)
+ ConditionalTransactionData.remove(self, pkgtup)
self.changed = True
def sort(self):
More information about the Yum-cvs-commits
mailing list