diff options
-rw-r--r-- | pym/portage/dbapi/vartree.py | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py index 554f997bf..a72d0edca 100644 --- a/pym/portage/dbapi/vartree.py +++ b/pym/portage/dbapi/vartree.py @@ -1687,6 +1687,7 @@ class dblink(object): for lib in list(candidates): if not has_external_consumers(lib, old_contents, candidates): candidates.remove(lib) + continue # only preserve the lib if there is no other copy to use for each consumer keep = False for c in linkmap.findConsumers(lib): @@ -1695,12 +1696,15 @@ class dblink(object): for soname in providers: if lib in providers[soname]: for p in providers[soname]: - if p not in candidates: + if p not in candidates or os.path.exists(os.path.join(srcroot, p.lstrip(os.sep))): localkeep = False break break if localkeep: keep = True + if not keep: + candidates.remove(lib) + continue del mylibs, mycontents, old_contents, liblist |