X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=dak%2Fgenerate_releases.py;h=ce8f12815009a70a0ea9cb4e77eda77564c197de;hb=543d6b6b93b2c78f41f3f56f46ba7a09ecda7a4e;hp=a849f36db0477323d4f7f524aecd252b6dbd0215;hpb=695759e80feca4d6b2c27143a076d5e2ddf90339;p=dak.git diff --git a/dak/generate_releases.py b/dak/generate_releases.py index a849f36d..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 @@ -83,7 +85,7 @@ def sign_release_dir(suite, dirname): if cnf.has_key("Dinstall::SigningPubKeyring"): keyring += " --keyring \"%s\"" % cnf["Dinstall::SigningPubKeyring"] - arguments = "--no-options --batch --no-tty --armour" + arguments = "--no-options --batch --no-tty --armour --personal-digest-preferences=SHA256" relname = os.path.join(dirname, 'Release') @@ -95,20 +97,24 @@ def sign_release_dir(suite, dirname): if os.path.exists(inlinedest): os.unlink(inlinedest) - # We can only use one key for inline signing so use the first one in - # the array for consistency - firstkey = True - + defkeyid="" for keyid in suite.signingkeys or []: - defkeyid = "--default-key %s" % keyid - - os.system("gpg %s %s %s --detach-sign <%s >>%s" % - (keyring, defkeyid, arguments, relname, dest)) - - if firstkey: - os.system("gpg %s %s %s --clearsign <%s >>%s" % - (keyring, defkeyid, arguments, relname, inlinedest)) - firstkey = False + defkeyid += "--local-user %s " % keyid + + os.system("gpg %s %s %s --detach-sign <%s >>%s" % + (keyring, defkeyid, arguments, relname, dest)) + 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): @@ -176,9 +182,9 @@ class ReleaseWriter(object): out.write("Architectures: %s\n" % (" ".join([a.arch_string for a in architectures]))) - components = [ c.component_name for c in session.query(Component) ] + components = [ c.component_name for c in suite.components ] - out.write("Components: %s\n" % ( " ".join(map(lambda x: "%s%s" % (suite_suffix, x), components )))) + out.write("Components: %s\n" % (" ".join(components))) # For exact compatibility with old g-r, write out Description here instead # of with the rest of the DB fields above @@ -248,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)