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