[yum-commits] repodiff.py

James Antill james at osuosl.org
Fri Jun 10 16:21:03 UTC 2011


 repodiff.py |   11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

New commits:
commit 2d5ccebca68a72fe9c055f6b3e70bc93b03fa96c
Author: James Antill <james at and.org>
Date:   Fri Jun 10 12:20:56 2011 -0400

    Huge speedup for large number of add/remove obsoletes processing.

diff --git a/repodiff.py b/repodiff.py
index 8c5e582..67c162e 100755
--- a/repodiff.py
+++ b/repodiff.py
@@ -106,11 +106,12 @@ class DiffYum(yum.YumBase):
             elif not npkg.verEQ(opkg):
                 modified.append((npkg, opkg))
 
-        ao = []
+        ao = {}
         for pkg in add:
-            if not pkg.obsoletes:
-                continue
-            ao.append(pkg)
+            for obs_name in set(pkg.obsoletes_names):
+                if obs_name not in ao:
+                    ao[obs_name] = []
+                ao[obs_name].append(pkg)
 
         #  Note that this _only_ shows something when you have an additional
         # package obsoleting a removed package. If the obsoleted package is
@@ -119,7 +120,7 @@ class DiffYum(yum.YumBase):
         for po in remove:
             # Remember: Obsoletes are for package names only.
             poprovtup = (po.name, 'EQ', (po.epoch, po.ver, po.release))
-            for newpo in ao:
+            for newpo in ao.get(po.name, []):
                 if newpo.inPrcoRange('obsoletes', poprovtup):
                     obsoleted[po] = newpo
                     break


More information about the Yum-commits mailing list