summaryrefslogtreecommitdiffstats
path: root/pym/portage/getbinpkg.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2008-03-07 23:52:35 +0000
committerZac Medico <zmedico@gentoo.org>2008-03-07 23:52:35 +0000
commit6898735370872391ea2beb19d7366070f207d170 (patch)
tree592e0ab2539051ba8d557bffb7efd059e0146fbb /pym/portage/getbinpkg.py
parent6131dfaf0c8965478dd1d993b6dd3b2c0623493d (diff)
downloadportage-6898735370872391ea2beb19d7366070f207d170.tar.gz
portage-6898735370872391ea2beb19d7366070f207d170.tar.bz2
portage-6898735370872391ea2beb19d7366070f207d170.zip
Convert PackageIndex.packages from a dict to a list so that in the future
it will be possible to support multiple packages with the same cpv. svn path=/main/trunk/; revision=9452
Diffstat (limited to 'pym/portage/getbinpkg.py')
-rw-r--r--pym/portage/getbinpkg.py23
1 files changed, 16 insertions, 7 deletions
diff --git a/pym/portage/getbinpkg.py b/pym/portage/getbinpkg.py
index d2d1f75ab..e3f97e7a2 100644
--- a/pym/portage/getbinpkg.py
+++ b/pym/portage/getbinpkg.py
@@ -675,13 +675,23 @@ def writepkgindex(pkgfile, items):
pkgfile.write("%s: %s\n" % (k, v))
pkgfile.write("\n")
+def _cmp_cpv(d1, d2):
+ cpv1 = d1["CPV"]
+ cpv2 = d2["CPV"]
+ if cpv1 > cpv2:
+ return 1
+ elif cpv1 == cpv2:
+ return 0
+ else:
+ return -1
+
class PackageIndex(object):
def __init__(self, default_pkg_data=None, inherited_keys=None):
self._default_pkg_data = default_pkg_data
self._inherited_keys = inherited_keys
self.header = {}
- self.packages = {}
+ self.packages = []
self.modified = True
def read(self, pkgfile):
@@ -707,19 +717,18 @@ class PackageIndex(object):
v = self.header.get(k)
if v is not None:
d.setdefault(k, v)
- self.packages[mycpv] = d
+ self.packages.append(d)
def write(self, pkgfile):
- cpv_all = self.packages.keys()
- cpv_all.sort()
if self.modified:
self.header["TIMESTAMP"] = str(long(time.time()))
- self.header["PACKAGES"] = str(len(cpv_all))
+ self.header["PACKAGES"] = str(len(self.packages))
keys = self.header.keys()
keys.sort()
writepkgindex(pkgfile, [(k, self.header[k]) for k in keys])
- for cpv in cpv_all:
- metadata = self.packages[cpv].copy()
+ for metadata in sorted(self.packages, _cmp_cpv):
+ metadata = metadata.copy()
+ cpv = metadata["CPV"]
if self._inherited_keys:
for k in self._inherited_keys:
v = self.header.get(k)