summaryrefslogtreecommitdiff
path: root/gen-patch-info.py
diff options
context:
space:
mode:
authorSean Finney <seanius@debian.org>2008-06-02 02:14:21 +0200
committerSean Finney <seanius@debian.org>2008-06-02 02:14:21 +0200
commit8ae6627249e5d6a7fc02d3280dc3818fd64f21aa (patch)
treeb173894c196823cc58500a3841f41a1850c06917 /gen-patch-info.py
parentd84c4c56500e5de9109507cf46476505d4b1d0a9 (diff)
downloadpatch-tracker-8ae6627249e5d6a7fc02d3280dc3818fd64f21aa.tar.gz
first shot at patch handling/mangling/markup
Diffstat (limited to 'gen-patch-info.py')
-rwxr-xr-xgen-patch-info.py74
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)