[kernel] r7822 - dists/trunk/linux-2.6/debian/bin
Bastian Blank
waldi at alioth.debian.org
Sun Nov 19 12:14:20 UTC 2006
Author: waldi
Date: Sun Nov 19 13:14:20 2006
New Revision: 7822
Added:
dists/trunk/linux-2.6/debian/bin/genorig.py (contents, props changed)
Log:
debian/bin/genorig.py: Add.
Added: dists/trunk/linux-2.6/debian/bin/genorig.py
==============================================================================
--- (empty file)
+++ dists/trunk/linux-2.6/debian/bin/genorig.py Sun Nov 19 13:14:20 2006
@@ -0,0 +1,74 @@
+#!/usr/bin/env python
+
+import sys
+sys.path.append("debian/lib/python")
+
+import os, os.path, re
+from debian_linux.debian import read_changelog
+from debian_linux.utils import rmtree
+
+class main(object):
+ def __init__(self, input_tar, input_patch = None):
+ self.log = sys.stdout.write
+
+ self.input_tar = input_tar
+ self.input_patch = input_patch
+
+ changelog = read_changelog()[0]
+ source = changelog['Source']
+ version = changelog['Version']['linux']['source_upstream']
+ self.orig = '%s-%s.orig' % (source, version)
+ self.orig_tar = '%s_%s.orig.tar.gz' % (source, version)
+
+ def __call__(self):
+ import tempfile
+ self.dir = tempfile.mkdtemp(prefix = 'genorig', dir = 'debian')
+ try:
+ self.extract()
+ self.patch()
+ self.tar()
+ finally:
+ rmtree(self.dir)
+
+ def extract(self):
+ self.log("Extracting tarball %s\n" % self.input_tar)
+ match = re.match(r'(^|.*/)(?P<dir>linux-\d+\.\d+\.\d+(-\S+)?)\.tar(\.(?P<extension>(bz2|gz)))?$', self.input_tar)
+ if not match:
+ raise RuntimeError("Can't identify name of tarball")
+ cmdline = ['tar -xf', self.input_tar, '-C', self.dir]
+ if match.group('extension') == 'bz2':
+ cmdline.append('-j')
+ elif match.group('extension') == 'gz':
+ cmdline.append('-z')
+ if os.spawnv(os.P_WAIT, '/bin/sh', ['sh', '-c', ' '.join(cmdline)]):
+ raise RuntimeError("Can't extract tarball")
+ os.rename(os.path.join(self.dir, match.group('dir')), os.path.join(self.dir, self.orig))
+
+ def patch(self):
+ if self.input_patch is None:
+ return
+ self.log("Patching source with %s\n" % self.input_patch)
+ match = re.match(r'(^|.*/)(patch-\d+\.\d+\.\d+(-\S+)?(\.(?P<extension>(bz2|gz))))?$', self.input_patch)
+ if not match:
+ raise RuntimeError("Can't identify name of patch")
+ cmdline = []
+ if match.group('extension') == 'bz2':
+ cmdline.append('bzcat')
+ elif match.group('extension') == 'gz':
+ cmdline.append('zcat')
+ else:
+ cmdline.append('cat')
+ cmdline.append(self.input_patch)
+ cmdline.append('| (cd %s; patch -p1 -f -s -t --no-backup-if-mismatch)' % os.path.join(self.dir, self.orig))
+ if os.spawnv(os.P_WAIT, '/bin/sh', ['sh', '-c', ' '.join(cmdline)]):
+ raise RuntimeError("Can't patch source")
+
+ def tar(self):
+ out = os.path.join("../orig", self.orig_tar)
+ self.log("Generate tarball %s\n" % out)
+ cmdline = ['tar -czf', out, '-C', self.dir, self.orig]
+ if os.spawnv(os.P_WAIT, '/bin/sh', ['sh', '-c', ' '.join(cmdline)]):
+ raise RuntimeError("Can't patch source")
+
+if __name__ == '__main__':
+ main(*sys.argv[1:])()
More information about the Kernel-svn-changes
mailing list