rpms/yum/devel yum-2.5-sortedconstants.patch, NONE, 1.1 yum-2.5-sortedtransaction.patch, NONE, 1.1 yum-2.5-tsinfo-factory.patch, NONE, 1.1 yum-2.5.1-grouplists.patch, NONE, 1.1 yum.spec, 1.76, 1.77
fedora-cvs-commits at redhat.com
fedora-cvs-commits at redhat.com
Tue Jan 31 23:21:11 UTC 2006
Author: pnasrat
Update of /cvs/dist/rpms/yum/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv27109
Modified Files:
yum.spec
Added Files:
yum-2.5-sortedconstants.patch yum-2.5-sortedtransaction.patch
yum-2.5-tsinfo-factory.patch yum-2.5.1-grouplists.patch
Log Message:
Merge upstream work out of anaconda into yum
yum-2.5-sortedconstants.patch:
constants.py | 8 ++++++++
1 files changed, 8 insertions(+)
--- NEW FILE yum-2.5-sortedconstants.patch ---
Index: yum/constants.py
===================================================================
--- yum.orig/constants.py
+++ yum/constants.py
@@ -35,6 +35,14 @@ TR_OBSOLETEDBY = 4
TR_DEPENDS = 5
TR_DEPENDSON = 6
+# Transaction Member Sort Colors
+# Each node in a topological sort is colored
+# White nodes are unseen, black nodes are seen
+# grey nodes are in progress
+TX_WHITE = 0
+TX_GREY = 1
+TX_BLACK = 2
+
# package object file types
PO_FILE = 1
PO_DIR = 2
yum-2.5-sortedtransaction.patch:
transactioninfo.py | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 52 insertions(+)
--- NEW FILE yum-2.5-sortedtransaction.patch ---
Index: yum/transactioninfo.py
===================================================================
--- yum.orig/transactioninfo.py
+++ yum/transactioninfo.py
@@ -289,6 +289,58 @@ class TransactionData:
self.add(txmbr)
return txmbr
+class SortableTransactionData(TransactionData):
+ """A transaction data implementing topological sort on it's members"""
+ def __init__(self):
+ # Cache of sort
+ self._sorted = []
+ # Current dependency path
+ self.path = []
+ # List of loops
+ self.loops = []
+ # Only resort if transaction data changed
+ self.changed = True
+ TransactionData.__init__(self)
+
+ def _visit(self, txmbr):
+ self.path.append(txmbr.name)
+ txmbr.sortColour = TX_GREY
+ for po in txmbr.depends_on:
+ vertex = self.getMembers(pkgtup=po.pkgtup)[0]
+ if vertex.sortColour == TX_GREY:
+ self._doLoop(vertex.name)
+ if vertex.sortColour == TX_WHITE:
+ self._visit(vertex)
+ txmbr.sortColour = TX_BLACK
+ self._sorted.insert(0, txmbr.pkgtup)
+
+ def _doLoop(self, name):
+ self.path.append(name)
+ loop = self.path[self.path.index(self.path[-1]):]
+ if len(loop) > 2:
+ self.loops.append(loop)
+
+ def add(self, txmember):
+ txmember.sortColour = TX_WHITE
+ TransactionData.add(self, txmember)
+ self.changed = True
+
+ def remove(self, pkgtup):
+ TransactionData.remove(self, pkgtup)
+ self.changed = True
+
+ def sort(self):
+ if self._sorted and not self.changed:
+ return self._sorted
+ self._sorted = []
+ self.changed = False
+ # loop over all members
+ for txmbr in self.getMembers():
+ if txmbr.sortColour == TX_WHITE:
+ self.path = [ ]
+ self._visit(txmbr)
+ self._sorted.reverse()
+ return self._sorted
class TransactionMember:
"""Class to describe a Transaction Member (a pkg to be installed/
yum-2.5-tsinfo-factory.patch:
__init__.py | 5 ++++-
1 files changed, 4 insertions(+), 1 deletion(-)
--- NEW FILE yum-2.5-tsinfo-factory.patch ---
Index: yum/__init__.py
===================================================================
--- yum.orig/__init__.py
+++ yum/__init__.py
@@ -68,6 +68,9 @@ class YumBase(depsolve.Depsolve):
self.localPackages = [] # for local package handling
+ def _transactionDataFactory(self):
+ """Factory method returning TransactionData object"""
+ return transactioninfo.TransactionData()
def log(self, value, msg):
"""dummy log stub"""
@@ -186,7 +189,7 @@ class YumBase(depsolve.Depsolve):
installroot = self.conf.installroot
self.read_ts = rpmUtils.transaction.initReadOnlyTransaction(root=installroot)
- self.tsInfo = transactioninfo.TransactionData()
+ self.tsInfo = self._transactionDataFactory()
self.rpmdb = rpmUtils.RpmDBHolder()
self.initActionTs()
yum-2.5.1-grouplists.patch:
__init__.py | 2 ++
transactioninfo.py | 11 +++++++++++
2 files changed, 13 insertions(+)
--- NEW FILE yum-2.5.1-grouplists.patch ---
--- yum-2.5.1/yum/transactioninfo.py.grouplists 2006-01-31 18:09:10.000000000 -0500
+++ yum-2.5.1/yum/transactioninfo.py 2006-01-31 18:09:23.000000000 -0500
@@ -157,6 +157,8 @@
updated, installed, erased, obsoleted, depupdated, depinstalled
deperased"""
+ self.instgroups = []
+ self.removedgroups = []
self.removed = []
self.installed = []
self.updated = []
@@ -173,12 +175,19 @@
self.updated.append(txmbr)
elif txmbr.output_state == TS_INSTALL or txmbr.output_state == TS_TRUEINSTALL:
+ if txmbr.groups:
+ for g in txmbr.groups:
+ if g not in self.instgroups:
+ self.instgroups.append(g)
if txmbr.isDep:
self.depinstalled.append(txmbr)
else:
self.installed.append(txmbr)
elif txmbr.output_state == TS_ERASE:
+ for g in txmbr.groups:
+ if g not in self.instgroups:
+ self.removedgroups.append(g)
if txmbr.isDep:
self.depremoved.append(txmbr)
else:
@@ -200,6 +209,8 @@
self.depupdated.sort()
self.depinstalled.sort()
self.depremoved.sort()
+ self.instgroups.sort()
+ self.removedgroups.sort()
def addInstall(self, po):
--- yum-2.5.1/yum/__init__.py.grouplists 2006-01-31 18:09:15.000000000 -0500
+++ yum-2.5.1/yum/__init__.py 2006-01-31 18:09:23.000000000 -0500
@@ -1258,6 +1258,8 @@
for pkg in thisgroup.packages:
txmbrs = self.remove(name=pkg)
txmbrs_used.extend(txmbrs)
+ for txmbr in txmbrs:
+ txmbr.groups.append(thisgroup.groupid)
return txmbrs_used
Index: yum.spec
===================================================================
RCS file: /cvs/dist/rpms/yum/devel/yum.spec,v
retrieving revision 1.76
retrieving revision 1.77
diff -u -r1.76 -r1.77
--- yum.spec 15 Jan 2006 12:45:53 -0000 1.76
+++ yum.spec 31 Jan 2006 23:21:09 -0000 1.77
@@ -3,7 +3,7 @@
Summary: RPM installer/updater
Name: yum
Version: 2.5.1
-Release: 2
+Release: 3
License: GPL
Group: System Environment/Base
Source0: http://linux.duke.edu/projects/yum/download/2.5/yum-%{version}.tar.gz
@@ -13,6 +13,10 @@
# default plugins here
Source100: installonlyn.py
Patch0: yum-2.5.1-remove.patch
+Patch1: yum-2.5.1-grouplists.patch
+Patch2: yum-2.5-sortedconstants.patch
+Patch3: yum-2.5-sortedtransaction.patch
+Patch4: yum-2.5-tsinfo-factory.patch
URL: http://linux.duke.edu/yum/
BuildArchitectures: noarch
BuildRequires: python
@@ -33,6 +37,10 @@
%prep
%setup -q
%patch0 -p1 -b .remove
+%patch1 -p1 -b .grouplists
+%patch2 -p0 -b .sortedconstants
+%patch3 -p0 -b .sortedtransaction
+%patch4 -p0 -b .tsinfofactory
%build
make
@@ -94,6 +102,9 @@
/usr/lib/yum-plugins/*
%changelog
+* Tue Jan 31 2006 Paul Nasrat <pnasrat at redhat.com> - 2.5.1-3
+- Merge upstream patches (sortabletransactiondata, grouplists)
+
* Sun Jan 15 2006 Paul Nasrat <pnasrat at redhat.com> - 2.5.1-2
- Fix group removal traceback (#177737)
More information about the fedora-cvs-commits
mailing list