Previously MAKEALL would always return a value of 0, even if 1 or more boards did not compile. This change causes MAKEALL to return 0 if all boards were able to build, otherwise 1.
This change also requires changing the script interpreter from sh to bash to support bash's PIPESTATUS variable. Signed-off-by: Peter Tyser <pty...@xes-inc.com> --- Changes since v1: - Return only 0 or 1 Mike pointed out that if we want to maintain POSIX compliance we could replace the PIPESTATUS usage with: # need to maintain exit value ourselves as pipes eat it fail=${LOG_DIR}/$target.failed rm -f ${fail} (${MAKE} ${JOBS} all 2>&1 >${LOG_DIR}/$target.MAKELOG \ || touch ${fail}) | tee ${LOG_DIR}/$target.ERR [ -e ${fail} ] && RC=1 rm -f ${fail} Let me know if others prefer POSIX compliance over the more straight- forward PIPESATUS usage. MAKEALL | 11 ++++++++++- 1 files changed, 10 insertions(+), 1 deletions(-) diff --git a/MAKEALL b/MAKEALL index d63c5c2..f9caabd 100755 --- a/MAKEALL +++ b/MAKEALL @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # Print statistics when we exit trap exit 1 2 3 15 @@ -39,6 +39,7 @@ LIST="" ERR_CNT=0 ERR_LIST="" TOTAL_CNT=0 +RC=0 ######################################################################### ## MPC5xx Systems @@ -936,6 +937,12 @@ build_target() { ${MAKE} ${JOBS} all 2>&1 >${LOG_DIR}/$target.MAKELOG \ | tee ${LOG_DIR}/$target.ERR + + # Check for 'make' errors + if [ ${PIPESTATUS[0]} -ne 0 ] ; then + RC=1 + fi + if [ -s ${LOG_DIR}/$target.ERR ] ; then ERR_CNT=$((ERR_CNT + 1)) ERR_LIST="${ERR_LIST} $target" @@ -959,6 +966,8 @@ print_stats() { echo "Boards with warnings or errors: ${ERR_CNT} (${ERR_LIST} )" fi echo "----------------------------------------------------------" + + exit $RC } #----------------------------------------------------------------------- -- 1.6.2.1 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot