From 4601607ab8a0f6b814d8cbc086bc5377880e9cd7 Mon Sep 17 00:00:00 2001 From: Ansgar Burchardt Date: Sun, 12 Aug 2012 10:57:24 +0200 Subject: [PATCH] dak/export.py, daklib/policy.py: ignore existing files The same upstream tarball can be used by multiple uploads so we have to ignore already existing files. --- dak/export.py | 2 +- daklib/policy.py | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/dak/export.py b/dak/export.py index 8545167c..841e3361 100644 --- a/dak/export.py +++ b/dak/export.py @@ -69,7 +69,7 @@ def main(argv=None): for u in uploads: print "Processing {0}...".format(u.changes.changesname) - UploadCopy(u).export(directory, symlink=symlink) + UploadCopy(u).export(directory, symlink=symlink, ignore_existing=True) if __name__ == '__main__': main() diff --git a/daklib/policy.py b/daklib/policy.py index eef18a4f..cfb0e1df 100644 --- a/daklib/policy.py +++ b/daklib/policy.py @@ -49,7 +49,7 @@ class UploadCopy(object): self.directory = None self.upload = upload - def export(self, directory, mode=None, symlink=True): + def export(self, directory, mode=None, symlink=True, ignore_existing=False): """export a copy of the upload @type directory: str @@ -60,6 +60,9 @@ class UploadCopy(object): @type symlink: bool @param symlink: use symlinks instead of copying the files + + @type ignore_existing: bool + @param ignore_existing: ignore already existing files """ with FilesystemTransaction() as fs: source = self.upload.source @@ -69,22 +72,27 @@ class UploadCopy(object): for dsc_file in source.srcfiles: f = dsc_file.poolfile dst = os.path.join(directory, os.path.basename(f.filename)) - fs.copy(f.fullpath, dst, mode=mode, symlink=symlink) + if not os.path.exists(dst) or not ignore_existing: + fs.copy(f.fullpath, dst, mode=mode, symlink=symlink) + for binary in self.upload.binaries: f = binary.poolfile dst = os.path.join(directory, os.path.basename(f.filename)) - fs.copy(f.fullpath, dst, mode=mode, symlink=symlink) + if not os.path.exists(dst) or not ignore_existing: + fs.copy(f.fullpath, dst, mode=mode, symlink=symlink) # copy byhand files for byhand in self.upload.byhand: src = os.path.join(queue.path, byhand.filename) dst = os.path.join(directory, byhand.filename) - fs.copy(src, dst, mode=mode, symlink=symlink) + if not os.path.exists(dst) or not ignore_existing: + fs.copy(src, dst, mode=mode, symlink=symlink) # copy .changes src = os.path.join(queue.path, self.upload.changes.changesname) dst = os.path.join(directory, self.upload.changes.changesname) - fs.copy(src, dst, mode=mode, symlink=symlink) + if not os.path.exists(dst) or not ignore_existing: + fs.copy(src, dst, mode=mode, symlink=symlink) def __enter__(self): assert self.directory is None -- 2.39.2