Add a new command to stop each module after the given stage. Main use-case: build.sh --clone --stop-at clone to quickly clone the source tree without building.
Signed-off-by: Peter Hutterer <[email protected]> --- There's an argument to be made for --start-at as well to quickly force a rebuild of all modules as well, without the autogen/configure stage. Likewise, once the NOCONFIGURE work hits, we could split autotools and configure as well, but that's all future work. Meanwhile, I just wanted build.sh to give me a full source tree without having to wait. build.sh | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/build.sh b/build.sh index 4d0efb5..ed4a195 100755 --- a/build.sh +++ b/build.sh @@ -390,6 +390,11 @@ process() { return 0 fi + stop_here "clone" + if [ $? -ne 0 ]; then + return 0 + fi + old_pwd=`pwd` cd $SRCDIR if [ $? -ne 0 ]; then @@ -424,6 +429,11 @@ process() { fi fi + stop_here "update" + if [ $? -ne 0 ]; then + return 0 + fi + # Build outside source directory if [ X"$DIR_ARCH" != X ] ; then mkdir -p "$DIR_ARCH" @@ -464,6 +474,11 @@ process() { fi fi + stop_here "configure" + if [ $? -ne 0 ]; then + return 0 + fi + # A custom 'make' target list was supplied through --cmd option if [ X"$MAKECMD" != X ]; then ${MAKE} $MAKEFLAGS $MAKECMD @@ -490,6 +505,11 @@ process() { return 1 fi + stop_here "build" + if [ $? -ne 0 ]; then + return 0 + fi + if [ X"$CHECK" != X ]; then ${MAKE} $MAKEFLAGS check if [ $? -ne 0 ]; then @@ -524,6 +544,11 @@ process() { return 1 fi + stop_here "install" + if [ $? -ne 0 ]; then + return 0 + fi + if [ X"$CLEAN" != X ]; then ${MAKE} $MAKEFLAGS clean if [ $? -ne 0 ]; then @@ -1041,6 +1066,8 @@ process_module_file() { return 0 } +stages="clone update configure build install" + usage() { basename="`expr "//$0" : '.*/\([^/]*\)'`" echo "Usage: $basename [options] [prefix]" @@ -1070,6 +1097,10 @@ usage() { echo " is assumed to be configuration options for the configuration" echo " of each module/component specifically" echo " --retry-v1 Remake 'all' on failure with Automake silent rules disabled" + echo " --stop-at <stage>" + echo " Stop module processing after <stage> and continue " + echo " with success. Allowed stages are:" + echo " $stages" echo "" echo "Usage: $basename -L" echo " -L Just list modules to build" @@ -1077,6 +1108,17 @@ usage() { envoptions } +stop_here() { + current_stage=$1 + + if [ x$current_stage = x$STOP_STAGE ]; then + echo "Stopping at stage $STOP_STAGE as requested" + return 1 + fi + + return 0 +} + # Ensure the named variable value contains a full path name # arguments: # $1 - the variable value (the path to examine) @@ -1282,6 +1324,23 @@ do --retry-v1) RETRY_VERBOSE=1 ;; + --stop-at) + shift + STOP_STAGE=$1 + found=0 + for stage in $stages; do + if [ "$stage" = "$STOP_STAGE" ]; then + found=1 + break + fi + done + if [ $found -ne 1 ]; then + echo "Invalid stage '$STOP_STAGE'. Allowed stages are: " + echo " $stages" + usage + exit 1 + fi + ;; *) if [ X"$too_many" = Xyes ]; then echo "unrecognized and/or too many command-line arguments" -- 1.7.10.4 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
