aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Nenciarini <mnencia@debian.org>2010-05-18 19:12:59 +0200
committerGuido Günther <agx@sigxcpu.org>2011-05-08 18:55:55 +0200
commit5503b17cd5489167af810340ec41e3bc34c1ac09 (patch)
treeb551efc52dbe482cd2572c48041ab62d390f5bfc
parent2b1f71ad0a5811632834175b3549a4cfadcae970 (diff)
Move extract_orig to gbp/deb.py to facilitate its use in git-import-*topic/multiple-tarballs
-rw-r--r--gbp/deb.py41
-rwxr-xr-xgit-buildpackage43
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)