resolve cache experiments.
[git.git] / DoKernelOrg
index 80457f4..16a3468 100755 (executable)
@@ -1,46 +1,81 @@
 #!/bin/sh
 
-J=
-# J='-l 4 -j'
-nodo=echo
+J='-l 4 -j'
+G=/pub/software/scm/git &&
 
 cd $HOME/git &&
-make clean &&
+make clean >/dev/null 2>&1 &&
 git reset --hard &&
-make clean &&
+make clean >/dev/null 2>&1 &&
 git checkout master &&
 git pull . origin &&
-make clean &&
+make clean >/dev/null 2>&1 &&
 
 case "$1" in
 '')
-       make $J install &&
-       make test &&
-       make clean &&
-       git checkout pu &&
-       make $J clean &&
-       make test clean
+       echo "* Building all"
+       branches='naster master maint'
+
+       # Make sure naster is between master and pu if exists
+       if naster=`git rev-parse --verify refs/heads/naster 2>/dev/null`
+       then
+               master=`git rev-parse --verify refs/heads/master` &&
+               pu=`git rev-parse --verify refs/heads/pu` &&
+               MBM=`git merge-base --all $naster $master` &&
+               MBN=`git merge-base --all $naster $pu` &&
+               case ",$MBM,$MBN," in
+               ",$master,$naster,") ;;
+               *)      echo >&2 "naster is not between master and pu"
+                       exit 1 ;;
+               esac
+               # If naster is the same as pu, no point rebuilding pu.
+               case ",$naster,$pu," in
+               ",$pu,$naster,") ;;
+               *) branches="$branches pu" ;;
+               esac
+       fi
+
+       {
+               nstalled=install
+               for branch in $branches
+               do
+                       if git-rev-parse --verify refs/heads/$branch 2>/dev/null
+                       then
+                               echo "** $branch **" &&
+                               git checkout $branch &&
+                               make $J $nstalled &&
+                               make test &&
+                               make clean &&
+                               nstalled=all || exit $?
+                       else
+                               echo
+                               echo "* NO $branch"
+                               echo
+                       fi
+               done
+       } >:all.log 2>&1
        ;;
 maint | master)
-       G=/pub/software/scm/git &&
+       mkdir -p $G/RPMS/i386 $G/RPMS/SRPMS &&
 
+       echo "* Building $1"
        git checkout "$1" &&
-       make rpm &&
-       make $J git &&
-       V=$(./git --version | sed -e 's/git version //') &&
-       $nodo ln git-$V.tar.gz $G/. &&
-       D=`pwd` &&
-       M="git-man-pages-$V" &&
-       rm -rf "$M" &&
-       rm -f "$M".tar.gz &&
-       make man1="$D/$M/man1" man7="$D/$M/man7" -C Documentation install &&
-       $nodo tar zcf "$G/$M".tar.gz "$M" &&
-       rm -fr "$M" &&
+       make rpm >./:rpm.log 2>&1 &&
+       make $J git >>./:rpm.log 2>&1 &&
+       V=`./git --version | sed -e 's/git version //'` &&
+       ln git-$V.tar.gz $G/. &&
+       ln $HOME/rpms/RPMS/i386/git*-$V-* $G/RPMS/i386/. &&
+       ln $HOME/rpms/SRPMS/git-$V-* $G/RPMS/SRPMS/. &&
+       {
+               # I do not know how it exits, and I do not care much.
+               /usr/local/bin/yummy $G/RPMS/i386
+               /usr/local/bin/yummy $G/RPMS/SRPMS
+               :
+       } &&
+       rm -fr ./:rpm.log &&
        make clean &&
 
-       $nodo ln $HOME/rpms/RPMS/i386/git*-$V-* $G/RPMS/i386/. &&
-       $nodo ln $HOME/rpms/SRPMS/git-$V-* $G/RPMS/SRPMS/.
-       ;;
+       : ;;
 esac || exit $?
 
 git checkout master