[kernel] r12035 - people/waldi/scripts/snapshot

Bastian Blank waldi at alioth.debian.org
Mon Aug 11 06:51:49 UTC 2008


Author: waldi
Date: Mon Aug 11 06:51:47 2008
New Revision: 12035

Log:
snapshot/package.py: Update to current reality.


Modified:
   people/waldi/scripts/snapshot/package.py

Modified: people/waldi/scripts/snapshot/package.py
==============================================================================
--- people/waldi/scripts/snapshot/package.py	(original)
+++ people/waldi/scripts/snapshot/package.py	Mon Aug 11 06:51:47 2008
@@ -33,7 +33,8 @@
     }   
 
     def __init__(self, config):
-        parser = debian_linux.config.ConfigParser(self.schema, [config])
+        parser = debian_linux.config.ConfigParser(self.schema)
+        parser.read([config])
         for section in iter(parser):
             # TODO: don't split sections in parser
             self[section[0]] = parser[section]
@@ -154,24 +155,32 @@
 
 class Package(object):
     def __init__(self, path, entry):
-        base = entry['base']
-        native = entry.get('native', False)
+        self.base = os.path.expanduser(entry['base'])
+        self.path, self.entry = path, entry
 
-        checkout_dir = os.path.join(base, "checkout-" + path.replace('/', '_'))
-        gen_dir = os.path.join(base, 'gen')
-        out_dir = os.path.join(base, 'out')
-        last_file = os.path.join(base, "last-" + path.replace('/', '_'))
+    def __call__(self):
+        import tempfile
+        self.dir = tempfile.mkdtemp(dir = self.base)
+        try:
+            self.do()
+        finally:
+            shutil.rmtree(self.dir)
+
+    def do(self):
+        checkout_dir = os.path.join(self.base, "checkout-" + path.replace('/', '_'))
+        last_file = os.path.join(self.base, "last-" + path.replace('/', '_'))
+        native = self.entry.get('native', False)
 
-        checkout_storage = repository_svn(checkout_dir, "%s/%s" % (entry['repository'], path))
+        checkout_storage = repository_svn(checkout_dir, "%s/%s" % (self.entry['repository'], path))
 
         self.changelog = debian_linux.debian.Changelog(checkout_dir)[0]
 
         package_name = self.changelog.source
         package_version = self.changelog.version.upstream
         package = "%s-%s" % (package_name, package_version)
-        package_dir = os.path.join(gen_dir, package)
+        package_dir = os.path.join(self.dir, package)
         package_orig = "%s_%s.orig.tar.gz" % (package_name, package_version)
-        package_orig_source = "%s/%s" % (entry['orig'], package_orig)
+        package_orig_source = "%s/%s" % (os.path.expanduser(self.entry['orig']), package_orig)
 
         for line in os.popen("svn info %s" % checkout_dir, 'r').read().split('\n'):
             if line.startswith('Last Changed Rev: '):
@@ -182,22 +191,21 @@
         if revision <= last.revision:
             return
 
-        if not os.path.exists(out_dir):
-            os.makedirs(out_dir , 0755)
+        c = self.changelog
+        version = c.version
+        if c.distribution in ('stable', 'testing', 'unstable', 'experimental'):
+            delemiter = ''
+        elif c.distribution in ('UNRELEASED',):
+            delemiter = '~'
+        else:
+            raise "Unknown distribution"
 
-        self.version(revision)
+        version = version.__class__(str(version) + "%ssnapshot.%d" % (delemiter, revision))
 
         package_storage = checkout_storage.copy(package_dir, storage)
 
         if not native:
-            try:
-                os.unlink(os.path.join(gen_dir, package_orig))
-            except OSError: pass
-            try:
-                os.unlink(os.path.join(out_dir, package_orig))
-            except OSError: pass
-            os.symlink(package_orig_source, os.path.join(gen_dir, package_orig))
-            os.symlink(package_orig_source, os.path.join(out_dir, package_orig))
+            os.symlink(package_orig_source, os.path.join(self.dir, package_orig))
 
         changelog = "%s/debian/changelog" % package_dir
         changelog_text = file(changelog).read()
@@ -211,8 +219,8 @@
  -- %s  %s
 
 """ % (
-        package_name, self.version, entry['dist'],
-        entry['changelog_text'], entry['changelog_maintainer'],
+        package_name, version, self.entry['dist'],
+        self.entry['changelog_text'], self.entry['changelog_maintainer'],
         time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime()),
     )
 )
@@ -225,7 +233,7 @@
                 raise RuntimeError
 
         list = ['dpkg-buildpackage', '-S']
-        sign = entry.get('sign', None)
+        sign = self.entry.get('sign', None)
         if sign:
             list.append('-k%s' % sign)
         if not native:
@@ -235,39 +243,12 @@
                 list.append('-sd')
         spawnv_chdir(os.P_WAIT, "dpkg-buildpackage", list, package_dir)
 
-        suffixes = ['.dsc', '_source.changes']
-        if native:
-            suffixes.append('.tar.gz')
-        else:
-            suffixes.append('.diff.gz')
-
-        for suffix in suffixes:
-            prefix = '%s_%s' % (package_name, version)
-            gen = os.path.join(gen_dir, "%s%s" % (prefix, suffix))
-            out = os.path.join(out_dir, "%s%s" % (prefix, suffix))
-            os.link(gen, out)
-            os.unlink(gen)
-
-        spawnv_chdir(os.P_WAIT, 'dput', ['dput', entry['upload'], '%s_%s_source.changes' % (package_name, version)], out_dir)
+        spawnv_chdir(os.P_WAIT, 'dput', ['dput', self.entry['upload'], '%s_%s_source.changes' % (package_name, version)], self.dir)
 
         last.revision = revision
         last.upstream = version.upstream
         last.write()
 
-        package_storage.remove()
-
-    def version(self, revision):
-        c = self.changelog
-        version = c.version
-        if c.distribution in ('stable', 'testing', 'unstable', 'experimental'):
-            delemiter = ''
-        elif c.distribution in ('UNRELEASED',):
-            delemiter = '~'
-        else:
-            raise "Unknown distribution"
-
-        version.debian += "%ssnapshot.%d" % (delemiter, revision)
-
 if __name__ == '__main__':
     config = Config(sys.argv[1])
     if len(sys.argv) > 2:
@@ -277,7 +258,7 @@
     for path in paths:
         try:
             c = config[path]
-            Package(path, c)
+            Package(path, c)()
         except Exception, e:
             import traceback
             traceback.print_exc()



More information about the Kernel-svn-changes mailing list