summaryrefslogtreecommitdiffstats
path: root/pym/portage/getbinpkg.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2007-05-22 22:38:27 +0000
committerZac Medico <zmedico@gentoo.org>2007-05-22 22:38:27 +0000
commit871e66b69027fc6727a0e8c4c7b7b4ac856d0880 (patch)
tree1ec3e3edfb6b8fe4957fd4d037849521f55c93b1 /pym/portage/getbinpkg.py
parent2355c7f9a4292abd795dce5f7bbbfa4a0e88ea4d (diff)
downloadportage-871e66b69027fc6727a0e8c4c7b7b4ac856d0880.tar.gz
portage-871e66b69027fc6727a0e8c4c7b7b4ac856d0880.tar.bz2
portage-871e66b69027fc6727a0e8c4c7b7b4ac856d0880.zip
Split reading/writing of $PKGDIR/Packages into a PackageIndex class.
svn path=/main/trunk/; revision=6584
Diffstat (limited to 'pym/portage/getbinpkg.py')
-rw-r--r--pym/portage/getbinpkg.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/pym/portage/getbinpkg.py b/pym/portage/getbinpkg.py
index 070b036b5..f21dce364 100644
--- a/pym/portage/getbinpkg.py
+++ b/pym/portage/getbinpkg.py
@@ -590,3 +590,35 @@ def writepkgindex(pkgfile, items):
for k, v in items:
pkgfile.write("%s: %s\n" % (k, v))
pkgfile.write("\n")
+
+class PackageIndex(object):
+
+ def __init__(self):
+ self.header = {}
+ self.packages = {}
+
+ def read(self, pkgfile):
+ self.header.update(readpkgindex(pkgfile))
+ while True:
+ d = readpkgindex(pkgfile)
+ if not d:
+ break
+ mycpv = d.get("CPV")
+ if not mycpv:
+ continue
+ d.setdefault("SLOT", "0")
+ self.packages[mycpv] = d
+
+ def write(self, pkgfile):
+ cpv_all = self.packages.keys()
+ cpv_all.sort()
+ import time
+ self.header["TIMESTAMP"] = str(long(time.time()))
+ self.header["PACKAGES"] = str(len(cpv_all))
+ writepkgindex(pkgfile, self.header.iteritems())
+ for cpv in cpv_all:
+ metadata = self.packages[cpv]
+ if metadata["SLOT"] == "0":
+ metadata = metadata.copy()
+ del metadata["SLOT"]
+ writepkgindex(pkgfile, metadata.iteritems())