fate: Error out more gracefully on configure failure
authorDiego Biurrun <diego@biurrun.de>
Thu, 15 Feb 2018 12:26:20 +0000 (13:26 +0100)
committerDiego Biurrun <diego@biurrun.de>
Mon, 26 Feb 2018 12:30:05 +0000 (13:30 +0100)
If configure fails before config.fate is generated, the report file misses
some values and gets discarded by the FATE server. In these cases, print
those values as "failed" along with the failing configure command line.

tests/fate.sh

index c93e20a..033e7bf 100755 (executable)
@@ -21,6 +21,33 @@ test -d "$samples" || die "samples location not specified"
 
 : ${branch:=master}
 
+src=${workdir}/src
+: ${build:=${workdir}/build}
+: ${inst:=${workdir}/install}
+
+configuration='
+    --enable-gpl
+    --prefix="${inst}"
+    --samples="${samples}"
+    ${ignore_tests:+--ignore-tests="$ignore_tests"}
+    ${arch:+--arch="$arch"}
+    ${cpu:+--cpu="$cpu"}
+    ${toolchain:+--toolchain="$toolchain"}
+    ${cross_prefix:+--cross-prefix="$cross_prefix"}
+    ${as:+--as="$as"}
+    ${cc:+--cc="$cc"}
+    ${ld:+--ld="$ld"}
+    ${target_os:+--target-os="$target_os"}
+    ${sysroot:+--sysroot="$sysroot"}
+    ${target_exec:+--target-exec="$target_exec"}
+    ${target_path:+--target-path="$target_path"}
+    ${target_samples:+--target-samples="$target_samples"}
+    ${extra_cflags:+--extra-cflags="$extra_cflags"}
+    ${extra_ldflags:+--extra-ldflags="$extra_ldflags"}
+    ${extra_libs:+--extra-libs="$extra_libs"}
+    ${extra_conf}
+'
+
 lock(){
     lock=$1/fate.lock
     (set -C; exec >$lock) 2>/dev/null || return
@@ -43,27 +70,7 @@ update()(
 
 configure()(
     cd ${build} || return
-    ${src}/configure                                                    \
-        --prefix="${inst}"                                              \
-        --samples="${samples}"                                          \
-        --enable-gpl                                                    \
-        ${ignore_tests:+--ignore-tests="$ignore_tests"}                 \
-        ${arch:+--arch=$arch}                                           \
-        ${cpu:+--cpu="$cpu"}                                            \
-        ${toolchain:+--toolchain="$toolchain"}                          \
-        ${cross_prefix:+--cross-prefix="$cross_prefix"}                 \
-        ${as:+--as="$as"}                                               \
-        ${cc:+--cc="$cc"}                                               \
-        ${ld:+--ld="$ld"}                                               \
-        ${target_os:+--target-os="$target_os"}                          \
-        ${sysroot:+--sysroot="$sysroot"}                                \
-        ${target_exec:+--target-exec="$target_exec"}                    \
-        ${target_path:+--target-path="$target_path"}                    \
-        ${target_samples:+--target-samples="$target_samples"}           \
-        ${extra_cflags:+--extra-cflags="$extra_cflags"}                 \
-        ${extra_ldflags:+--extra-ldflags="$extra_ldflags"}              \
-        ${extra_libs:+--extra-libs="$extra_libs"}                       \
-        ${extra_conf}
+    eval ${src}/configure ${configuration}
 )
 
 compile()(
@@ -84,7 +91,12 @@ clean(){
 report(){
     date=$(date -u +%Y%m%d%H%M%S)
     echo "fate:1:${date}:${slot}:${version}:$1:$2:${branch}:${comment}" >report
-    cat ${build}/avbuild/config.fate ${build}/tests/data/fate/*.rep >> report 2> /dev/null
+    if test -e ${build}/avbuild/config.fate; then
+        cat ${build}/avbuild/config.fate >> report 2> /dev/null
+    else
+        eval echo config:failed:failed:failed:failed:failed:${configuration} >> report 2> /dev/null
+    fi
+    cat ${build}/tests/data/fate/*.rep >> report 2> /dev/null
     test -n "$fate_recv" && $tar report *.log | gzip | $fate_recv
 }
 
@@ -98,10 +110,6 @@ mkdir -p ${workdir} || die "Error creating ${workdir}"
 lock ${workdir}     || die "${workdir} locked"
 cd ${workdir}       || die "cd ${workdir} failed"
 
-src=${workdir}/src
-: ${build:=${workdir}/build}
-: ${inst:=${workdir}/install}
-
 test -d "$src" && update || checkout || die "Error fetching source"
 
 cd ${workdir}