diff options
Diffstat (limited to 'pym/portage/sets/dbapi.py')
-rw-r--r-- | pym/portage/sets/dbapi.py | 74 |
1 files changed, 1 insertions, 73 deletions
diff --git a/pym/portage/sets/dbapi.py b/pym/portage/sets/dbapi.py index c4f974aa9..fca742552 100644 --- a/pym/portage/sets/dbapi.py +++ b/pym/portage/sets/dbapi.py @@ -2,13 +2,9 @@ # Distributed under the terms of the GNU General Public License v2 # $Id$ -from portage.versions import catsplit, catpkgsplit +from portage.versions import catsplit from portage.sets.base import PackageSet from portage.sets import SetConfigError, get_boolean -from portage.dbapi.vartree import dblink -from portage.util import grabfile - -import os __all__ = ["CategorySet", "EverythingSet"] @@ -108,71 +104,3 @@ class CategorySet(PackageSet): return rValue multiBuilder = classmethod(multiBuilder) -class LibraryConsumerSet(PackageSet): - _operations = ["merge", "unmerge"] - - def __init__(self, vardbapi, debug=False): - super(LibraryConsumerSet, self).__init__() - self.dbapi = vardbapi - self.debug = debug - - def mapPathsToAtoms(self, paths): - rValue = set() - for cpv in self.dbapi.cpv_all(): - mysplit = catsplit(cpv) - link = dblink(mysplit[0], mysplit[1], myroot=self.dbapi.root, \ - mysettings=self.dbapi.settings, treetype='vartree', \ - vartree=self.dbapi.vartree) - if paths.intersection(link.getcontents()): - cat, pn = catpkgsplit(cpv)[:2] - slot = self.dbapi.aux_get(cpv, ["SLOT"])[0] - rValue.add("%s/%s:%s" % (cat, pn, slot)) - return rValue - - -class PreservedLibraryConsumerSet(LibraryConsumerSet): - def load(self): - reg = self.dbapi.plib_registry - libmap = self.dbapi.libmap.get() - consumers = set() - if reg: - for libs in reg.getPreservedLibs().values(): - for lib in libs: - paths = libmap.get(os.path.basename(lib), []) - consumers.update(paths) - else: - return - if not consumers: - return - self._setAtoms(self.mapPathsToAtoms(consumers)) - - def singleBuilder(cls, options, settings, trees): - return PreservedLibraryConsumerSet(trees["vartree"].dbapi) - singleBuilder = classmethod(singleBuilder) - -class MissingLibraryConsumerSet(LibraryConsumerSet): - _operations = ["merge", "unmerge"] - - def load(self): - atoms = set() - consumers = set() - for lib in self.dbapi.libmap.get(): - found=False - for searchdir in grabfile(os.path.join(os.sep, self.dbapi.root, "etc/ld.so.conf")): - if os.path.exists(os.path.join(searchdir, lib)): - found=True - break - if not found: - print "missing library: %s" % lib - print "consumers:" - for x in self.dbapi.libmap.get()[lib]: - print " ", x - consumers.update(self.dbapi.libmap.get()[lib]) - if not consumers: - return - self._setAtoms(self.mapPathsToAtoms(consumers)) - - def singleBuilder(cls, options, settings, trees): - debug = get_boolean(options, "debug", False) - return MissingLibraryConsumerSet(trees["vartree"].dbapi, debug=debug) - singleBuilder = classmethod(singleBuilder) |