summaryrefslogtreecommitdiffstats
path: root/pym/portage/sets
diff options
context:
space:
mode:
Diffstat (limited to 'pym/portage/sets')
-rw-r--r--pym/portage/sets/dbapi.py74
-rw-r--r--pym/portage/sets/libs.py50
2 files changed, 51 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)
diff --git a/pym/portage/sets/libs.py b/pym/portage/sets/libs.py
new file mode 100644
index 000000000..4ab8a33fe
--- /dev/null
+++ b/pym/portage/sets/libs.py
@@ -0,0 +1,50 @@
+# Copyright 2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+from portage.sets.base import PackageSet
+from portage.dbapi.vartree import dblink
+from portage.versions import catsplit, catpkgsplit
+
+import os
+
+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
+ consumers = set()
+ if reg:
+ for libs in reg.getPreservedLibs().values():
+ for lib in libs:
+ #print lib, self.dbapi.linkmap.findConsumers(lib)
+ consumers.update(self.dbapi.linkmap.findConsumers(lib))
+ 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)