From: Trevor Woerner <[email protected]>

The build.sh script can now accept any arbitrary git or make commands from
the user via the "--cmd" command-line argument. If no such argument is
provided "make" followed by "make install" is assumed.

Signed-off-by: Trevor Woerner <[email protected]>
---
 build.sh |   81 +++++++++++++++++++++++++++++++++----------------------------
 1 files changed, 44 insertions(+), 37 deletions(-)

diff --git a/build.sh b/build.sh
index d4f250a..07a46a1 100755
--- a/build.sh
+++ b/build.sh
@@ -218,7 +218,7 @@ build() {
         return
     fi
 
-    echo "Building $1 module component $2..."
+    echo "Processing module/component \"$1/$2\""
 
     if [ X"$BUILT_MODULES_FILE" != X ]; then
         echo "$1/$2" >> $BUILT_MODULES_FILE
@@ -227,8 +227,18 @@ build() {
     old_pwd=`pwd`
     cd $SRCDIR || failed cd1 $1 $2
 
-    if [ X"$PULL" != X ]; then
-       git pull --rebase || failed "git pull" $1 $2
+    if [ X"$GITCMD" != X ]; then
+       $GITCMD
+       if [ $? -ne 0 ]; then
+           failed "$GITCMD" $1 $2
+       fi
+       cd $old_pwd
+
+       if [ X"$BUILD_ONE" != X ]; then
+           echo "Single-component git command complete"
+           exit 0
+       fi
+       return 0
     fi
 
     # Build outside source directory
@@ -260,21 +270,13 @@ build() {
            ${CACHE:+--cache-file=}${CACHE} ${CONFFLAGS} "$CONFCFLAGS" || \
            failed ${CONFCMD} $1 $2
     fi
-    ${MAKE} $MAKEFLAGS || failed make $1 $2
-    if [ X"$CHECK" != X ]; then
-        ${MAKE} $MAKEFLAGS check || failed check $1 $2
-    fi
-    if [ X"$CLEAN" != X ]; then
-       ${MAKE} $MAKEFLAGS clean || failed clean $1 $2
-    fi
-    if [ X"$DIST" != X ]; then
-       ${MAKE} $MAKEFLAGS dist || failed dist $1 $2
-    fi
-    if [ X"$DISTCHECK" != X ]; then
-       ${MAKE} $MAKEFLAGS distcheck || failed distcheck $1 $2
+    if [ X"$MAKECMD" = X ]; then
+       ${MAKE} $MAKEFLAGS || failed make $1 $2
+       $SUDO env LD_LIBRARY_PATH=$LD_LIBRARY_PATH ${MAKE} $MAKEFLAGS install 
|| \
+           failed install $1 $2
+    else
+       $MAKECMD || failed "$MAKECMD" $1 $2
     fi
-    $SUDO env LD_LIBRARY_PATH=$LD_LIBRARY_PATH ${MAKE} $MAKEFLAGS install || \
-       failed install $1 $2
 
     cd ${old_pwd}
 
@@ -721,9 +723,8 @@ usage() {
     echo "  where options are:"
     echo "  -a : do NOT run auto config tools (autogen.sh, configure)"
     echo "  -b : use .build.$HAVE_ARCH build directory"
-    echo "  -c : run make clean in addition to others"
-    echo "  -d : run make distcheck in addition to others"
-    echo "  -D : run make dist in addition to others"
+    echo "  --cmd <cmd> : run an arbitrary 'git' or 'make' command"
+    echo "                (default: \"make; make install\")"
     echo "  -f file: append module being built to file. The last line of this"
     echo "           file can be used for resuming with -r."
     echo "  -g : build with debug information"
@@ -731,12 +732,10 @@ usage() {
     echo "  -l : build libraries only (i.e. no drivers, no docs, etc.)"
     echo "  -n : do not quit after error; just print error message"
     echo "  -o module/component : build just this component"
-    echo "  -p : run git pull on each component"
     echo "  -r module/component : resume building with this component"
     echo "  -s sudo-command : sudo command to use"
     echo "  --clone : clone non-existing repositories (uses \$GITROOT if set)"
     echo "  --autoresume file : autoresume from file"
-    echo "  --check : run make check in addition to others"
     echo ""
     echo "Usage: $0 -L"
     echo "  -L : just list modules to build"
@@ -750,7 +749,7 @@ DIR_CONFIG="."
 LIB_ONLY=0
 
 # Process command line args
-CMDLINE=`getopt -o abcdDf:ghlno:pr:s:L --long check,clone,help,autoresume: -n 
$0 -- "$@"`
+CMDLINE=`getopt -o abf:ghlno:r:s:L --long clone,help,autoresume:,cmd: -n $0 -- 
"$@"`
 if [ $? != 0 ]; then
     echo "getopt(1) invocation error"
     exit 1
@@ -765,20 +764,31 @@ while [ 1 ]; do
        DIR_ARCH=".build.$HAVE_ARCH"
        DIR_CONFIG=".."
        ;;
-    -c)
-       CLEAN=1
-       ;;
-    --check)
-       CHECK=1
-       ;;
     --clone)
        CLONE=1
        ;;
-    -d)
-       DISTCHECK=1
-       ;;
-    -D)
-       DIST=1
+    --cmd)
+       shift
+       cmd1=`echo $1 | cut -d' ' -f1`
+       cmd2=`echo $1 | cut -d' ' -f2`
+       if [ X"$cmd1" = X"git" ]; then
+           if [ X"$cmd2" = X"clone" ]; then
+               echo "The \"git clone\" command is handled with the --clone 
cmdline arg"
+               echo ""
+               usage
+               exit 1
+           else
+               GITCMD=$1
+           fi
+       elif [ X"$cmd1" = X"make" ]; then
+           MAKECMD=$1
+       else
+           echo "The script can only process 'make' or 'git' commands"
+           echo "It can't process '$cmd1' commands"
+           echo ""
+           usage
+           exit 1
+       fi
        ;;
     -f)
         shift
@@ -804,9 +814,6 @@ while [ 1 ]; do
        RESUME=$1
        BUILD_ONE=1
        ;;
-    -p)
-       PULL=1
-       ;;
     -r)
        shift
        RESUME=$1
-- 
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

Reply via email to