diff options
author | Zac Medico <zmedico@gentoo.org> | 2008-11-22 21:58:37 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2008-11-22 21:58:37 +0000 |
commit | e3edde79ba4ccf903434812328a00308452bcd72 (patch) | |
tree | 9f84a3abf642278a2b20f66d9dc1f33395e8d4ef /pym | |
parent | 7084ae3b52fbf81b3b452cfa6f5de2a05ecedd69 (diff) | |
download | portage-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.py | 27 |
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"] |