[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