]> git.decadent.org.uk Git - dak.git/commitdiff
Include {Packages,Sources}.xz indices in Release file.
authorAnsgar Burchardt <ansgar@debian.org>
Sun, 27 Oct 2013 16:08:16 +0000 (17:08 +0100)
committerAnsgar Burchardt <ansgar@debian.org>
Sun, 27 Oct 2013 16:08:16 +0000 (17:08 +0100)
dak/generate_releases.py
daklib/regexes.py

index e483e6c22bba3f977e96d3491bffa302fce10dbc..ce8f12815009a70a0ea9cb4e77eda77564c197de 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
@@ -242,6 +254,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)
 
index 95cf35231b1f26c3fa425c7c134df453ec84cf43..ad57ce5f8030be228cb7efe96ff88e5e6ac32de0 100644 (file)
@@ -123,7 +123,7 @@ re_match_expired = re.compile(r"^The key used to sign .+ has expired on .+$")
 
 # in generate-releases
 re_gensubrelease = re.compile (r".*/(binary-[0-9a-z-]+|source)$")
-re_includeinrelease = re.compile (r"(Translation-[a-zA-Z_]+\.(?:bz2|xz)|Contents-[0-9a-z-]+.gz|Index|Packages(.gz|.bz2)?|Sources(.gz|.bz2)?|MD5SUMS|SHA256SUMS|Release)$")
+re_includeinrelease = re.compile (r"(Translation-[a-zA-Z_]+\.(?:bz2|xz)|Contents-[0-9a-z-]+.gz|Index|Packages(.gz|.bz2|.xz)?|Sources(.gz|.bz2|.xz)?|MD5SUMS|SHA256SUMS|Release)$")
 
 # in generate_index_diffs
 re_includeinpdiff = re.compile(r"(Translation-[a-zA-Z_]+\.(?:bz2|xz))")