]> git.decadent.org.uk Git - dak.git/blobdiff - dak/make_changelog.py
Convert exception handling to Python3 syntax.
[dak.git] / dak / make_changelog.py
index 6d33e0529e15e722b7a823a4c590ad0222416fc0..ad6dbab1a80173857072918b0da7fd03fe6366a5 100755 (executable)
@@ -52,12 +52,12 @@ Generate changelog entry between two suites
 import os
 import sys
 import apt_pkg
-from commands import getstatusoutput
 from glob import glob
 from shutil import rmtree
 from daklib.dbconn import *
 from daklib import utils
 from daklib.config import Config
+from daklib.contents import UnpackedSource
 from daklib.regexes import re_no_epoch
 
 ################################################################################
@@ -160,7 +160,7 @@ def display_changes(uploads, index):
         print upload[index]
         prev_upload = upload[0]
 
-def export_files(session, pool, clpool, temppath):
+def export_files(session, pool, clpool):
     """
     Export interesting files from source packages.
     """
@@ -202,17 +202,14 @@ def export_files(session, pool, clpool, temppath):
                         pass
                     os.link(os.path.join(path, file), os.path.join(path, link))
 
-    tempdir = utils.temp_dirname(parent=temppath)
-    os.rmdir(tempdir)
-
     for p in unpack.keys():
         package = os.path.splitext(os.path.basename(p))[0].split('_')
-        cmd = 'dpkg-source --no-check --no-copy -x %s %s' % (p, tempdir)
-        (result, output) = getstatusoutput(cmd)
-        if not result:
+        try:
+            unpacked = UnpackedSource(p)
+            tempdir = unpacked.get_root_directory()
             stats['unpack'] += 1
             for file in files:
-                for f in glob(os.path.join(tempdir, 'debian', '*%s*' % file)):
+                for f in glob(os.path.join(tempdir, 'debian', '*%s' % file)):
                     for s in unpack[p][1]:
                         suite = os.path.join(unpack[p][0], '%s.%s' \
                                 % (s, os.path.basename(f)))
@@ -227,13 +224,11 @@ def export_files(session, pool, clpool, temppath):
                             pass
                         os.link(version, suite)
                         stats['created'] += 1
-        else:
-            print 'make-changelog: unable to unpack %s_%s: %s' \
-                   % (package[0], package[1], output)
+            unpacked.cleanup()
+        except Exception as e:
+            print 'make-changelog: unable to unpack %s\n%s' % (p, e)
             stats['errors'] += 1
 
-        rmtree(tempdir)
-
     for root, dirs, files in os.walk(clpool):
         if len(files):
             if root.split('/')[-1] not in sources.keys():
@@ -287,7 +282,7 @@ def main():
     if export:
         if cnf.exportpath:
             exportpath = os.path.join(Cnf['Dir::Export'], cnf.exportpath)
-            export_files(session, Cnf['Dir::Pool'], exportpath, Cnf['Dir::TempPath'])
+            export_files(session, Cnf['Dir::Pool'], exportpath)
         else:
             utils.fubar('No changelog export path defined')
     elif binnmu: