<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
  <META NAME="GENERATOR" CONTENT="GtkHTML/3.26.0">
</HEAD>
<BODY>
On Fri, 2010-09-24 at 00:15 -0400, Trevor Woerner wrote:
<BLOCKQUOTE TYPE=CITE>
<PRE>
From: Trevor Woerner &lt;<A HREF="mailto:twoerner@gmail.com">twoerner@gmail.com</A>&gt;

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

Signed-off-by: Trevor Woerner &lt;<A HREF="mailto:twoerner@gmail.com">twoerner@gmail.com</A>&gt;
---
 build.sh |   79 +++++++++++++++++++++++++++++++++----------------------------
 1 files changed, 43 insertions(+), 36 deletions(-)

diff --git a/build.sh b/build.sh
index c01a0d8..2b18390 100755
--- a/build.sh
+++ b/build.sh
@@ -218,7 +218,7 @@ build() {
         return
     fi
 
-    echo &quot;Building $1 module component $2...&quot;
+    echo &quot;Processing module/component \&quot;$1/$2\&quot;&quot;
</PRE>
</BLOCKQUOTE>
I like the above, but it is not related to the --cmd patch. One patch, one logical change.
<BLOCKQUOTE TYPE=CITE>
<PRE>
     if [ X&quot;$BUILT_MODULES_FILE&quot; != X ]; then
         echo &quot;$1/$2&quot; &gt;&gt; $BUILT_MODULES_FILE
@@ -227,8 +227,18 @@ build() {
     old_pwd=`pwd`
     cd $SRCDIR || failed cd1 $1 $2
 
-    if [ X&quot;$PULL&quot; != X ]; then
-        git pull --rebase || failed &quot;git pull&quot; $1 $2
+    if [ X&quot;$GITCMD&quot; != X ]; then
+        $GITCMD
+        if [ $? -ne 0 ]; then
+            failed &quot;$GITCMD&quot; $1 $2
+        fi
+        cd $old_pwd
+
+        if [ X&quot;$BUILD_ONE&quot; != X ]; then
+            echo &quot;Single-component git command complete&quot;
+            exit 0
+        fi
+        return 0
     fi
 
     # Build outside source directory
@@ -260,21 +270,13 @@ build() {
             ${CACHE:+--cache-file=}${CACHE} ${CONFFLAGS} &quot;$CONFCFLAGS&quot; || \
             failed ${CONFCMD} $1 $2
     fi
-    ${MAKE} $MAKEFLAGS || failed make $1 $2
-    if [ X&quot;$CHECK&quot; != X ]; then
-        ${MAKE} $MAKEFLAGS check || failed check $1 $2
-    fi
-    if [ X&quot;$CLEAN&quot; != X ]; then
-        ${MAKE} $MAKEFLAGS clean || failed clean $1 $2
-    fi
-    if [ X&quot;$DIST&quot; != X ]; then
-        ${MAKE} $MAKEFLAGS dist || failed dist $1 $2
-    fi
-    if [ X&quot;$DISTCHECK&quot; != X ]; then
-        ${MAKE} $MAKEFLAGS distcheck || failed distcheck $1 $2
+    if [ X&quot;$MAKECMD&quot; = 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 &quot;$MAKECMD&quot; $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 &quot;  where options are:&quot;
     echo &quot;  -a : do NOT run auto config tools (autogen.sh, configure)&quot;
     echo &quot;  -b : use .build.$HAVE_ARCH build directory&quot;
-    echo &quot;  -c : run make clean in addition to others&quot;
-    echo &quot;  -d : run make distcheck in addition to others&quot;
-    echo &quot;  -D : run make dist in addition to others&quot;
+&nbsp;&nbsp;&nbsp; echo &quot;&nbsp; --cmd &lt;cmd&gt; : run an arbitrary 'git' or 'make' command&quot;
</PRE>
</BLOCKQUOTE>
The long options are grouped at the end.
<BLOCKQUOTE TYPE=CITE>
<PRE>
+    echo &quot;                (default: \&quot;make; make install\&quot;)&quot;
     echo &quot;  -f file: append module being built to file. The last line of this&quot;
     echo &quot;           file can be used for resuming with -r.&quot;
     echo &quot;  -g : build with debug information&quot;
@@ -731,12 +732,10 @@ usage() {
     echo &quot;  -l : build libraries only (i.e. no drivers, no docs, etc.)&quot;
     echo &quot;  -n : do not quit after error; just print error message&quot;
     echo &quot;  -o module/component : build just this component&quot;
-    echo &quot;  -p : run git pull on each component&quot;
     echo &quot;  -r module/component : resume building with this component&quot;
     echo &quot;  -s sudo-command : sudo command to use&quot;
     echo &quot;  --clone : clone non-existing repositories (uses \$GITROOT if set)&quot;
&nbsp;&nbsp;&nbsp;&nbsp; echo &quot;&nbsp; --autoresume file : autoresume from file&quot;
</PRE>
</BLOCKQUOTE>
Not your doing, but autoresume is in the wrong order. It should be above --clone.<BR>
See commit 8eebfc62963aae556791cccd32e63fee537dea79<BR>
Can you fix in a separate patch? I can do it but, you know, rebasing...
<BLOCKQUOTE TYPE=CITE>
<PRE>
-    echo &quot;  --check : run make check in addition to others&quot;
     echo &quot;&quot;
     echo &quot;Usage: $0 -L&quot;
&nbsp;&nbsp;&nbsp;&nbsp; echo &quot;&nbsp; -L : just list modules to build&quot;
@@ -760,20 +759,31 @@ do
         DIR_ARCH=&quot;.build.$HAVE_ARCH&quot;
         DIR_CONFIG=&quot;..&quot;
         ;
-    -c)
-        CLEAN=1
-        ;
-    --check)
-        CHECK=1
-        ;
     --clone)
         CLONE=1
         ;
-    -d)
-        DISTCHECK=1
-        ;
-    -D)
-        DIST=1
</PRE>
</BLOCKQUOTE>
Removal of existing options should be discussed separately.<BR>
Providing a generic way of performing tasks (the --cmd) does not mean<BR>
making it harder to perform common tasks. <BR>
Not everyone knows automake in details, much less functions like &quot;dist&quot; and &quot;distcheck&quot;.<BR>
<BR>
I could see the removal of --check. But that's my biased view.<BR>
<BR>
Rather than -p, I see 2 options I used regularly: getting a status and rebasing.<BR>
Something like --rebase and --status. 
<BLOCKQUOTE TYPE=CITE>
<PRE>
+    --cmd)
+        shift
+        cmd1=`echo $1 | cut -d' ' -f1`
+        cmd2=`echo $1 | cut -d' ' -f2`
+        if [ X&quot;$cmd1&quot; = X&quot;git&quot; ]; then
+            if [ X&quot;$cmd2&quot; = X&quot;clone&quot; ]; then
+                echo &quot;The \&quot;git clone\&quot; command is handled with the --clone cmdline arg&quot;
</PRE>
</BLOCKQUOTE>
I don't see a need to forbid the usage of &quot;git clone&quot;. Just like we should not forbid &quot;make clean&quot; if we<BR>
allow &quot;-c&quot; again. 
<BLOCKQUOTE TYPE=CITE>
<PRE>
+                echo &quot;&quot;
+                usage
+                exit 1
+            else
+                GITCMD=$1
+            fi
+        elif [ X&quot;$cmd1&quot; = X&quot;make&quot; ]; then
+            MAKECMD=$1
+        else
+            echo &quot;The script can only process 'make' or 'git' commands&quot;
+            echo &quot;It can't process '$cmd1' commands&quot;
+            echo &quot;&quot;
+            usage
+            exit 1
+        fi
         ;
     -f)
         shift
@@ -799,9 +809,6 @@ do
         RESUME=$1
         BUILD_ONE=1
         ;
-    -p)
-        PULL=1
-        ;
     -r)
         shift
         RESUME=$1
</PRE>
</BLOCKQUOTE>
<BR>
A patch series would be appropriate and make it easier to discuss the different logical changes in this patch.
</BODY>
</HTML>