X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=dak%2Fexport_suite.py;h=980ec5a5e9c163e86cb8b31a5aa5fc0ed5ae296c;hb=f08447e74076cd4eb094e3b3f6f5d794b41f4667;hp=1c22f5e5a80667f5dca78c6e411f4f09f4c26187;hpb=e1a60e40eeed6c7d6e9f1730e90b767a8e4147a8;p=dak.git diff --git a/dak/export_suite.py b/dak/export_suite.py index 1c22f5e5..980ec5a5 100644 --- a/dak/export_suite.py +++ b/dak/export_suite.py @@ -32,6 +32,7 @@ Export binaries and sources from a suite to a flat directory structure. -c --copy copy files instead of symlinking them -d target directory to export packages to default: current directory + -r --relative use symlinks relative to target directory -s suite to grab uploads from """ @@ -42,6 +43,7 @@ def main(argv=None): arguments = [('h', 'help', 'Export::Options::Help'), ('c', 'copy', 'Export::Options::Copy'), ('d', 'directory', 'Export::Options::Directory', 'HasArg'), + ('r', 'relative', 'Export::Options::Relative'), ('s', 'suite', 'Export::Options::Suite', 'HasArg')] cnf = Config() @@ -65,6 +67,11 @@ def main(argv=None): sys.exit(1) symlink = 'Copy' not in options + relative = 'Relative' in options + + if relative and not symlink: + print "E: --relative and --copy cannot be used together." + sys.exit(1) binaries = suite.binaries sources = suite.sources @@ -79,10 +86,21 @@ def main(argv=None): af = session.query(ArchiveFile) \ .join(ArchiveFile.component).join(ArchiveFile.file) \ .filter(ArchiveFile.archive == suite.archive) \ - .filter(ArchiveFile.file == f).one() + .filter(ArchiveFile.file == f).first() + # XXX: Remove later. There was a bug that caused only the *.dsc to + # be installed in build queues and we do not want to break them. + # The bug was fixed in 55d2c7e6e2418518704623246021021e05b90e58 + # on 2012-11-04 + if af is None: + af = session.query(ArchiveFile) \ + .join(ArchiveFile.component).join(ArchiveFile.file) \ + .filter(ArchiveFile.file == f).first() + src = af.path + if relative: + src = os.path.relpath(src, directory) dst = os.path.join(directory, f.basename) if not os.path.exists(dst): - fs.copy(af.path, dst, symlink=symlink) + fs.copy(src, dst, symlink=symlink) fs.commit() if __name__ == '__main__':