summaryrefslogtreecommitdiff
path: root/bin/get_preserved_libs
diff options
context:
space:
mode:
Diffstat (limited to 'bin/get_preserved_libs')
-rwxr-xr-xbin/get_preserved_libs126
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()