From a0692d7cc1214ddc1324501c6e0667e52975fa35 Mon Sep 17 00:00:00 2001 From: Michael Prokop Date: Tue, 14 Apr 2020 18:01:07 +0200 Subject: [PATCH] scripts/generate-git-snapshot: explicitly set git-export-dir option when building with enabled overlay option MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If debian/gbp.conf contains something like: | [buildpackage] | overlay = True | export-dir = ../build-area then invoking gbp with our default $GBP_OPTS will fail with: | gbp:error: Overlay must be used with --git-export-dir. To avoid running into this, let's check for the overlay option, and if it's enabled then explicitly set --git-export-dir= to '--git-export-dir=../' to generate the orig.tar.* files at the expected place. On Debian/jessie `gbp config buildpackage.overlay` reports something like: | buildpackage.overlay=False while on newer systems, `gbp config buildpackage.overlay` reports: | False So the check only grep's for "True". JFTR, we are *not* setting --git-export-dir=../ by default, as this involves some further operations going on, which might be unexpected in existing installations where the overlay feature isn't present/enabled. See e.g.: | % gbp buildpackage -nc --git-force-create --git-ignore-new --git-ignore-branch -S -us -uc --git-verbose --git-builder=/bin/true --git-cleaner=/bin/true --git-export-dir= | gbp:debug: ['git', 'rev-parse', '--show-cdup'] | gbp:debug: ['git', 'rev-parse', '--is-bare-repository'] | gbp:debug: /bin/true [] [] | gbp:debug: ['git', 'symbolic-ref', 'HEAD'] | gbp:debug: ['git', 'show-ref', 'refs/heads/debian'] | gbp:debug: ['git', 'show-ref', 'refs/heads/pristine-tar'] | gbp:debug: ['git', 'ls-tree', 'upstream/5.8'] | gbp:info: zsh_5.8.orig.tar.gz does not exist, creating from 'upstream/5.8' | gbp:debug: Building upstream tarball with compression 'gzip -9' | gbp:debug: /bin/true ['-nc', '-S', '-us', '-uc'] [] vs: | % gbp buildpackage -nc --git-force-create --git-ignore-new --git-ignore-branch -S -us -uc --git-verbose --git-builder=/bin/true --git-cleaner=/bin/true --git-export-dir=../ | gbp:debug: ['git', 'rev-parse', '--show-cdup'] | gbp:debug: ['git', 'rev-parse', '--is-bare-repository'] | gbp:debug: /bin/true [] [] | gbp:debug: ['git', 'symbolic-ref', 'HEAD'] | gbp:debug: ['git', 'show-ref', 'refs/heads/debian'] | gbp:debug: ['git', 'ls-tree', 'HEAD'] | gbp:debug: ['git', 'show', '--pretty=medium', 'HEAD:debian/source/format'] | gbp:debug: ['git', 'show', '--pretty=medium', 'HEAD:debian/changelog'] | gbp:debug: ['git', 'show-ref', 'refs/heads/pristine-tar'] | gbp:debug: ['git', 'ls-tree', 'upstream/5.8'] | gbp:info: zsh_5.8.orig.tar.gz does not exist, creating from 'upstream/5.8' | gbp:debug: Building upstream tarball with compression 'gzip -9' | gbp:info: Exporting 'HEAD' to '/home/buildd/zsh-tmp' | gbp:debug: ['git', 'show', '--pretty=medium', 'HEAD:debian/source/format'] | gbp:info: Moving '/home/buildd/zsh-tmp' to '/home/buildd/zsh-5.8' | gbp:debug: ['git', 'show', '--pretty=medium', 'HEAD:debian/source/format'] | gbp:debug: /bin/true ['-nc', '-S', '-us', '-uc'] [] | gbp:debug: rm ['-rf', '/home/buildd/zsh-5.8'] [] Thanks: Guido Günther and Andrew Harle for feedback Closes: https://github.com/mika/jenkins-debian-glue/issues/230 --- scripts/generate-git-snapshot | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/scripts/generate-git-snapshot b/scripts/generate-git-snapshot index 3c2e1b2b..8774d7d8 100755 --- a/scripts/generate-git-snapshot +++ b/scripts/generate-git-snapshot @@ -60,8 +60,14 @@ gbp_opts() { if [ -n "${GBP_OPTS:-}" ] ; then echo "Found environment variable GBP_OPTS, set to ${GBP_OPTS}" else - GBP_OPTS=" -nc --git-force-create --git-ignore-new --git-ignore-branch -S -us -uc --git-verbose --git-builder=/bin/true --git-cleaner=/bin/true --git-export-dir= " echo "Using git-buildpackage default options provided by jenkins-debian-glue" + + if gbp config buildpackage.overlay | grep -q 'True' ; then + echo "Identified Debian package with overlay enabled, explicitly setting '--git-export-dir=../'" + GBP_OPTS=" -nc --git-force-create --git-ignore-new --git-ignore-branch -S -us -uc --git-verbose --git-builder=/bin/true --git-cleaner=/bin/true --git-export-dir=../ " + else + GBP_OPTS=" -nc --git-force-create --git-ignore-new --git-ignore-branch -S -us -uc --git-verbose --git-builder=/bin/true --git-cleaner=/bin/true --git-export-dir= " + fi fi }