New get_cpv_all() which returns a dictionary of tree:[cpv-list]. It can be limited by trees and categories input parameters. It does not apply any masking.
Fix get_cp_list portage function call not keyword specifying the mytree parameter.
some whitespace cleanup.
diff --git a/pym/portage/api/data_connect.py b/pym/portage/api/data_connect.py
index cb41ce0..825cb45 100644
--- a/pym/portage/api/data_connect.py
+++ b/pym/portage/api/data_connect.py
@@ -302,7 +302,7 @@
ebuild = settings.portdb[root].findname(cpv)
pkgdir = os.path.dirname(ebuild)
mf = manifest.Manifest(pkgdir, settings.settings["DISTDIR"])
- iuse, final_use = get_flags(cpv, final_setting=True,
+ iuse, final_use = get_flags(cpv, final_setting=True,
root=root, settings=default_settings)
#writemsg_level( "DATA_CONNECT: get_size; Attempting to get "
#"fetchlist final use= " + str(final_use), level=logging.DEBUG)
@@ -355,7 +355,7 @@
if settings.portdb[root].cpv_exists(cpv): # if in portage tree
try:
#writemsg_level(" * DATA_CONNECT: get_properties()", level=logging.DEBUG)
- prop_dict = dict(zip(settings.keys,
+ prop_dict = dict(zip(settings.keys,
settings.portdb[root].aux_get(cpv, portage.auxdbkeys)))
except IOError as e: # Sync being performed may delete files
writemsg_level(" * DATA_CONNECT: get_properties(): IOError: %s"
@@ -367,7 +367,7 @@
#pass
else:
if settings.vardb[root].cpv_exists(cpv): # elif in installed pkg tree
- prop_dict = dict(zip(settings.keys,
+ prop_dict = dict(zip(settings.keys,
settings.vardb[root].aux_get(cpv, portage.auxdbkeys)))
if want_dict:
# return an empty dict instead of None
@@ -514,9 +514,9 @@
"""
This returns a list of all keys in our tree or trees
@param categories: optional list of categories to search or
- defaults to settings.portdb.settings.categories
+ defaults to settings.portdb[root].settings.categories
@param trees: optional list of trees to search the categories in or
- defaults to settings.portdb.porttrees
+ defaults to settings.portdb[root].porttrees
@param settings: optional portage config settings instance.
defaults to portage.api.settings.default_settings
@rtype list of [cat/pkg,...]
@@ -543,7 +543,36 @@
defaults to portage.api.settings.default_settings
"""
root, settings = ensure_settings(root, settings)
- return settings.portdb[root].cp_list(cp, trees)
+ return settings.portdb[root].cp_list(cp, mytree=trees)
+
+
+def get_cpv_all(root=None, categories=None,
+ trees=None, settings=None):
+ """
+ This function returns all cpv's for a given tree or trees without
+ applying any repo priorities. For a list of visible cpv's using proper
+ repo priorities and masking, use get_allnodes().
+ This returns a dictoinary of lists of all keys in our tree or trees
+ @param categories: optional list of categories to search or
+ defaults to settings.portdb[root].settings.categories
+ @param trees: optional list of trees to search the categories in or
+ defaults to settings.portdb[root].porttrees
+ @param settings: optional portage config settings instance.
+ defaults to portage.api.settings.default_settings
+ @rtype dict of lists of {tree:[cat/pkg-ver,...],}
+ """
+ root, settings = ensure_settings(root, settings)
+ if trees is None:
+ trees = settings.portdb[root].porttrees
+ cpvs = {}
+ for tree in trees:
+ cps = get_cp_all(root=root, categories=categories,
+ trees=[tree], settings=settings)
+ cpvs[tree] = []
+ for c_p in cps:
+ cpvs[tree].append(get_cp_list(root=root, cp=c_p,
+ trees=[tree], settings=settings))
+ return cpvs
def findLicensePath(license_name, root=None, settings=None):