From: Trevor Woerner <[email protected]> Update code to make sure it stops on an error or continues to process as expeted.
Signed-off-by: Trevor Woerner <[email protected]> --- build.sh | 90 +++++++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 66 insertions(+), 24 deletions(-) diff --git a/build.sh b/build.sh index d7ea75e..82ca01e 100755 --- a/build.sh +++ b/build.sh @@ -213,23 +213,21 @@ clone() { return 0 } -build() { - if [ -n "$LISTONLY" ]; then - echo "$1/$2" - return 0 - fi - - if [ -n "$RESUME" ]; then - if [ "$RESUME" = "$1/$2" ]; then - unset RESUME - # Resume build at this module - else - echo "Skipping $1 module component $2..." - return 0 - fi +# perform the steps to process one module +# arguments: +# $1 - required +# $2 - optional +# returns: +# 0 - good +# 1 - bad +process() { + # preconds + if [ -z "$1" ]; then + errout "internal error! required argument \$1 not provided" + return 1 fi - module_title "$1/$2" + echo "Processing module \"$1/$2\"" SRCDIR="" CONFCMD="" @@ -241,10 +239,7 @@ build() { if [ $? -ne 0 ]; then errout "Failed to clone $1 module component $2. Ignoring." clonefailed_components+="$1/$2 " - if [ -n "$BUILD_ONE" ]; then - exit 1 - fi - return + return 1 fi SRCDIR="$1/$2" CONFCMD="autogen.sh" @@ -256,11 +251,9 @@ build() { if [ -z "$SRCDIR" ]; then errout "$1 module component $2 does not exist, skipping." nonexistent_components+="$1/$2 " - return + return 1 fi - echo "Building $1 module component $2..." - if [ -n "$BUILT_MODULES_FILE" ]; then echo "$1/$2" >> $BUILT_MODULES_FILE fi @@ -278,7 +271,7 @@ build() { if cd "$DIR_ARCH" ; then :; else failed cd2 $1 $2 cd ${old_pwd} - return + return 1 fi fi @@ -319,8 +312,57 @@ build() { cd ${old_pwd} + return 0 +} + +# process all modules to retain the semantics of +# list-only, keep-going, and one-shot +# the arguments specify the module to process +# arguments: +# $1 - required +# $2 - optional +# returns: +# (not significant) +build() { + local _rtn + + # preconds + if [ -z "$1" ]; then + errout "internal error! missing required argument \$1" + return + fi + + # just print list of modules to process + if [ -n "$LISTONLY" ]; then + echo "$1/$2" + return + fi + + # if we're resuming a previously stopped build + # skip all modules up to the one from which to resume processing + if [ -n "$RESUME" ]; then + if [ "$RESUME" = "$1/$2" ]; then + unset RESUME + # Resume build at this module + else + echo "Skipping $1 module component $2..." + return + fi + fi + + module_title "$1/$2" + + process $1 $2 + _rtn=$? + if [ $_rtn -ne 0 ]; then + errout "error processing module \"$1/$2\"" + if [ -z "$KEEPGOING" ]; then + exit 1 + fi + fi + if [ -n "$BUILD_ONE" ]; then - echo "Single-component build complete" + echo "Single component processing complete" exit 0 fi } -- 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
