[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