X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Fgenerate_releases.py;fp=dak%2Fgenerate_releases.py;h=ce8f12815009a70a0ea9cb4e77eda77564c197de;hb=ba179a1f739af0852cad9b30c5fefae190f96383;hp=e483e6c22bba3f977e96d3491bffa302fce10dbc;hpb=73eb89e1481fc9da535b732240fcc726440e66be;p=dak.git 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)