#! /usr/bin/env python # genpkgxml.py # Very simple program to generate "main-packages.xml", an xml page # containing a list of all "current" packages, where "current" means the # most up-to-date version that isn't masked. import portage, string, os, os.path, time # xml file to be generated out = file("main-packages.xml", "w") # xml boilerplate header = """ Gentoo Linux Packages Grant Goodyear Current %s """ % time.asctime(time.localtime()) tableheader = """ """ footer = """
Package Version Category
""" # get a sorted list of "current" packages, where each # list entry is [, , , ] def getcurrentpkgs(): tree = portage.portagetree() currentlist = [] for node in tree.getallnodes(): best = tree.dep_bestmatch(node) cat, PN, PV, PR = portage.catpkgsplit(best) currentlist.append([PN.lower(), PV, PR, cat]) currentlist.sort() return currentlist # take a package (a [PN, PV, PR, category] list) and return the table entry # for that package: # def getpkgentry(pkg): pkgentry = "\t\n" pkgentry += "\t\t%s\n" % pkg[0] pkgentry += "\t\t%s\n" % pkg[1] pkgentry += "\t\t%s\n" % pkg[3] pkgentry += "\t\n" return pkgentry if __name__ == "__main__": pkglist = getcurrentpkgs() out.write(header) out.write("\n") out.write("
\n") out.write("Today's list of %d Gentoo Packages\n" % len(pkglist)) out.write("\n") out.write(tableheader) for pkg in pkglist: pkgentry = getpkgentry(pkg) out.write(pkgentry) out.write(footer)