summaryrefslogtreecommitdiffstats
path: root/bin/reproducible_build.sh
diff options
context:
space:
mode:
authorHolger Levsen <holger@layer-acht.org>2015-09-20 14:35:32 +0200
committerHolger Levsen <holger@layer-acht.org>2015-09-20 14:57:19 +0200
commitf6a925687705ff3f8dab9726100c4af65cfadeb5 (patch)
tree67d523147820dbe849c2149d891e9220c260bdae /bin/reproducible_build.sh
parentbee43ac32e131f67afe0ac30c6e4a7808ab6a1c1 (diff)
downloadjenkins.debian.net-f6a925687705ff3f8dab9726100c4af65cfadeb5.tar.xz
reproducible: make diffoscope calls more robust, retry after 2m if the schroot was unavailable
Diffstat (limited to 'bin/reproducible_build.sh')
-rwxr-xr-xbin/reproducible_build.sh26
1 files changed, 25 insertions, 1 deletions
diff --git a/bin/reproducible_build.sh b/bin/reproducible_build.sh
index 1766e303..abd38181 100755
--- a/bin/reproducible_build.sh
+++ b/bin/reproducible_build.sh
@@ -308,10 +308,17 @@ call_diffoscope_on_changes_files() {
fi
# TEMP is recognized by python's tempfile module to create temp stuff inside
local TEMP=$(mktemp --tmpdir=$TMPDIR -d dbd-tmp-XXXXXXX)
- DIFFOSCOPE="$(schroot --directory $TMPDIR -c source:jenkins-reproducible-${DBDSUITE}-diffoscope diffoscope -- --version 2>&1)"
+ DIFFOSCOPE="$(schroot --directory $TMPDIR -c source:jenkins-reproducible-${DBDSUITE}-diffoscope diffoscope -- --version 2>&1 || true)"
+ LOG_RESULT=$(echo $DIFFOSCOPE | grep '^E: 15binfmt: update-binfmts: unable to open')
+ if [ ! -z "LOG_RESULT" ] ; then
+ echo "$(date -u) - schroot jenkins-reproducible-${DBDSUITE}-diffoscope not availble, will sleep 2min and retry."
+ sleep 2m
+ DIFFOSCOPE="$(schroot --directory $TMPDIR -c source:jenkins-reproducible-${DBDSUITE}-diffoscope diffoscope -- --version 2>&1 || echo 'diffoscope_version_not_available')"
+ fi
echo "$(date -u) - $DIFFOSCOPE will be used to compare the two builds:" | tee -a ${RBUILDLOG}
set +e
set -x
+ # remember to also modify the retry diffoscope call 15 lines below
( timeout $TIMEOUT schroot \
--directory $TMPDIR \
-c source:jenkins-reproducible-${DBDSUITE}-diffoscope \
@@ -322,6 +329,23 @@ call_diffoscope_on_changes_files() {
$TMPDIR/b2/${SRCPACKAGE}_${EVERSION}_${ARCH}.changes" \
2>&1 ) >> $TMPLOG
RESULT=$?
+ LOG_RESULT=$(grep '^E: 15binfmt: update-binfmts: unable to open' $TMPLOG)
+ if [ ! -z "LOG_RESULT" ] ; then
+ rm -f $TMPLOG $TMPDIR/${DBDREPORT} $TMPDIR/$DBDTXT
+ echo "$(date -u) - schroot jenkins-reproducible-${DBDSUITE}-diffoscope not availble, will sleep 2min and retry."
+ sleep 2m
+ # remember to also modify the retry diffoscope call 15 lines above
+ ( timeout $TIMEOUT schroot \
+ --directory $TMPDIR \
+ -c source:jenkins-reproducible-${DBDSUITE}-diffoscope \
+ -- sh -c "export TMPDIR=$TEMP ; diffoscope \
+ --html $TMPDIR/${DBDREPORT} \
+ --text $TMPDIR/$DBDTXT \
+ $TMPDIR/b1/${SRCPACKAGE}_${EVERSION}_${ARCH}.changes \
+ $TMPDIR/b2/${SRCPACKAGE}_${EVERSION}_${ARCH}.changes" \
+ 2>&1 ) >> $TMPLOG
+ RESULT=$?
+ fi
if ! "$DEBUG" ; then set +x ; fi
set -e
cat $TMPLOG | tee -a $RBUILDLOG # print dbd output