diff options
author | Zac Medico <zmedico@gentoo.org> | 2011-07-22 15:59:13 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2011-07-22 15:59:13 -0700 |
commit | f393413c3f823ef4a60acfcc41c3920933510fc1 (patch) | |
tree | b47f0aa36d13b7e6a9a284f25c4ef6f38c594c40 /pym/_emerge | |
parent | 53bce8a6d96f04acc97871712c107387d14f45e6 (diff) | |
download | portage-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')
-rw-r--r-- | pym/_emerge/actions.py | 10 | ||||
-rw-r--r-- | pym/_emerge/main.py | 10 |
2 files changed, 18 insertions, 2 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()): diff --git a/pym/_emerge/main.py b/pym/_emerge/main.py index 11a33149d..28431c58f 100644 --- a/pym/_emerge/main.py +++ b/pym/_emerge/main.py @@ -260,7 +260,15 @@ def display_preserved_libs(vardbapi, myopts): consumer_map[f] = consumers search_for_owners.update(consumers[:MAX_DISPLAY+1]) - owners = vardbapi._owners.getFileOwnerMap(search_for_owners) + owners = {} + for f in search_for_owners: + owner_set = set() + for owner in linkmap.getOwners(f): + owner_dblink = vardbapi._dblink(owner) + if owner_dblink.exists(): + owner_set.add(owner_dblink) + if owner_set: + owners[f] = owner_set for cpv in plibdata: print(colorize("WARN", ">>>") + " package: %s" % cpv) |