aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfuzzyray <fuzzyray@gentoo.org>2010-09-23 22:15:38 +0000
committerfuzzyray <fuzzyray@gentoo.org>2010-09-23 22:15:38 +0000
commit0f72b11914633c11db6e04538835ed70dbd03a6f (patch)
tree3a4c920feed37ca711687f8f9c8e6434d0931896 /pym/gentoolkit/helpers.py
parentDon't match package names in /var/db/pkg that begin with a '-'. This (diff)
downloadgentoolkit-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.py22
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."""