rpms/yum/devel yum-2.5.3-conditionalgroups.patch, NONE, 1.1 yum.spec, 1.82, 1.83

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Thu Mar 2 17:40:43 UTC 2006


Author: pnasrat

Update of /cvs/dist/rpms/yum/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv13204

Modified Files:
	yum.spec 
Added Files:
	yum-2.5.3-conditionalgroups.patch 
Log Message:
conditional groups

yum-2.5.3-conditionalgroups.patch:
 docs/yum.conf.5        |    4 ++++
 output.py              |    5 +++++
 yum/__init__.py        |   18 ++++++++++++++++++
 yum/config.py          |    1 +
 yum/transactioninfo.py |   23 +++++++++++++++++++----
 5 files changed, 47 insertions(+), 4 deletions(-)

--- NEW FILE yum-2.5.3-conditionalgroups.patch ---
--- yum-2.5.3/yum/transactioninfo.py.cond	2006-02-10 00:08:59.000000000 -0500
+++ yum-2.5.3/yum/transactioninfo.py	2006-03-02 11:25:13.000000000 -0500
@@ -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):
--- yum-2.5.3/yum/config.py.cond	2006-02-13 15:40:21.000000000 -0500
+++ yum-2.5.3/yum/config.py	2006-03-02 11:25:13.000000000 -0500
@@ -508,6 +508,7 @@
     enabled = BoolOption(True)
     plugins = BoolOption(False)
     enablegroups = BoolOption(True)
+    enable_group_conditionals = BoolOption(True)
 
     timeout = FloatOption(30.0)
 
--- yum-2.5.3/yum/__init__.py.cond	2006-02-22 17:07:19.000000000 -0500
+++ yum-2.5.3/yum/__init__.py	2006-03-02 11:25:13.000000000 -0500
@@ -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):
@@ -1373,6 +1375,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):
--- yum-2.5.3/docs/yum.conf.5.cond	2006-02-10 00:19:10.000000000 -0500
+++ yum-2.5.3/docs/yum.conf.5	2006-03-02 11:25:13.000000000 -0500
@@ -110,6 +110,10 @@
 repository will be used. If \fBoverwrite_groups\fR is `0' then the groups
 from all matching repositories will be merged together as one large group.
 
+.IP \fBenable_group_conditionals\fR
+Either `0' or `1'. Determines whether yum will allow the use of conditionals
+packages. Default is `1' (package conditionals are allowed).
+
 .IP \fBinstallroot \fR
 Specifies an alternative installroot, relative to which all packages will be
 installed. 
--- yum-2.5.3/output.py.cond	2005-12-08 03:01:37.000000000 -0500
+++ yum-2.5.3/output.py	2006-03-02 11:25:23.000000000 -0500
@@ -142,6 +142,11 @@
             for item in group.optional_packages.keys():
                 print '   %s' % item
 
+        if len(group.conditional_packages.keys()) > 0:
+            print ' Conditional Packages:'
+            for item, cond in group.conditional_packages.iteritems():
+                print '   %s' % (item,)
+
     def depListOutput(self, results):
         """take a list of findDeps results and 'pretty print' the output"""
         


Index: yum.spec
===================================================================
RCS file: /cvs/dist/rpms/yum/devel/yum.spec,v
retrieving revision 1.82
retrieving revision 1.83
diff -u -r1.82 -r1.83
--- yum.spec	24 Feb 2006 23:39:32 -0000	1.82
+++ yum.spec	2 Mar 2006 17:40:29 -0000	1.83
@@ -3,7 +3,7 @@
 Summary: RPM installer/updater
 Name: yum
 Version: 2.5.3
-Release: 2
+Release: 3
 License: GPL
 Group: System Environment/Base
 Source0: http://linux.duke.edu/projects/yum/download/2.5/yum-%{version}.tar.gz
@@ -12,6 +12,7 @@
 Source99: plugin.conf
 # default plugins here
 Source100: installonlyn.py
+Patch0: yum-2.5.3-conditionalgroups.patch
 URL: http://linux.duke.edu/yum/
 BuildArchitectures: noarch
 BuildRequires: python
@@ -31,6 +32,7 @@
 
 %prep
 %setup -q
+%patch0 -p1 -b .cond
 
 %build
 make
@@ -92,6 +94,9 @@
 /usr/lib/yum-plugins/*
 
 %changelog
+* Thu Mar 02 2006 Paul Nasrat <pnasrat at redhat.com> - 2.5.3-3
+- Conditional group support (#181858)
+
 * Fri Feb 24 2006 Jeremy Katz <katzj at redhat.com> - 2.5.3-2
 - fix installyonlyn bug with tokeep > 2 (#176704)
 




More information about the fedora-cvs-commits mailing list