]> git.decadent.org.uk Git - dak.git/blobdiff - dak/generate_releases.py
Merge remote-tracking branch 'nthykier/auto-decruft'
[dak.git] / dak / generate_releases.py
index e483e6c22bba3f977e96d3491bffa302fce10dbc..ba7976873c6ef0b853695450338ae56d92d13d57 100755 (executable)
@@ -38,6 +38,7 @@ import time
 import gzip
 import bz2
 import apt_pkg
+import subprocess
 from tempfile import mkstemp, mkdtemp
 import commands
 from sqlalchemy.orm import object_session
@@ -48,6 +49,7 @@ from daklib.dak_exceptions import *
 from daklib.dbconn import *
 from daklib.config import Config
 from daklib.dakmultiprocessing import DakProcessPool, PROC_STATUS_SUCCESS
+import daklib.daksubprocess
 
 ################################################################################
 Logger = None                  #: Our logging object
@@ -104,6 +106,16 @@ def sign_release_dir(suite, dirname):
         os.system("gpg %s %s %s --clearsign <%s >>%s" %
                   (keyring, defkeyid, arguments, relname, inlinedest))
 
+class XzFile(object):
+    def __init__(self, filename, mode='r'):
+        self.filename = filename
+    def read(self):
+        cmd = ("xz", "-d")
+        with open(self.filename, 'r') as stdin:
+            process = daklib.daksubprocess.Popen(cmd, stdin=stdin, stdout=subprocess.PIPE)
+            (stdout, stderr) = process.communicate()
+            return stdout
+
 class ReleaseWriter(object):
     def __init__(self, suite):
         self.suite = suite
@@ -125,7 +137,7 @@ class ReleaseWriter(object):
         # fill them in
         attribs = ( ('Origin',      'origin'),
                     ('Label',       'label'),
-                    ('Suite',       'suite_name'),
+                    ('Suite',       'release_suite_output'),
                     ('Version',     'version'),
                     ('Codename',    'codename') )
 
@@ -147,16 +159,12 @@ class ReleaseWriter(object):
         out = open(outfile + ".new", "w")
 
         for key, dbfield in attribs:
-            if getattr(suite, dbfield) is not None:
-                # TEMPORARY HACK HACK HACK until we change the way we store the suite names etc
-                if key == 'Suite' and getattr(suite, dbfield) == 'squeeze-updates':
-                    out.write("Suite: oldstable-updates\n")
-                elif key == 'Suite' and getattr(suite, dbfield) == 'wheezy-updates':
-                    out.write("Suite: stable-updates\n")
-                elif key == 'Suite' and getattr(suite, dbfield) == 'jessie-updates':
-                    out.write("Suite: testing-updates\n")
-                else:
-                    out.write("%s: %s\n" % (key, getattr(suite, dbfield)))
+            # Hack to skip NULL Version fields as we used to do this
+            # We should probably just always ignore anything which is None
+            if key == "Version" and getattr(suite, dbfield) is None:
+                continue
+
+            out.write("%s: %s\n" % (key, getattr(suite, dbfield)))
 
         out.write("Date: %s\n" % (time.strftime("%a, %d %b %Y %H:%M:%S UTC", time.gmtime(time.time()))))
 
@@ -242,6 +250,8 @@ class ReleaseWriter(object):
                     uncompnotseen[filename[:-3]] = (gzip.GzipFile, filename)
                 elif entry.endswith(".bz2") and entry[:-4] not in uncompnotseen.keys():
                     uncompnotseen[filename[:-4]] = (bz2.BZ2File, filename)
+                elif entry.endswith(".xz") and entry[:-3] not in uncompnotseen.keys():
+                    uncompnotseen[filename[:-3]] = (XzFile, filename)
 
                 fileinfo[filename]['len'] = len(contents)