From: Zac Medico Date: Sat, 14 May 2011 21:25:16 +0000 (-0700) Subject: treewalk: fix plib_collisions with same cpv X-Git-Tag: v2.1.9.50~103 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=98c5747c9a7fd278b90fa663badae91068b3d4d2;p=portage.git treewalk: fix plib_collisions with same cpv --- diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py index 01c8b0ef9..db081e127 100644 --- a/pym/portage/dbapi/vartree.py +++ b/pym/portage/dbapi/vartree.py @@ -3426,14 +3426,20 @@ class dblink(object): for cpv, paths in plib_collisions.items(): if cpv not in plib_dict: continue - if cpv == self.mycpv: - continue - has_vdb_entry = True - try: - slot, counter = self.vartree.dbapi.aux_get( - cpv, ["SLOT", "COUNTER"]) - except KeyError: - has_vdb_entry = False + has_vdb_entry = False + if cpv != self.mycpv: + # If we've replaced another instance with the + # same cpv then the vdb entry no longer belongs + # to it, so we'll have to get the slot and couter + # from plib_registry._data instead. + try: + slot, counter = self.vartree.dbapi.aux_get( + cpv, ["SLOT", "COUNTER"]) + has_vdb_entry = True + except KeyError: + pass + + if not has_vdb_entry: # It's possible for previously unmerged packages # to have preserved libs in the registry, so try # to retrieve the slot and counter from there.