From ba179a1f739af0852cad9b30c5fefae190f96383 Mon Sep 17 00:00:00 2001 From: Ansgar Burchardt Date: Sun, 27 Oct 2013 17:08:16 +0100 Subject: [PATCH] Include {Packages,Sources}.xz indices in Release file. --- dak/generate_releases.py | 14 ++++++++++++++ daklib/regexes.py | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/dak/generate_releases.py b/dak/generate_releases.py index e483e6c2..ce8f1281 100755 --- a/dak/generate_releases.py +++ b/dak/generate_releases.py @@ -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) diff --git a/daklib/regexes.py b/daklib/regexes.py index 95cf3523..ad57ce5f 100644 --- a/daklib/regexes.py +++ b/daklib/regexes.py @@ -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))") -- 2.39.2