[yum-cvs] yum/yum rpmsack.py,1.36,1.37

James Bowes jbowes at linux.duke.edu
Sat Feb 17 23:16:21 UTC 2007


Update of /home/groups/yum/cvs/yum/yum
In directory login1.linux.duke.edu:/tmp/cvs-serv22987/yum

Modified Files:
	rpmsack.py 
Log Message:
Store hdr and idx in header_dict, to reduce the calls to header_from_index.
Also use header_dict's pkgtups for _get_pkglist.

Testing on my laptop shows depsolving for 'install kdelibs' to go from 7s to
5s, which is on par with old dep solving, with all headers on disk.


Index: rpmsack.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/rpmsack.py,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -r1.36 -r1.37
--- rpmsack.py	12 Feb 2007 22:01:41 -0000	1.36
+++ rpmsack.py	17 Feb 2007 23:16:19 -0000	1.37
@@ -20,6 +20,7 @@
 from rpmUtils import miscutils
 from rpmUtils.transaction import initReadOnlyTransaction
 import misc
+import Errors
 from packages import YumInstalledPackage
 from packageSack import ListPackageSack, PackageSackBase
 
@@ -52,8 +53,11 @@
         '''Getter for the pkglist property. 
         Returns a list of package tuples.
         '''
-        return [ self._hdr2pkgTuple(hdr)
-            for hdr, idx in self._all_packages() ]
+        if not self._header_dict:
+            self._make_header_dict()
+
+        for pkgtup in self._header_dict.keys():
+            yield pkgtup
 
     pkglist = property(_get_pkglist, None)
 
@@ -217,7 +221,9 @@
 
     def _header_from_index(self, idx):
         """returns a package header having been given an index"""
-        
+        warnings.warn('_header_from_index() will go away in a future version of Yum.\n',
+                Errors.FutureDeprecationWarning, stacklevel=2)
+
         ts = self.readOnlyTS()
         try:
             mi = ts.dbMatch(0, idx)
@@ -237,7 +243,7 @@
         
         for (hdr, idx) in self._all_packages():
             pkgtup = self._hdr2pkgTuple(hdr)
-            self._header_dict[pkgtup] = idx
+            self._header_dict[pkgtup] = (hdr, idx)
         
         
     def _search(self, name=None, epoch=None, ver=None, rel=None, arch=None):
@@ -263,9 +269,8 @@
         
         for pkgtup in self._header_dict.keys():
             if match(pkgtup):
-                idx = self._header_dict[pkgtup]
-                for h in self._header_from_index(idx):
-                    yield h, pkgtup, idx
+                (hdr, idx) = self._header_dict[pkgtup]
+                yield hdr, pkgtup, idx
 
     def _search2(self, name=None, epoch=None, version=None, release=None, arch=None):
         '''Generator that yield (header, index) for matching packages




More information about the Yum-cvs-commits mailing list