What's wrong with a failed git checkout?

---
 gbp/deb/git.py              | 15 ++++++++++++---
 gbp/scripts/buildpackage.py |  2 ++
 gbp/scripts/export_orig.py  |  6 +++++-
 3 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/gbp/deb/git.py b/gbp/deb/git.py
index 3584f6ff..fa45807a 100644
--- a/gbp/deb/git.py
+++ b/gbp/deb/git.py
@@ -316,13 +316,22 @@ class DebianGitRepository(PkgGitRepository):

source.upstream_version,
                                                                     comp))

-    def create_upstream_tarball_via_pristine_tar(self, source,
output_dir, comp, component=None):
+    def create_upstream_tarball_via_pristine_tar(self, source,
output_dir, comp, upstream_signatures, component=None):
         output = source.upstream_tarball_name(comp.type, component=component)
+        gbp.log.debug("upstream signature state: %s" % upstream_signatures)
         try:
+            signature = False if upstream_signatures.is_off() else True
             self.pristine_tar.checkout(source.name,
source.upstream_version, comp.type, output_dir,
-                                       component=component, quiet=True)
+                                       component=component,
quiet=True, signature=signature)
         except Exception as e:
-            raise GitRepositoryError("Error creating %s: %s" % (output, e))
+            if upstream_signatures.is_on():
+                raise GitRepositoryError("Error creating %s with
attached signature file: %s" % (output, e))
+            gbp.log.info("Failed to create '%s' with attached
signature file. Retrying without..." % output)
+            try:
+                self.pristine_tar.checkout(source.name,
source.upstream_version, comp.type, output_dir,
+                                           component=component,
quiet=True, signature=False)
+            except Exception as e:
+                raise GitRepositoryError("Error creating %s: %s" % (output, e))
         return True

     def create_upstream_tarball_via_git_archive(self, source,
output_dir, treeish,
diff --git a/gbp/scripts/buildpackage.py b/gbp/scripts/buildpackage.py
index 2aca53df..9b3d67fa 100755
--- a/gbp/scripts/buildpackage.py
+++ b/gbp/scripts/buildpackage.py
@@ -395,6 +395,8 @@ def build_parser(name, prefix=None):
                                       help="Compression type, default
is '%(compression)s'")
     orig_group.add_config_file_option(option_name="compression-level",
dest="comp_level",
                                       help="Compression level,
default is '%(compression-level)s'")
+    orig_group.add_config_file_option(option_name="upstream-signatures",
dest="upstream_signatures",
+                                      help="use upstream signatures,
default is auto", type='tristate')
     orig_group.add_config_file_option("component", action="append",
metavar='COMPONENT',
                                       dest="components")
     branch_group.add_config_file_option(option_name="upstream-branch",
dest="upstream_branch")
diff --git a/gbp/scripts/export_orig.py b/gbp/scripts/export_orig.py
index 13be4f91..cad8297b 100755
--- a/gbp/scripts/export_orig.py
+++ b/gbp/scripts/export_orig.py
@@ -113,7 +113,8 @@ def pristine_tar_build_origs(repo, source,
output_dir, options):

source.upstream_tarball_name(comp.type))))
         repo.create_upstream_tarball_via_pristine_tar(source,
                                                       output_dir,
-                                                      comp)
+                                                      comp,
+
options.upstream_signatures)
         for component in options.components:
             gbp.log.info("Creating %s" %
                          os.path.abspath(os.path.join(output_dir,
@@ -121,6 +122,7 @@ def pristine_tar_build_origs(repo, source,
output_dir, options):
             repo.create_upstream_tarball_via_pristine_tar(source,
                                                           output_dir,
                                                           comp,
+
options.upstream_signatures,
                                                           component=component)
         return True
     except GitRepositoryError:
@@ -303,6 +305,8 @@ def build_parser(name):
                                       help="Compression type, default
is '%(compression)s'")
     orig_group.add_config_file_option(option_name="compression-level",
dest="comp_level",
                                       help="Compression level,
default is '%(compression-level)s'")
+    orig_group.add_config_file_option(option_name="upstream-signatures",
dest="upstream_signatures",
+                                      help="use upstream signature,
default is auto", type='tristate')
     orig_group.add_config_file_option("component", action="append",
metavar='COMPONENT',
                                       dest="components")
     branch_group.add_config_file_option(option_name="upstream-branch",
dest="upstream_branch")
-- 
2.24.0

Reply via email to