summaryrefslogtreecommitdiffstats
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
parentbee43ac32e131f67afe0ac30c6e4a7808ab6a1c1 (diff)
downloadjenkins.debian.net-f6a925687705ff3f8dab9726100c4af65cfadeb5.tar.xz
reproducible: make diffoscope calls more robust, retry after 2m if the schroot was unavailable
-rwxr-xr-xbin/reproducible_build.sh26
-rwxr-xr-xbin/reproducible_common.sh17
2 files changed, 42 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
diff --git a/bin/reproducible_common.sh b/bin/reproducible_common.sh
index d3fd2a2f..c6e8a9fa 100755
--- a/bin/reproducible_common.sh
+++ b/bin/reproducible_common.sh
@@ -431,6 +431,7 @@ call_diffoscope() {
local TMPLOG=(mktemp --tmpdir=$TMPDIR)
local msg=""
set +e
+ # remember to also modify the retry diffoscope call 15 lines below
( timeout $TIMEOUT schroot \
--directory $TMPDIR \
-c source:jenkins-reproducible-${DBDSUITE}-diffoscope \
@@ -440,6 +441,22 @@ call_diffoscope() {
$TMPDIR/b2/$1/$2 2>&1 \
) 2>&1 >> $TMPLOG
RESULT=$?
+ LOG_RESULT=$(grep '^E: 15binfmt: update-binfmts: unable to open' $TMPLOG)
+ if [ ! -z "LOG_RESULT" ] ; then
+ rm -f $TMPLOG $TMPDIR/$1/$2.html
+ 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 \
+ diffoscope -- \
+ --html $TMPDIR/$1/$2.html \
+ $TMPDIR/b1/$1/$2 \
+ $TMPDIR/b2/$1/$2 2>&1 \
+ ) 2>&1 >> $TMPLOG
+ RESULT=$?
+ fi
if ! "$DEBUG" ; then set +x ; fi
set -e
cat $TMPLOG # print dbd output