diff options
Diffstat (limited to 'bin/get_preserved_libs')
-rwxr-xr-x | bin/get_preserved_libs | 126 |
1 files changed, 0 insertions, 126 deletions
diff --git a/bin/get_preserved_libs b/bin/get_preserved_libs deleted file mode 100755 index 6f66cb9..0000000 --- a/bin/get_preserved_libs +++ /dev/null @@ -1,126 +0,0 @@ -#!/usr/bin/python - -import sys - -from _emerge.actions import load_emerge_config -import portage.dep - -settings, trees, mtimedb = load_emerge_config() -vardb = trees[settings["ROOT"]]["vartree"].dbapi - -linkmap = vardb._linkmap -reg = vardb._plib_registry - -reg.lock() -try: - plibdata = reg.getPreservedLibs() - - if plibdata: - sys.stdout.write("# list of bumped libraries:\n") - - for cpv, paths in plibdata.items(): - sys.stdout.write("%s\n" % (cpv,)) - for path in sorted(paths): - sys.stderr.write(" %s\n" % (path,)) - - if plibdata: - sys.stdout.write("# list of inverse deps:\n") - - # taken from display_preserved_libs.py, Portage - linkmap.rebuild() # can raise CommandNotFound - consumer_map = {} - search_for_owners = set() - for cpv in plibdata: - internal_plib_keys = set(linkmap._obj_key(f) for f in plibdata[cpv]) - for f in plibdata[cpv]: - if f in consumer_map: - continue - - consumers = [] - for c in linkmap.findConsumers(f): - # Filter out any consumers that are also preserved libs - # belonging to the same package as the provider. - if linkmap._obj_key(c) not in internal_plib_keys: - consumers.append(c) - consumers.sort() - consumer_map[f] = consumers - search_for_owners.update(consumers) - - owners = {} - for f in search_for_owners: - owner_set = set() - for owner in linkmap.getOwners(f): - owner_dblink = vardb._dblink(owner) - if owner_dblink.exists(): - owner_set.add(owner_dblink) - if owner_set: - owners[f] = owner_set - - all_preserved = set() - all_preserved.update(*plibdata.values()) - owners_map = {} - - for cpv in plibdata: - sys.stdout.write("%s\n" % (cpv,)) - samefile_map = {} - for f in plibdata[cpv]: - obj_key = linkmap._obj_key(f) - alt_paths = samefile_map.get(obj_key) - if alt_paths is None: - alt_paths = set() - samefile_map[obj_key] = alt_paths - alt_paths.add(f) - - for alt_paths in samefile_map.values(): - alt_paths = sorted(alt_paths) - for p in alt_paths: - sys.stderr.write(" - %s" % (p,)) - f = alt_paths[0] - consumers = consumer_map.get(f, []) - - consumers_non_preserved = [c for c in consumers - if c not in all_preserved] - if consumers_non_preserved: - # Filter the consumers that are preserved libraries, since - # they don't need to be rebuilt (see bug #461908). - consumers = consumers_non_preserved - - for c in consumers: - owner_pkgs = [] - if c in all_preserved: - # The owner is displayed elsewhere due to having - # its libs preserved, so distinguish this special - # case (see bug #461908). - owners_desc = "preserved" - else: - owner_cpvs = [x.mycpv for x in owners.get(c, [])] - owner_pkgs.extend(owner_cpvs) - owners_desc = ", ".join(owner_cpvs) - - sys.stderr.write(" used by %s (%s)\n" % (c, owners_desc)) - - for owner_pkg in owner_pkgs: - cp_slot = "%s:%s" % ( - portage.dep.dep_getkey("=" + owner_pkg), - vardb.aux_get(owner_pkg, ["SLOT"])[0] - ) - obj = owners_map.setdefault(cp_slot, set()) - obj.add(c) - - sys.stdout.flush() - sys.stderr.flush() - - if owners_map: - sys.stdout.write("# grouped list of rebuilds:\n") - - for owner_pkg in sorted(owners_map.keys()): - owner_files = sorted(owners_map[owner_pkg]) - sys.stdout.write("%s\n" % (owner_pkg,)) - for owner_file in owner_files: - sys.stderr.write(" %s\n" % (owner_file,)) - - sys.stdout.flush() - sys.stderr.flush() - -finally: - reg.unlock() |