diff options
author | fuzzyray <fuzzyray@gentoo.org> | 2010-09-23 22:15:38 +0000 |
---|---|---|
committer | fuzzyray <fuzzyray@gentoo.org> | 2010-09-23 22:15:38 +0000 |
commit | 0f72b11914633c11db6e04538835ed70dbd03a6f (patch) | |
tree | 3a4c920feed37ca711687f8f9c8e6434d0931896 /pym/gentoolkit/helpers.py | |
parent | Don't match package names in /var/db/pkg that begin with a '-'. This (diff) | |
download | gentoolkit-0f72b11914633c11db6e04538835ed70dbd03a6f.tar.gz gentoolkit-0f72b11914633c11db6e04538835ed70dbd03a6f.tar.bz2 gentoolkit-0f72b11914633c11db6e04538835ed70dbd03a6f.zip |
Add --binpkgs-missing option to equery list to print installed packages that
do not have a corresponding binary package built.
svn path=/trunk/gentoolkit/; revision=815
Diffstat (limited to 'pym/gentoolkit/helpers.py')
-rw-r--r-- | pym/gentoolkit/helpers.py | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/pym/gentoolkit/helpers.py b/pym/gentoolkit/helpers.py index c1c6788..ab0cdbd 100644 --- a/pym/gentoolkit/helpers.py +++ b/pym/gentoolkit/helpers.py @@ -16,6 +16,7 @@ __all__ = ( 'get_cpvs', 'get_installed_cpvs', 'get_uninstalled_cpvs', + 'get_bintree_cpvs', 'uniqify', ) __docformat__ = 'epytext' @@ -35,7 +36,7 @@ from gentoolkit import pprinter as pp from gentoolkit import errors from gentoolkit.atom import Atom from gentoolkit.cpv import CPV -from gentoolkit.dbapi import PORTDB, VARDB +from gentoolkit.dbapi import BINDB, PORTDB, VARDB from gentoolkit.versionmatch import VersionMatch # This has to be imported below to stop circular import. #from gentoolkit.package import Package @@ -430,6 +431,25 @@ def get_installed_cpvs(predicate=None): yield cpv +def get_bintree_cpvs(predicate=None): + """Get all binary packages available. Optionally apply a predicate. + + @type predicate: function + @param predicate: a function to filter the package list with + @rtype: generator + @return: a generator that yields unsorted binary package cat/pkg-ver strings + from BINDB + """ + + if predicate: + installed_cps = iter(x for x in BINDB.cp_all() if predicate(x)) + else: + installed_cps = BINDB.cp_all() + + for cpv in chain.from_iterable(BINDB.cp_list(x) for x in installed_cps): + yield cpv + + def print_file(path): """Display the contents of a file.""" |