From: Trevor Woerner <[email protected]> Add a function to generate error messages which indicates where in the script the error message is being generated. This helps to track down how and where and error is being detected while the script runs.
Signed-off-by: Trevor Woerner <[email protected]> --- build.sh | 33 ++++++++++++++++++++++++++++----- 1 files changed, 28 insertions(+), 5 deletions(-) diff --git a/build.sh b/build.sh index 14219ad..c2f83a5 100755 --- a/build.sh +++ b/build.sh @@ -65,9 +65,32 @@ failed_components="" nonexistent_components="" clonefailed_components="" +# print an error message indicating source function and line number +# arguments: +# $1 - message to display +# returns: +# (not significant) +errout() { + local _linenum=0 + local _funcnum=1 + + # preconds + if [ -z "$1" ]; then + return + fi + + # if this is called from failed() we want its ancestors + if [ "${FUNCNAME[1]}" = "failed" ]; then + _linenum=1 + _funcnum=2 + fi + + echo "[${FUNCNAME[$_funcnum]}():${BASH_LINENO[$_linenum]}] $1" > /dev/stderr +} + failed() { if [ -n "${NOQUIT}" ]; then - echo "***** $1 failed on $2/$3" + errout "***** $1 failed on $2/$3" failed_components+="$2/$3 " else exit 1 @@ -216,7 +239,7 @@ build() { elif [ -n "$CLONE" ]; then clone $1 $2 if [ $? -ne 0 ]; then - echo "Failed to clone $1 module component $2. Ignoring." + errout "Failed to clone $1 module component $2. Ignoring." clonefailed_components+="$1/$2 " if [ -n "$BUILD_ONE" ]; then exit 1 @@ -231,7 +254,7 @@ build() { fi if [ -z "$SRCDIR" ]; then - echo "$1 module component $2 does not exist, skipping." + errout "$1 module component $2 does not exist, skipping." nonexistent_components+="$1/$2 " return fi @@ -770,7 +793,7 @@ LIB_ONLY=0 # Process command line args CMDLINE=`getopt -o abcdDf:ghlno:pr:s:L --long check,clone,help,autoresume: -n $0 -- "$@"` if [ $? != 0 ]; then - echo "getopt(1) invocation error" + errout "getopt(1) invocation error" exit 1 fi eval set -- "$CMDLINE" @@ -846,7 +869,7 @@ while [ 1 ]; do break ;; *) - echo "internal getopt(1) error!" + errout "internal getopt(1) error!" exit 1 ;; esac -- 1.7.3.rc2 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
