#!/usr/bin/python import portage, portage_const, os, string mykeys = {} for line in portage.grabfile(portage.settings["PORTDIR"]+"/profiles/profiles.desc"): arch, path, status = line.split() groups = [arch] if status == "dev": groups += ["~" + arch] profiledir = portage.settings["PORTDIR"]+"/profiles/" + path portage.profiledir = profiledir portage.groups = groups myconfig = portage.config(config_profile_path = profiledir, config_incrementals = portage_const.INCREMENTALS) myconfig["ARCH"] = arch portage.do_vartree(myconfig) myconfig.regenerate() portage.portdb = portage.portdbapi(portage.settings["PORTDIR"], myconfig) portage.db["/"]["porttree"] = portage.portagetree("/", myconfig.getvirtuals("/")) for atom in myconfig.packages: if atom[0] == "*": mykey = portage.dep_getkey(atom[1:]) if not mykeys.has_key(mykey): mykeys[mykey] = {} if not mykeys[mykey].has_key(arch+"-"+status): mykeys[mykey][arch+"-"+status] = [] match = portage.db["/"]["porttree"].dbapi.xmatch("bestmatch-visible", atom[1:]) if not match in mykeys[mykey][arch+"-"+status]: mykeys[mykey][arch+"-"+status].append(match) for key in mykeys: print key+":" for arch in mykeys[key]: print "\t"+arch+": "+string.join(mykeys[key][arch], ", ")