summaryrefslogtreecommitdiffstats
path: root/pym/_emerge/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'pym/_emerge/__init__.py')
-rw-r--r--pym/_emerge/__init__.py34
1 files changed, 22 insertions, 12 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py
index ec8413595..b02902032 100644
--- a/pym/_emerge/__init__.py
+++ b/pym/_emerge/__init__.py
@@ -11084,19 +11084,29 @@ def display_preserved_libs(vardbapi):
print colorize("WARN", "!!!") + " existing preserved libs:"
plibdata = vardbapi.plib_registry.getPreservedLibs()
linkmap = vardbapi.linkmap
-
consumer_map = {}
- search_for_owners = set()
- for cpv in plibdata:
- for f in plibdata[cpv]:
- if f in consumer_map:
- continue
- consumers = list(linkmap.findConsumers(f))
- consumers.sort()
- consumer_map[f] = consumers
- search_for_owners.update(consumers[:MAX_DISPLAY+1])
+ owners = {}
+ linkmap_broken = False
+
+ try:
+ linkmap.rebuild()
+ except portage.exception.CommandNotFound, e:
+ writemsg_level("!!! Command Not Found: %s\n" % (e,),
+ level=logging.ERROR, noiselevel=-1)
+ del e
+ linkmap_broken = True
+ else:
+ search_for_owners = set()
+ for cpv in plibdata:
+ for f in plibdata[cpv]:
+ if f in consumer_map:
+ continue
+ consumers = list(linkmap.findConsumers(f))
+ consumers.sort()
+ consumer_map[f] = consumers
+ search_for_owners.update(consumers[:MAX_DISPLAY+1])
- owners = vardbapi._owners.getFileOwnerMap(search_for_owners)
+ owners = vardbapi._owners.getFileOwnerMap(search_for_owners)
for cpv in plibdata:
print colorize("WARN", ">>>") + " package: %s" % cpv
@@ -11114,7 +11124,7 @@ def display_preserved_libs(vardbapi):
for p in alt_paths:
print colorize("WARN", " * ") + " - %s" % (p,)
f = alt_paths[0]
- consumers = consumer_map[f]
+ consumers = consumer_map.get(f, [])
for c in consumers[:MAX_DISPLAY]:
print colorize("WARN", " * ") + " used by %s (%s)" % \
(c, ", ".join(x.mycpv for x in owners.get(c, [])))