diff options
author | Marco Nenciarini <mnencia@debian.org> | 2010-05-18 19:12:59 +0200 |
---|---|---|
committer | Guido Günther <agx@sigxcpu.org> | 2011-05-08 18:55:55 +0200 |
commit | 5503b17cd5489167af810340ec41e3bc34c1ac09 (patch) | |
tree | b551efc52dbe482cd2572c48041ab62d390f5bfc | |
parent | 2b1f71ad0a5811632834175b3549a4cfadcae970 (diff) |
Move extract_orig to gbp/deb.py to facilitate its use in git-import-*topic/multiple-tarballs
-rw-r--r-- | gbp/deb.py | 41 | ||||
-rwxr-xr-x | git-buildpackage | 43 |
2 files changed, 42 insertions, 42 deletions
@@ -272,6 +272,47 @@ def do_uscan(): return (True, None) return (True, tarball) +def remove_toplevel(dest_dir): + """remove leading directory of a tar archive""" + # Check if tarball extracts into a single folder or not: + tar_topdir = tar_toplevel(dest_dir) + if tar_topdir != dest_dir: + # If it extracts a single folder, move all of its contents to dest_dir: + r = glob.glob("%s/*" % tar_topdir) + r.extend(glob.glob("%s/.*" % tar_topdir)) # include hidden files and folders + for f in r: + os.rename(f, os.path.join(dest_dir, os.path.basename(f))) + + # Remove that single folder: + os.rmdir(tar_topdir) + +def extract_orig(orig_tarball, dest_dir, filter): + """extract orig tarball to export dir before exporting from git""" + print "Extracting %s to '%s'" % (os.path.basename(orig_tarball), dest_dir) + + # move_old_export(dest_dir) was pushed up to the caller because we need to + # be able to extract an orig_tarball without side effects + + # Make sure the destination dir exists and is empty + gbpc.RemoveTree(dest_dir)() + os.mkdir(dest_dir) + + # unpack the main tarball + unpack_orig(orig_tarball, dest_dir, filter) + + # make sure to remove the top level folder if there is only one + remove_toplevel(dest_dir) + + # eventually unpack the additional tarballs + src_dir = os.path.dirname(orig_tarball) + for c, f in orig_components(orig_tarball, os.listdir(src_dir)).iteritems(): + component_dir = os.path.join(dest_dir, c) + print "Extracting %s to '%s'" % (f, component_dir) + gbpc.RemoveTree(component_dir)() + os.mkdir(component_dir) + unpack_orig(os.path.join(src_dir, f), component_dir, filter) + remove_toplevel(component_dir) + def unpack_orig(archive, tmpdir, filters): """ unpack a .orig.tar.gz to tmpdir, leave the cleanup to the caller in case of diff --git a/git-buildpackage b/git-buildpackage index 75362a6..234a588 100755 --- a/git-buildpackage +++ b/git-buildpackage @@ -165,47 +165,6 @@ def drop_index(repo): if os.path.exists(wc_index): os.unlink(wc_index) -def remove_toplevel(dest_dir): - """remove leading directory of a tar archive""" - # Check if tarball extracts into a single folder or not: - tar_topdir = du.tar_toplevel(dest_dir) - if tar_topdir != dest_dir: - # If it extracts a single folder, move all of its contents to dest_dir: - r = glob("%s/*" % tar_topdir) - r.extend(glob("%s/.*" % tar_topdir)) # include hidden files and folders - for f in r: - os.rename(f, os.path.join(dest_dir, os.path.basename(f))) - - # Remove that single folder: - os.rmdir(tar_topdir) - -def extract_orig(orig_tarball, dest_dir, filter): - """extract orig tarball to export dir before exporting from git""" - print "Extracting %s to '%s'" % (os.path.basename(orig_tarball), dest_dir) - - # move_old_export(dest_dir) was pushed up to the caller because we need to - # be able to extract an orig_tarball without side effects - - # Make sure the destination dir exists and is empty - RemoveTree(dest_dir)() - os.mkdir(dest_dir) - - # unpack the main tarball - du.unpack_orig(orig_tarball, dest_dir, filter) - - # make sure to remove the top level folder if there is only one - remove_toplevel(dest_dir) - - # eventually unpack the additional tarballs - src_dir = os.path.dirname(orig_tarball) - for c, f in du.orig_components(orig_tarball, os.listdir(src_dir)).iteritems(): - component_dir = os.path.join(dest_dir, c) - print "Extracting %s to '%s'" % (f, component_dir) - RemoveTree(component_dir)() - os.mkdir(component_dir) - du.unpack_orig(os.path.join(src_dir, f), component_dir, filter) - remove_toplevel(component_dir) - def main(argv): changelog = 'debian/changelog' retval = 0 @@ -366,7 +325,7 @@ def main(argv): if du.is_native(cp): raise GbpError, "Cannot overlay Debian native package" move_old_export(tmp_dir) - extract_orig(os.path.join(output_dir, du.orig_file(cp, options.comp_type)), tmp_dir, '') + du.extract_orig(os.path.join(output_dir, du.orig_file(cp, options.comp_type)), tmp_dir, '') print "Exporting '%s' to '%s'" % (options.export, tmp_dir) dump_tree(tmp_dir, tree) |