summaryrefslogtreecommitdiffstats
path: root/pym
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2008-11-22 21:58:37 +0000
committerZac Medico <zmedico@gentoo.org>2008-11-22 21:58:37 +0000
commite3edde79ba4ccf903434812328a00308452bcd72 (patch)
tree9f84a3abf642278a2b20f66d9dc1f33395e8d4ef /pym
parent7084ae3b52fbf81b3b452cfa6f5de2a05ecedd69 (diff)
downloadportage-e3edde79ba4ccf903434812328a00308452bcd72.tar.gz
portage-e3edde79ba4ccf903434812328a00308452bcd72.tar.bz2
portage-e3edde79ba4ccf903434812328a00308452bcd72.zip
Add new @unavailable package set which contains all installed
packages for which there are no visible ebuilds corresponding to the same $CATEGORY/$PN:$SLOT. svn path=/main/trunk/; revision=12043
Diffstat (limited to 'pym')
-rw-r--r--pym/portage/sets/dbapi.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/pym/portage/sets/dbapi.py b/pym/portage/sets/dbapi.py
index 877c45cee..65d05a2ae 100644
--- a/pym/portage/sets/dbapi.py
+++ b/pym/portage/sets/dbapi.py
@@ -179,6 +179,33 @@ class DowngradeSet(PackageSet):
singleBuilder = classmethod(singleBuilder)
+class UnavailableSet(EverythingSet):
+
+ _operations = ["unmerge"]
+
+ description = "Package set which contains all installed " + \
+ "packages for which there are no visible ebuilds " + \
+ "corresponding to the same $CATEGORY/$PN:$SLOT."
+
+ def __init__(self, vardb, metadatadb=None):
+ super(UnavailableSet, self).__init__(vardb)
+ self._metadatadb = metadatadb
+
+ def _filter(self, atom):
+ return not self._metadatadb.match(atom)
+
+ def singleBuilder(cls, options, settings, trees):
+
+ metadatadb = options.get("metadata-source", "porttree")
+ if not metadatadb in trees:
+ raise SetConfigError(("invalid value '%s' for option " + \
+ "metadata-source") % (metadatadb,))
+
+ return cls(trees["vartree"].dbapi,
+ metadatadb=trees[metadatadb].dbapi)
+
+ singleBuilder = classmethod(singleBuilder)
+
class CategorySet(PackageSet):
_operations = ["merge", "unmerge"]