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