summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGuido Guenther <agx@sigxcpu.org>2008-08-12 18:21:12 +0200
committerGuido Guenther <agx@sigxcpu.org>2008-08-12 18:21:12 +0200
commit32b2e89565f9c37bd3f3c40c77b5c19c5b1f0e2b (patch)
tree07d16c2bdfd35594adf35987bc4afc71b642a7c2
parent64808dffa98ca2e5910707d2a763606ec8a91cb0 (diff)
detect flat tar archives in git-import-dsc too
-rw-r--r--gbp/deb_utils.py10
-rwxr-xr-xgit-import-dsc6
-rwxr-xr-xgit-import-orig10
3 files changed, 15 insertions, 11 deletions
diff --git a/gbp/deb_utils.py b/gbp/deb_utils.py
index 91e3fc23..a9bd1fbc 100644
--- a/gbp/deb_utils.py
+++ b/gbp/deb_utils.py
@@ -9,6 +9,7 @@ import os
import re
import shutil
import sys
+import glob
import command_wrappers as gbpc
from errors import GbpError
@@ -192,6 +193,15 @@ def unpack_orig(archive, tmpdir, filters):
return unpackArchive.dir
+def tar_toplevel(dir):
+ """tar archives can contain a leading directory not"""
+ unpacked = glob.glob('%s/*' % dir)
+ if len(unpacked) == 1:
+ return unpacked[0]
+ else:
+ return dir
+
+
def _test():
import doctest
doctest.testmod()
diff --git a/git-import-dsc b/git-import-dsc
index aece7f9c..e82af2c1 100755
--- a/git-import-dsc
+++ b/git-import-dsc
@@ -25,7 +25,7 @@ import glob
import pipes
from email.Utils import parseaddr
import gbp.command_wrappers as gbpc
-from gbp.deb_utils import debian_version_chars, parse_changelog, unpack_orig, parse_dsc, DscFile
+from gbp.deb_utils import debian_version_chars, parse_changelog, unpack_orig, parse_dsc, DscFile, tar_toplevel
from gbp.git_utils import build_tag, GitRepository, GitRepositoryError, replace_source_tree, rfc822_date_to_git
from gbp.config import GbpOptionParser
from gbp.errors import GbpError
@@ -182,7 +182,7 @@ def main(argv):
msg = "%s version %s" % (format[1], src.upstream_version)
if initial:
- dirs['git'] = glob.glob('%s/*' % unpack_dir)[0]
+ dirs['git'] = tar_toplevel(unpack_dir)
if not import_initial(src, dirs, options):
raise GbpError
gitTag(tag, msg=msg)
@@ -195,7 +195,7 @@ def main(argv):
raise GbpError
else: # not the initial import
dirs['git'] = dirs['top']
- unpack_dir = glob.glob('%s/*' % unpack_dir)[0]
+ unpack_dir = tar_toplevel(unpack_dir)
if not repo.has_tag(tag):
print "tag %s not found, importing %s tarball" % (tag, format[1])
# FIXME: this is what import-orig does - merge
diff --git a/git-import-orig b/git-import-orig
index 383c5967..54c359e5 100755
--- a/git-import-orig
+++ b/git-import-orig
@@ -25,7 +25,7 @@ import re
import glob
import subprocess
import gbp.command_wrappers as gbpc
-from gbp.deb_utils import parse_changelog, unpack_orig, NoChangelogError, has_epoch
+from gbp.deb_utils import parse_changelog, unpack_orig, NoChangelogError, has_epoch, tar_toplevel
from gbp.git_utils import (GitRepositoryError, GitRepository, build_tag, replace_source_tree)
from gbp.config import GbpOptionParser
from gbp.errors import GbpError
@@ -177,13 +177,7 @@ on howto create it otherwise use --upstream-branch to specify it.
unpack_orig(archive, tmpdir, options.filters)
if options.verbose:
print "Unpacked %s to '%s'" % (archive , tmpdir)
- unpacked = glob.glob(tmpdir+'/*')
- # archive has everything packed up in one subdir:
- if len(unpacked) == 1:
- orig_dir = unpacked[0]
- # archive content not in a subdir
- else:
- orig_dir = tmpdir
+ orig_dir = tar_toplevel(tmpdir)
try:
cp = parse_changelog('debian/changelog')
pristine_orig = symlink_orig(archive, cp['Source'], version)