From d4bd70aed22dfdc3551a6cce51f7230af15bdebc Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Mon, 10 Aug 2009 02:31:51 +0000 Subject: Inside calc_depclean(), use LinkageMap.findConsumers() for checking intersection of files being removed with providers in the LinkageMap (a KeyError is raised when there is no intersection). svn path=/main/trunk/; revision=13968 --- pym/_emerge/actions.py | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) (limited to 'pym/_emerge/actions.py') diff --git a/pym/_emerge/actions.py b/pym/_emerge/actions.py index 4632c10f2..cd980231f 100644 --- a/pym/_emerge/actions.py +++ b/pym/_emerge/actions.py @@ -901,7 +901,6 @@ def calc_depclean(settings, trees, ldpath_mtimes, # packages and any dependencies need to be added to the graph. real_vardb = trees[myroot]["vartree"].dbapi linkmap = real_vardb.linkmap - liblist = linkmap.listLibraryObjects() consumer_cache = {} provider_cache = {} soname_cache = {} @@ -911,23 +910,20 @@ def calc_depclean(settings, trees, ldpath_mtimes, for pkg in cleanlist: pkg_dblink = real_vardb._dblink(pkg.cpv) - provided_libs = set() - - for lib in liblist: - if pkg_dblink.isowner(lib, myroot): - provided_libs.add(lib) - - if not provided_libs: - continue - consumers = {} - for lib in provided_libs: - lib_consumers = consumer_cache.get(lib) + + for lib in pkg_dblink.getcontents(): + lib = lib[len(myroot):] + lib_key = linkmap._obj_key(lib) + lib_consumers = consumer_cache.get(lib_key) if lib_consumers is None: - lib_consumers = linkmap.findConsumers(lib) - consumer_cache[lib] = lib_consumers + try: + lib_consumers = linkmap.findConsumers(lib_key) + except KeyError: + continue + consumer_cache[lib_key] = lib_consumers if lib_consumers: - consumers[lib] = lib_consumers + consumers[lib_key] = lib_consumers if not consumers: continue -- cgit v1.2.3-1-g7c22