Index: bin/portageq =================================================================== --- bin/portageq (revision 5196) +++ bin/portageq (working copy) @@ -178,8 +178,35 @@ if (len(argv) < 2): print "ERROR: insufficient parameters!" sys.exit(2) + myroot = argv[0] + myatom = argv[1] + trees = portage.db + vardb = trees[myroot]["vartree"].dbapi + mysettings = vardb.settings try: - print string.join(portage.db[argv[0]]["vartree"].dbapi.match(argv[1]),"\n") + myatom = portage.key_expand( + myatom, mydb=vardb, settings=mysettings) + myslots = [] + vdb_matches = vardb.match(myatom) + for cpv in vdb_matches: + myslots.append(vardb.aux_get(cpv, ["SLOT"])[0]) + if len(myslots) < 2: + greedy_atoms = [myatom] + else: + greedy_atoms = [] + mykey = portage.dep_getkey(myatom) + for myslot in myslots: + greedy_atoms.append("%s:%s" % (mykey, myslot)) + for myatom in greedy_atoms: + mycheck = portage.dep_check( + myatom, None, mysettings, myroot=myroot, trees=trees) + if not mycheck[0]: + sys.stderr.write("\n\n%s\n\n" % mycheck[1]) + sys.stderr.write("%s\n\n" % depstring) + sys.exit(1) + for myatom in mycheck[1]: + for cpv in vardb.match(myatom): + print cpv except ValueError, e: # Multiple matches thrown from cpv_expand pkgs = e.args[0]