summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2008-12-25 01:20:27 +0000
committerZac Medico <zmedico@gentoo.org>2008-12-25 01:20:27 +0000
commiteca0272dfa6faf480f6be7507b6cc8a2b0fb6f81 (patch)
tree23f0350ea3eb14cc182da9178d3ce1bfbb200d26
parentb395854bec05f4438521410cf54cf7a037bc69ef (diff)
downloadportage-eca0272dfa6faf480f6be7507b6cc8a2b0fb6f81.tar.gz
portage-eca0272dfa6faf480f6be7507b6cc8a2b0fb6f81.tar.bz2
portage-eca0272dfa6faf480f6be7507b6cc8a2b0fb6f81.zip
When removing entries with duplicate paths inside binarytree.inject(), handle
path collisions in $PKGDIR/All when CPV is not identical. (trunk r12282) svn path=/main/branches/2.1.6/; revision=12313
-rw-r--r--pym/portage/dbapi/bintree.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/pym/portage/dbapi/bintree.py b/pym/portage/dbapi/bintree.py
index 1b66cc9b8..edba51a39 100644
--- a/pym/portage/dbapi/bintree.py
+++ b/pym/portage/dbapi/bintree.py
@@ -861,11 +861,14 @@ class binarytree(object):
return
# If found, remove package(s) with duplicate path.
+ path = d.get("PATH")
for i in xrange(len(pkgindex.packages) - 1, -1, -1):
d2 = pkgindex.packages[i]
- if d2["CPV"] != cpv:
- continue
- if d2.get("PATH", "") == d.get("PATH", ""):
+ if path is not None and path == d2.get("PATH"):
+ # Handle path collisions in $PKGDIR/All
+ # when CPV is not identical.
+ del pkgindex.packages[i]
+ elif cpv == d2.get("CPV") and path == d2.get("PATH"):
del pkgindex.packages[i]
pkgindex.packages.append(d)