summaryrefslogtreecommitdiffstats
path: root/pym/_emerge/actions.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2011-07-22 15:59:13 -0700
committerZac Medico <zmedico@gentoo.org>2011-07-22 15:59:13 -0700
commitf393413c3f823ef4a60acfcc41c3920933510fc1 (patch)
treeb47f0aa36d13b7e6a9a284f25c4ef6f38c594c40 /pym/_emerge/actions.py
parent53bce8a6d96f04acc97871712c107387d14f45e6 (diff)
downloadportage-f393413c3f823ef4a60acfcc41c3920933510fc1.tar.gz
portage-f393413c3f823ef4a60acfcc41c3920933510fc1.tar.bz2
portage-f393413c3f823ef4a60acfcc41c3920933510fc1.zip
LinkageMapELF: add getOwners() method and use it
This preserves the owner information inside LinkageMap.rebuild() and uses it to implement a getOwners() method, which makes it possible to efficiently lookup owners of library providers and consumers.
Diffstat (limited to 'pym/_emerge/actions.py')
-rw-r--r--pym/_emerge/actions.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/pym/_emerge/actions.py b/pym/_emerge/actions.py
index 219ed7101..610fc73d1 100644
--- a/pym/_emerge/actions.py
+++ b/pym/_emerge/actions.py
@@ -992,7 +992,15 @@ def calc_depclean(settings, trees, ldpath_mtimes,
search_files.update(providers)
writemsg_level(">>> Assigning files to packages...\n")
- file_owners = real_vardb._owners.getFileOwnerMap(search_files)
+ file_owners = {}
+ for f in search_files:
+ owner_set = set()
+ for owner in linkmap.getOwners(f):
+ owner_dblink = real_vardb._dblink(owner)
+ if owner_dblink.exists():
+ owner_set.add(owner_dblink)
+ if owner_set:
+ file_owners[f] = owner_set
for pkg, consumers in list(consumer_map.items()):
for lib, consumer_providers in list(consumers.items()):