From 1613c180e0cac92bfbef0a139af30fe6ccc81001 Mon Sep 17 00:00:00 2001 From: Angus Gratton Date: Tue, 6 Dec 2016 10:39:56 -0800 Subject: [PATCH] CI build_examples.sh: Fail on warnings, even with -Wno-error --- make/build_examples.sh | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/make/build_examples.sh b/make/build_examples.sh index 8345dab502..f1b37b7b4b 100755 --- a/make/build_examples.sh +++ b/make/build_examples.sh @@ -12,24 +12,42 @@ EXAMPLE_NUM=1 RESULT=0 +RESULT_WARNINGS=22 # magic number result code for "warnings found" + set -e for example in ${IDF_PATH}/examples/*; do [ -f ${example}/Makefile ] || continue echo "Building ${example} as ${EXAMPLE_NUM}..." - mkdir ${EXAMPLE_NUM} - cp -r ${example} ${EXAMPLE_NUM} - pushd ${EXAMPLE_NUM}/`basename ${example}` + mkdir -p example_builds/${EXAMPLE_NUM} + cp -r ${example} example_builds/${EXAMPLE_NUM} + pushd example_builds/${EXAMPLE_NUM}/`basename ${example}` # be stricter in the CI build than the default IDF settings export EXTRA_CFLAGS="-Werror -Werror=deprecated-declarations" export EXTRA_CXXFLAGS=${EXTRA_CFLAGS} - # build non-verbose first, only build verbose if there's an error - (make clean defconfig && make all ) || (RESULT=$?; make V=1) + # build non-verbose first + BUILDLOG=$(mktemp -t examplebuild.XXXX.log) + ( + set -e + make clean defconfig + make all 2>&1 | tee $BUILDLOG + ) || (RESULT=$?; make V=1) # only build verbose if there's an error popd EXAMPLE_NUM=$(( $EXAMPLE_NUM + 1 )) + + if [ $RESULT -eq 0 ] && grep -q ": warning:" $BUILDLOG; then + echo "Build will fail, due to warnings in this example" + RESULT=$RESULT_WARNINGS + fi + + rm -f $BUILDLOG done +if [ $RESULT -eq $RESULT_WARNINGS ]; then + echo "Build would have passed, except for warnings." +fi + exit $RESULT