diff options
author | Zac Medico <zmedico@gentoo.org> | 2007-05-22 22:38:27 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2007-05-22 22:38:27 +0000 |
commit | 871e66b69027fc6727a0e8c4c7b7b4ac856d0880 (patch) | |
tree | 1ec3e3edfb6b8fe4957fd4d037849521f55c93b1 /pym/portage/getbinpkg.py | |
parent | 2355c7f9a4292abd795dce5f7bbbfa4a0e88ea4d (diff) | |
download | portage-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.py | 32 |
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()) |