From 98c5747c9a7fd278b90fa663badae91068b3d4d2 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sat, 14 May 2011 14:25:16 -0700 Subject: [PATCH] treewalk: fix plib_collisions with same cpv --- pym/portage/dbapi/vartree.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) 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. -- 2.26.2