summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pym/portage/dbapi/vartree.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py
index a150f4a00..edd588e6a 100644
--- a/pym/portage/dbapi/vartree.py
+++ b/pym/portage/dbapi/vartree.py
@@ -1261,7 +1261,7 @@ class dblink(object):
# regenerate reverse NEEDED map
self.vartree.dbapi.linkmap.rebuild()
-
+
# remove preserved libraries that don't have any consumers left
# FIXME: this code is quite ugly and can likely be optimized in several ways
plib_dict = plib_registry.getPreservedLibs()
@@ -1288,8 +1288,17 @@ class dblink(object):
if not os.path.exists(f):
continue
unlink_list = []
- if not self.vartree.dbapi.linkmap.findConsumers(f):
+ consumers = self.vartree.dbapi.linkmap.findConsumers(f)
+ if not consumers:
unlink_list.append(f)
+ else:
+ keep=False
+ for c in consumers:
+ if c not in self.getcontents():
+ keep=True
+ break
+ if not keep:
+ unlink_list.append(f)
for obj in unlink_list:
try:
if os.path.islink(obj):