From 5503b17cd5489167af810340ec41e3bc34c1ac09 Mon Sep 17 00:00:00 2001 From: Marco Nenciarini Date: Tue, 18 May 2010 19:12:59 +0200 Subject: Move extract_orig to gbp/deb.py to facilitate its use in git-import-* --- gbp/deb.py | 41 +++++++++++++++++++++++++++++++++++++++++ git-buildpackage | 43 +------------------------------------------ 2 files changed, 42 insertions(+), 42 deletions(-) diff --git a/gbp/deb.py b/gbp/deb.py index df3e25e..b682b93 100644 --- a/gbp/deb.py +++ b/gbp/deb.py @@ -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) -- cgit v1.2.3