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