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 | |
parent | d84c4c56500e5de9109507cf46476505d4b1d0a9 (diff) | |
download | patch-tracker-8ae6627249e5d6a7fc02d3280dc3818fd64f21aa.tar.gz |
first shot at patch handling/mangling/markup
-rw-r--r-- | README | 4 | ||||
-rwxr-xr-x | gen-patch-info.py | 74 | ||||
-rw-r--r-- | static/css/patches.css | 4 | ||||
-rwxr-xr-x | templates/package-vers.tmpl | 30 |
4 files changed, 95 insertions, 17 deletions
@@ -6,9 +6,11 @@ setup instructions required software: +(for now) source-highlight +(for now) patchutils python python-cheetah -python-pygments +(eventually) python-pygments python-debian (optional) reprepro something providing an httpd 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) diff --git a/static/css/patches.css b/static/css/patches.css index a055320..6c7509e 100644 --- a/static/css/patches.css +++ b/static/css/patches.css @@ -1,3 +1,7 @@ +th { + background-color: #ddd; +} + table.summary { border: 1px solid; } diff --git a/templates/package-vers.tmpl b/templates/package-vers.tmpl index ac08db2..17689c7 100755 --- a/templates/package-vers.tmpl +++ b/templates/package-vers.tmpl @@ -31,21 +31,31 @@ </table> #if $src.diffgz - <h2> Entire "Debian diff" Information </h2> + <h2> "Debian diff" Information </h2> <table class="patchlisting"> <tr> <th>Diff file</th> - <td> - <a href="$conf.root_url/$src.loc/$src.diffgz['name']"> + <td colspan="2"> + <a href="$conf.archive_root_url/$src.loc/$src.diffgz['name']"> $src.diffgz['name'] </a> </td> </tr> <tr> - <th>Size</th><td>$src.diffgz['size']</td> + <th>Size</th><td colspan="2">$src.diffgz['size']</td> </tr> <tr> - <th>MD5sum</th><td>$src.diffgz['md5sum']</td> + <th>MD5sum</th><td colspan="2">$src.diffgz['md5sum']</td> + </tr> + <tr> + <th>./debian only changes</th> + <td><a href="$conf.root_url/packages/$src.name/$src.version/${src.debianonlydiff}.html">view</a></td> + <td><a href="$conf.root_url/packages/$src.name/$src.version/$src.debianonlydiff">download</a></td> + </tr> + <tr> + <th>non packaging (i.e. not ./debian) changes</th> + <td><a href="$conf.root_url/packages/$src.name/$src.version/${src.nondebiandiff}.html">view</a></td> + <td><a href="$conf.root_url/packages/$src.name/$src.version/$src.nondebiandiff">download</a></td> </tr> </table> #end if @@ -63,6 +73,7 @@ </table> #end if +#if $src.seriespatches <h2> "series" style patches </h2> <table class="patchlisting"> <tr> @@ -71,14 +82,15 @@ <th>view</th> <th>raw</th> </tr> -#for $p in $src.seriespatches +#for $p,$d in $src.seriespatches.iteritems() <tr> <td>$p</td> - <td>info</td> - <td><a href="link">view</a></td> - <td><a href="link">download</a></td> + <td class="diffstat"><pre><code>$d</code></pre></td> + <td><a href="$conf.root_url/packages/$src.name/$src.version/series/${p}.html">view</a></td> + <td><a href="$conf.root_url/packages/$src.name/$src.version/series/${p}">download</a></td> </tr> #end for </table> +#end if </body> </html> |