r568 - lvm2/trunk/debian/bin

Bastian Blank waldi at alioth.debian.org
Sun Apr 20 18:38:48 UTC 2008


Author: waldi
Date: Sun Apr 20 18:38:48 2008
New Revision: 568

Log:
debian/bin/genorig.py: Update.


Modified:
   lvm2/trunk/debian/bin/genorig.py

Modified: lvm2/trunk/debian/bin/genorig.py
==============================================================================
--- lvm2/trunk/debian/bin/genorig.py	(original)
+++ lvm2/trunk/debian/bin/genorig.py	Sun Apr 20 18:38:48 2008
@@ -2,13 +2,51 @@
 
 import os, os.path, re, shutil, sys
 
+class Changelog(list):
+    _rules = r"""
+^
+(?P<source>
+    \w[-+0-9a-z.]+
+)
+\ 
+\(
+(?P<version>
+    [^\(\)\ \t]+
+)
+\)
+\s+
+(?P<distribution>
+    [-+0-9a-zA-Z.]+
+)
+\;
+"""
+    _re = re.compile(_rules, re.X)
+
+    class Entry(object):
+        __slot__ = 'distribution', 'source', 'version'
+
+        def __init__(self, distribution, source, version):
+            self.distribution, self.source, self.version = distribution, source, version
+
+    def __init__(self, dir):
+        f = file(os.path.join(dir, "debian/changelog"))
+        while True:
+            line = f.readline()
+            if not line:
+                break
+            match = self._re.match(line)
+            if not match:
+                continue
+            self.append(self.Entry(match.group('distribution'), match.group('source'), match.group('version')))
+
 class GenOrig(object):
     log = sys.stdout.write
 
-    source = 'lvm2'
+    def __init__(self, root, orig, input_tar, version):
+        self.orig, self.input_tar, self.version = orig, input_tar, version
 
-    def __init__(self, input_tar, version):
-        self.input_tar, self.version = input_tar, version
+        changelog = Changelog(root)
+        self.source = changelog[0].source
 
     def __call__(self):
         import tempfile
@@ -24,7 +62,7 @@
 
     def do_upstream(self):
         self.log("Extracting tarball %s\n" % self.input_tar)
-        match = re.match(r'(^|.*/)(?P<dir>LVM2\.\d+\.\d+\.\d+)\.t(?P<extension>(gz|bz2))$', self.input_tar)
+        match = re.match(r'(^|.*/)(?P<dir>[^/]+)\.(t|tar\.)(?P<extension>(gz|bz2))$', self.input_tar)
         if not match:
             raise RuntimeError("Can't identify name of tarball")
         cmdline = ['tar -xf', self.input_tar, '-C', self.dir]
@@ -38,18 +76,18 @@
         os.rename(os.path.join(self.dir, match.group('dir')), os.path.join(self.dir, self.orig_dir))
 
     def do_orig(self):
-        out = "../orig/%s" % self.orig_tar
+        self.log("Generating tarball %s\n" % self.orig_tar)
+        out = os.path.join(self.orig, self.orig_tar)
 
         try:
-            os.mkdir("../orig")
+            os.mkdir(self.orig)
         except OSError: pass
         try:
             os.stat(out)
         except OSError: pass
         else:
-            raise RuntimeError("Destination already exists")
+            raise RuntimeError("Destination already exists (%s)" % out)
 
-        self.log("Generate tarball %s\n" % out)
         cmdline = ['tar -czf', out, '-C', self.dir, self.orig_dir]
         try:
             if os.spawnv(os.P_WAIT, '/bin/sh', ['sh', '-c', ' '.join(cmdline)]):
@@ -64,11 +102,15 @@
 
 if __name__ == '__main__':
     from optparse import OptionParser
-    p = OptionParser()
-    #p.add_option("-v", "--version", dest = "version")
+    p = OptionParser(usage = "%prog TAR VERSION")
     options, args = p.parse_args(sys.argv)
 
+    if len(args) < 2:
+        raise RuntimeError("Need more arguments")
+
+    root = os.path.realpath(os.path.join(sys.path[0], '..', '..'))
+    orig = os.path.realpath(os.path.join(root, '..', 'orig'))
     input_tar = args[1]
     version = args[2]
 
-    GenOrig(input_tar, version)()
+    GenOrig(root, orig, input_tar, version)()



More information about the pkg-lvm-commits mailing list