summaryrefslogtreecommitdiffstats
path: root/pym/portage/getbinpkg.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2008-04-07 22:12:04 +0000
committerZac Medico <zmedico@gentoo.org>2008-04-07 22:12:04 +0000
commit2527a0bc8f3fc9be217e0ab5b31468d2b36718f6 (patch)
tree55051cc2030ba83675eecf9719c009d1a7de8a33 /pym/portage/getbinpkg.py
parent8b0e7e592421a32bbc1740aac7f5c428fa6f5944 (diff)
downloadportage-2527a0bc8f3fc9be217e0ab5b31468d2b36718f6.tar.gz
portage-2527a0bc8f3fc9be217e0ab5b31468d2b36718f6.tar.bz2
portage-2527a0bc8f3fc9be217e0ab5b31468d2b36718f6.zip
* Optimize metadata caching in pordbapi and bindbapi so that cache is
never pulled for the same package twice. * Cache a Package instances constructed during package selection and reuse them during later package selections. svn path=/main/trunk/; revision=9741
Diffstat (limited to 'pym/portage/getbinpkg.py')
-rw-r--r--pym/portage/getbinpkg.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/pym/portage/getbinpkg.py b/pym/portage/getbinpkg.py
index 147007659..376767957 100644
--- a/pym/portage/getbinpkg.py
+++ b/pym/portage/getbinpkg.py
@@ -667,10 +667,14 @@ def _cmp_cpv(d1, d2):
class PackageIndex(object):
- def __init__(self, default_pkg_data=None, inherited_keys=None):
+ def __init__(self, default_header_data=None, default_pkg_data=None,
+ inherited_keys=None):
+ self._default_header_data = default_header_data
self._default_pkg_data = default_pkg_data
self._inherited_keys = inherited_keys
self.header = {}
+ if self._default_header_data:
+ self.header.update(self._default_header_data)
self.packages = []
self.modified = True
@@ -725,7 +729,8 @@ class PackageIndex(object):
self.header["PACKAGES"] = str(len(self.packages))
keys = self.header.keys()
keys.sort()
- self._writepkgindex(pkgfile, [(k, self.header[k]) for k in keys])
+ self._writepkgindex(pkgfile, [(k, self.header[k]) \
+ for k in keys if self.header[k]])
for metadata in sorted(self.packages, _cmp_cpv):
metadata = metadata.copy()
cpv = metadata["CPV"]