From: Zac Medico Date: Mon, 31 Jul 2006 18:51:15 +0000 (-0000) Subject: Add a new portageq metadata function that wraps dbapi.aux_get() so that things like... X-Git-Tag: v2.1-r2~4 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=17547eaca033b5233fec78d62086b51ac22544c0;p=portage.git Add a new portageq metadata function that wraps dbapi.aux_get() so that things like built_with_use in eutils.eclass can retrieve metadata in manner that is independent of the installed package database implementation. This patch is from trunk r3893. svn path=/main/branches/2.1/; revision=4071 --- diff --git a/bin/portageq b/bin/portageq index ab1a9311f..433375671 100755 --- a/bin/portageq +++ b/bin/portageq @@ -80,6 +80,36 @@ def mass_best_version(argv): sys.exit(1) mass_best_version.uses_root = True +def metadata(argv): + """ []+ + Returns metadata values for the specified package. + """ + if (len(argv) < 4): + print >> sys.stderr, "ERROR: insufficient parameters!" + sys.exit(2) + + root, pkgtype, pkgspec = argv[0:3] + metakeys = argv[3:] + type_map = { + "ebuild":"porttree", + "binary":"bintree", + "installed":"vartree"} + if pkgtype not in type_map: + print >> sys.stderr, "Unrecognized package type: '%s'" % pkgtype + sys.exit(1) + trees = portage.db + if os.path.realpath(root) == os.path.realpath(portage.settings["ROOT"]): + root = portage.settings["ROOT"] # contains the normalized $ROOT + try: + values = trees[root][type_map[pkgtype]].dbapi.aux_get( + pkgspec, metakeys) + for value in values: + print value + except KeyError: + print >> sys.stderr, "Package not found: '%s'" % pkgspec + sys.exit(1) + +metadata.uses_root = True def best_visible(argv): """ []+