diff options
author | Sean Finney <seanius@debian.org> | 2008-06-02 02:14:21 +0200 |
---|---|---|
committer | Sean Finney <seanius@debian.org> | 2008-06-02 02:14:21 +0200 |
commit | 8ae6627249e5d6a7fc02d3280dc3818fd64f21aa (patch) | |
tree | b173894c196823cc58500a3841f41a1850c06917 /gen-patch-info.py | |
parent | d84c4c56500e5de9109507cf46476505d4b1d0a9 (diff) | |
download | patch-tracker-8ae6627249e5d6a7fc02d3280dc3818fd64f21aa.tar.gz |
first shot at patch handling/mangling/markup
Diffstat (limited to 'gen-patch-info.py')
-rwxr-xr-x | gen-patch-info.py | 74 |
1 files changed, 67 insertions, 7 deletions
diff --git a/gen-patch-info.py b/gen-patch-info.py index 74d819f..f156126 100755 --- a/gen-patch-info.py +++ b/gen-patch-info.py @@ -11,6 +11,7 @@ from Cheetah.Template import Template class Conf: archive_root = '/scratch/debian-archive/debian' + archive_root_url = '/debian' output_dir = '/scratch/patches' template_dir = './templates' static_dir = './static' @@ -60,7 +61,7 @@ class SourcePackage: loc = None type = "Native" version = None - seriespatches = [] + seriespatches = {} directpatches = [] # todo vcs = {} @@ -76,6 +77,10 @@ class SourcePackage: self.diffgz=f self.type = "Debian-diff" + if self.diffgz != None: + self.debianonlydiff = "_".join([self.name, self.version, "debianonly.diff"]) + self.nondebiandiff = "_".join([self.name, self.version, "nondebian.diff"]) + def idx(self): name = str(self) if len(name) < 4 or name[0:3] != "lib": @@ -83,6 +88,52 @@ class SourcePackage: else: return name[0:4] + ## XXX okay, all of this could be made quite a bit cleaner + def diff_series(self, outdir): + if self.diffgz: + debdiff = os.sep.join([outdir, self.debianonlydiff]) + seriesdir = os.sep.join([outdir, "series"]) + try: + os.mkdir(os.sep.join([outdir,"series"])) + except OSError, e: + if e.errno != errno.EEXIST: + raise e + os.system("filterdiff -p 1 -i 'debian/patches/*' "+debdiff+"| ( cd "+ + seriesdir+"; patch -s )") + for (blah,blahblah,files) in os.walk(seriesdir): + try: + files.remove('series') + files.remove('00list') + except: + pass + for f in files: + p = os.sep.join([seriesdir, f]) + # get the info for summary generation + fd = os.popen("diffstat "+p) + self.seriespatches[f] = fd.read() + fd.close() + os.system("source-highlight -s diff -f xhtml -i "+p+" -o "+p+".html") + + def diff_debiandir(self, outdir): + try: + src = os.sep.join([Conf.archive_root, self.loc, self.diffgz['name']]) + dst = os.sep.join([outdir, self.debianonlydiff]) + os.system("filterdiff -z -p 1 -i 'debian/*' "+src+" > "+dst) + os.system("source-highlight -s diff -f xhtml -i "+dst+" -o "+dst+".html") + # in the case of native packages there is no diffgz + except TypeError: + pass + + def diff_nondebiandir(self, outdir): + try: + src = os.sep.join([Conf.archive_root, self.loc, self.diffgz['name']]) + dst = os.sep.join([outdir, self.nondebiandiff]) + os.system("filterdiff -z -p 1 -x 'debian/*' "+src+" > "+dst) + os.system("source-highlight -s diff -f xhtml -i "+dst+" -o "+dst+".html") + # in the case of native packages there is no diffgz + except TypeError: + pass + def __str__(self): return self.name @@ -102,13 +153,18 @@ class PackageVersTemplate(OurTemplate): class PackageVersWriter(PageWriter): def __init__(self, template): - dst = os.sep.join([Conf.output_dir, "packages", template.src.name, template.src.version, "index.html"]) + dstdir = os.sep.join([Conf.output_dir, "packages", template.src.name, template.src.version]) + try: + os.makedirs(dstdir) + except OSError, e: + if e.errno != errno.EEXIST: + raise e + template.src.diff_debiandir(dstdir) + template.src.diff_nondebiandir(dstdir) + template.src.diff_series(dstdir) + dst = os.sep.join([dstdir, "index.html"]) PageWriter.__init__(self, dst, template) - (tfd, tfn) = tempfile.mkstemp() - os.close(tfd) - #os.system("filterdiff -z -p 1 -x 'debian/*' blah > farsar") - class SourcePackageIndex: pkgs = {} @@ -166,6 +222,11 @@ class LetterTocWriter(PageWriter): if __name__ == '__main__': a = Archive(Conf.archive_root) + + # just for now until development stablizes + os.system("rm -rf "+Conf.output_dir) + os.mkdir(Conf.output_dir) + print a master_index = SourcePackageIndex() for s in a.suites(): @@ -174,7 +235,6 @@ if __name__ == '__main__': print "\tcomponent:",c for p in a.sourcepackages(s, c): print "\t\tpackage:",p - print "\t\tdiff:",p.diffgz PackageVersWriter(PackageVersTemplate(p, s)) master_index.ins(p,s) |