From: Zac Medico Date: Thu, 25 Dec 2008 01:20:27 +0000 (-0000) Subject: When removing entries with duplicate paths inside binarytree.inject(), handle X-Git-Tag: v2.1.6.3~21 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=eca0272dfa6faf480f6be7507b6cc8a2b0fb6f81;p=portage.git 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 --- 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)