summaryrefslogtreecommitdiff
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 /bin/emaint
parentMake --prune and --depclean operate with missing dependencies when only (diff)
downloadportage-multirepo-6898735370872391ea2beb19d7366070f207d170.tar.gz
portage-multirepo-6898735370872391ea2beb19d7366070f207d170.tar.bz2
portage-multirepo-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 'bin/emaint')
-rwxr-xr-xbin/emaint20
1 files changed, 14 insertions, 6 deletions
diff --git a/bin/emaint b/bin/emaint
index 8464d131..e0baa138 100755
--- a/bin/emaint
+++ b/bin/emaint
@@ -129,14 +129,17 @@ class BinhostHandler(object):
onProgress(maxval, 0)
pkgindex = self._pkgindex
missing = []
+ metadata = {}
+ for d in pkgindex.packages:
+ metadata[d["CPV"]] = d
for i, cpv in enumerate(cpv_all):
- d = pkgindex.packages.get(cpv)
+ d = metadata.get(cpv)
if not d or "MD5" not in d:
missing.append(cpv)
if onProgress:
onProgress(maxval, i+1)
errors = ["'%s' is not in Packages" % cpv for cpv in missing]
- stale = set(pkgindex.packages).difference(cpv_all)
+ stale = set(metadata).difference(cpv_all)
for cpv in stale:
errors.append("'%s' is not in the repository" % cpv)
return errors
@@ -151,13 +154,16 @@ class BinhostHandler(object):
onProgress(maxval, 0)
pkgindex = self._pkgindex
missing = []
+ metadata = {}
+ for d in pkgindex.packages:
+ metadata[d["CPV"]] = d
for i, cpv in enumerate(cpv_all):
- d = pkgindex.packages.get(cpv)
+ d = metadata.get(cpv)
if not d or "MD5" not in d:
bintree.inject(cpv)
if onProgress:
onProgress(maxval, i+1)
- stale = set(pkgindex.packages).difference(cpv_all)
+ stale = set(metadata).difference(cpv_all)
if stale:
from portage import locks
pkgindex_lock = locks.lockfile(
@@ -177,9 +183,11 @@ class BinhostHandler(object):
del bintree
portage.db[self._bintree.root]["bintree"] = self._bintree
self._bintree._populate()
- for cpv in set(self._pkgindex.packages).difference(
+ for cpv in set(metadata).difference(
self._bintree.dbapi.cpv_all()):
- del self._pkgindex.packages[cpv]
+ del metadata[cpv]
+ del pkgindex.packages[:]
+ pkgindex.packages.extend(metadata.itervalues())
from portage.util import atomic_ofstream
f = atomic_ofstream(self._pkgindex_file)
try: