[yum-git] 2 commits - yum/packages.py yum/rpmsack.py

James Antill james at linux.duke.edu
Mon Mar 24 17:55:27 UTC 2008


 yum/packages.py |   10 +++++++---
 yum/rpmsack.py  |   21 ++++++++-------------
 2 files changed, 15 insertions(+), 16 deletions(-)

New commits:
commit 72569b70ce74707c07f5bced2474f12feb84199b
Author: James Antill <james at and.org>
Date:   Mon Mar 24 13:52:48 2008 -0400

     Special workaround for depsolving, load prco data without keeping hdr
    
    yum update (Fed-8 => rawhide)
    -----------------------------
    Before: 48.6470 Peak[527.20MB] Size[518.20MB] RSS[297.44MB]
    After:  49.1763 Peak[458.98MB] Size[449.98MB] RSS[229.27MB]

diff --git a/yum/packages.py b/yum/packages.py
index 392b794..b7d507b 100644
--- a/yum/packages.py
+++ b/yum/packages.py
@@ -744,6 +744,9 @@ class YumHeaderPackage(YumAvailablePackage):
             self.__prcoPopulated = True
         return YumAvailablePackage.returnPrco(self, prcotype, printable)
 
+    def _get_hdr(self):
+        return self.hdr
+
     def _populatePrco(self):
         "Populate the package object with the needed PRCO interface."
 
@@ -751,13 +754,14 @@ class YumHeaderPackage(YumAvailablePackage):
                      "CONFLICT": "conflicts",
                      "REQUIRE": "requires",
                      "PROVIDE": "provides" }
+        hdr = self._get_hdr()
         for tag in tag2prco:
-            name = self.hdr[getattr(rpm, 'RPMTAG_%sNAME' % tag)]
+            name = hdr[getattr(rpm, 'RPMTAG_%sNAME' % tag)]
 
-            lst = self.hdr[getattr(rpm, 'RPMTAG_%sFLAGS' % tag)]
+            lst = hdr[getattr(rpm, 'RPMTAG_%sFLAGS' % tag)]
             flag = map(rpmUtils.miscutils.flagToString, lst)
 
-            lst = self.hdr[getattr(rpm, 'RPMTAG_%sVERSION' % tag)]
+            lst = hdr[getattr(rpm, 'RPMTAG_%sVERSION' % tag)]
             vers = map(rpmUtils.miscutils.stringToVersion, lst)
 
             prcotype = tag2prco[tag]
diff --git a/yum/rpmsack.py b/yum/rpmsack.py
index c03e6e0..9c08f25 100644
--- a/yum/rpmsack.py
+++ b/yum/rpmsack.py
@@ -27,16 +27,7 @@ from packageSack import PackageSackBase
 class RPMInstalledPackage(YumInstalledPackage):
 
     def __init__(self, rpmhdr, index, rpmdb):
-        hdr = {}
-        for key in ['name', 'arch', 'epoch', 'version', 'release',
-                    'summary', 'description', 'size',
-                    rpm.RPMTAG_SHA1HEADER]:
-            hdr[key] = rpmhdr[key]
-        if not hdr[rpm.RPMTAG_SHA1HEADER]:
-            key = 'buildtime'
-            hdr[key] = rpmhdr[key]
-        YumInstalledPackage.__init__(self, hdr)
-
+        YumInstalledPackage.__init__(self, rpmhdr)
         # NOTE: We keep summary/description/url because it doesn't add much
         # and "yum search" uses them all.
         self.url       = rpmhdr['url']
@@ -49,20 +40,21 @@ class RPMInstalledPackage(YumInstalledPackage):
         self._has_hdr = False
         del self.hdr
 
-    def __getattr__(self, varname):
+    def _get_hdr(self):
         # Note that we can't use hasattr(self, 'hdr') or we'll recurse
         if self._has_hdr:
-            return self.hdr[thing]
+            return self.hdr
 
         ts = self.rpmdb.readOnlyTS()
         mi = ts.dbMatch(0, self.idx)
-        hdr = mi.next()
+        return mi.next()
+        return self.hdr
 
+    def __getattr__(self, varname):
+        self.hdr = val = self._get_hdr()
         self._has_hdr = True
-        self.hdr = val = hdr
-
         if varname != 'hdr':   # This is very unusual, for anything it does
-            val = hdr[varname] # happen for it might be worth adding at __init__
+            val = val[varname] # happen for it might be worth adding at __init_
 
         return val
 
commit 4ec0b5c4f6c24abf757939dce40301dd4f45ad40
Author: James Antill <james at and.org>
Date:   Mon Mar 24 10:47:24 2008 -0400

    Add buildtime for hacky pkgid

diff --git a/yum/rpmsack.py b/yum/rpmsack.py
index a8ad67a..c03e6e0 100644
--- a/yum/rpmsack.py
+++ b/yum/rpmsack.py
@@ -32,6 +32,9 @@ class RPMInstalledPackage(YumInstalledPackage):
                     'summary', 'description', 'size',
                     rpm.RPMTAG_SHA1HEADER]:
             hdr[key] = rpmhdr[key]
+        if not hdr[rpm.RPMTAG_SHA1HEADER]:
+            key = 'buildtime'
+            hdr[key] = rpmhdr[key]
         YumInstalledPackage.__init__(self, hdr)
 
         # NOTE: We keep summary/description/url because it doesn't add much



More information about the Yum-cvs-commits mailing list