review logic -- add -B for build-only -- indented with new settings (margin=4)
authorthierry <thierry@41d37cc5-eb28-0410-a9bf-d37491348ade>
Mon, 2 Jul 2007 08:50:49 +0000 (08:50 +0000)
committerthierry <thierry@41d37cc5-eb28-0410-a9bf-d37491348ade>
Mon, 2 Jul 2007 08:50:49 +0000 (08:50 +0000)
scripts/nightly-build.sh

index 264567c..1bb5a5c 100755 (executable)
@@ -24,196 +24,195 @@ DATE=$(date -u +'%Y.%m.%d')
 
 ### in the root context
 function do_chroot () {
-  chroot /plc/devel/root su - build <<EOF
+    chroot /plc/devel/root su - build <<EOF
 $CHROOTBINDIR/$COMMAND $@
 EOF
 }
 
 # Notify recipient of failure or success, manage various stamps 
 function failure() {
-  set -x
-  touch ${BUILD}.broken
-  if [ -n "$MAILTO" ] ; then
-    tail -c 8k ${BUILD}/log-build.txt | mail -s "Failures for ${BUILD}" $MAILTO
-  fi
-  exit 1
+    set -x
+    touch ${BUILD}.broken
+    if [ -n "$MAILTO" ] ; then
+       tail -c 8k ${BUILD}/log-build.txt | mail -s "Failures for ${BUILD}" $MAILTO
+    fi
+    exit 1
 }
 
 function success () {
-  set -x
-  touch ${BUILD}.ok
-  if [ -n "$MAILTO" ] ; then
-    (echo "http://build.one-lab.org/$DISTRO/$BASE" ; echo "Completed on $(date)" ) | mail -s "Successfull build in ${BUILD}" $MAILTO
-  fi
-  cd ${ROOT}
-  rm -f latest
-  ln -s $BASE latest
-  exit 0
+    set -x
+    touch ${BUILD}.ok
+    if [ -n "$MAILTO" ] ; then
+       (echo "http://build.one-lab.org/$DISTRO/$BASE" ; echo "Completed on $(date)" ) | mail -s "Successfull build in ${BUILD}" $MAILTO
+    fi
+    cd ${ROOT}
+    rm -f latest
+    ln -s $BASE latest
+    exit 0
 }
 
 function create_base () {
-  i=
-  while ! mkdir ${BASE}${i} 2>/dev/null ; do
-    [ -z ${i} ] && BASE=${BASE}.
-    i=$((${i}+1))
-    if [ $i -gt 100 ] ; then
-      echo "$0: Failed to create release directory `pwd`/${BASE}${i}"
-      exit 1
-    fi
-  done
-  BASE=${BASE}${i}
+    i=
+    while ! mkdir ${BASE}${i} 2>/dev/null ; do
+       [ -z ${i} ] && BASE=${BASE}.
+       i=$((${i}+1))
+       if [ $i -gt 100 ] ; then
+           echo "$0: Failed to create release directory `pwd`/${BASE}${i}"
+           exit 1
+       fi
+    done
+    BASE=${BASE}${i}
 }
 
 function use_base () {
-  [ ! -d $BASE ] && mkdir $BASE
-  if [ ! -d $BASE ] ; then
-    echo $COMMAND failed to create base $BASE
-    exit 1
-  fi
+    [ ! -d $BASE ] && mkdir $BASE
+    if [ ! -d $BASE ] ; then
+       echo $COMMAND failed to create base $BASE
+       exit 1
+    fi
 }
 
 function build () {
-  set -x
-  set -e
-  trap failure ERR INT
+    set -x
+    set -e
+    trap failure ERR INT
 
-  echo -n "============================== Starting $COMMAND:build on "
-  date
+    echo -n "============================== Starting $COMMAND:build on "
+    date
 
-  cd $ROOT
-  svn co $SVNPATH $BASE
+    cd $ROOT
+    svn co $SVNPATH $BASE
 
   # if TAGSTAG specified : update TAGSFILE with this tag
-  if [ -n "$TAGSTAG" ] ; then
-    cd $BASE
-    svn up -r $TAGSTAG $TAGSFILE
-    cd -
-  fi
+    if [ -n "$TAGSTAG" ] ; then
+       cd $BASE
+       svn up -r $TAGSTAG $TAGSFILE
+       cd -
+    fi
 
-  show_env
+    show_env
     
-  echo "Running make IN build $(pwd)"
-  make stage1=true ${MAKEOPTS[@]} TAGSFILE=${TAGSFILE} PLDISTRO=${DISTRO} ${MAKEVARS[@]} -C $BASE $MAKETARGETS
-  make ${MAKEOPTS[@]} TAGSFILE=${TAGSFILE} PLDISTRO=${DISTRO} ${MAKEVARS[@]} -C $BASE $MAKETARGETS
+    echo "Running make IN build $(pwd)"
+    make stage1=true ${MAKEOPTS[@]} TAGSFILE=${TAGSFILE} PLDISTRO=${DISTRO} ${MAKEVARS[@]} -C $BASE $MAKETARGETS
+    make ${MAKEOPTS[@]} TAGSFILE=${TAGSFILE} PLDISTRO=${DISTRO} ${MAKEVARS[@]} -C $BASE $MAKETARGETS
 }
 
 function runtest () {
-  set -x
-  set -e
-  trap failure ERR INT
-
-  echo -n "============================== Starting $COMMAND:runtest on "
-  date
+    set -x
+    set -e
+    trap failure ERR INT
 
+    echo -n "============================== Starting $COMMAND:runtest on "
+    date
+    
   ### compute URL to the myplc package
-  build=$1; shift
-  buildname=$(basename $build)
-  cd $build
-  rpm=$(find RPMS -name myplc\*.rpm )
-  url=${TESTBUILDURL}${DISTRO}/${buildname}/${rpm}
+    build=$1; shift
+    buildname=$(basename $build)
+    cd $build
+    rpm=$(find RPMS -name myplc\*.rpm )
+    url=${TESTBUILDURL}${DISTRO}/${buildname}/${rpm}
 
   ### checkout the test material
-  svn co ${TESTSVNPATH} plctest
+    svn co ${TESTSVNPATH} plctest
   # compute test directory name on test box
-  testdir=plctest-${buildname}
+    testdir=plctest-${buildname}
   # rsync/push test material onto the test box
-  ssh ${TESTBOXSSH} mkdir -p ${testdir}
-  rsync -a -v plctest/ ${TESTBOXSSH}:${testdir}
+    ssh ${TESTBOXSSH} mkdir -p ${testdir}
+    rsync -a -v plctest/ ${TESTBOXSSH}:${testdir}
   # invoke test on testbox
-  ssh ${TESTBOXSSH} ${testdir}/${TESTSCRIPT} ${url}
-  return $?
+    ssh ${TESTBOXSSH} python -u ${testdir}/${TESTSCRIPT} ${url}
+    if [ "$?" != 0 ] ; then
+       failure
+    fi
 }
 
 function show_env () {
-  echo ROOT=$ROOT
-  echo DISTRO=$DISTRO
-  echo BASE=$BASE
-  echo SVNPATH=$SVNPATH
-  echo MAKEVARS="${MAKEVARS[@]}"
-  echo MAKEOPTS="${MAKEOPTS[@]}"
-  echo TAGSFILE="$TAGSFILE"
-  echo TAGSTAG="$TAGSTAG"
-  echo "XXXXXXXXXXXXXXXXXXXX Contents of tags definition file $TAGSFILE"
-  cat $BASE/$TAGSFILE
-  echo "XXXXXXXXXXXXXXXXXXXX end tags definition"
+    echo ROOT=$ROOT
+    echo DISTRO=$DISTRO
+    echo BASE=$BASE
+    echo SVNPATH=$SVNPATH
+    echo MAKEVARS="${MAKEVARS[@]}"
+    echo MAKEOPTS="${MAKEOPTS[@]}"
+    echo TAGSFILE="$TAGSFILE"
+    echo TAGSTAG="$TAGSTAG"
+    echo "XXXXXXXXXXXXXXXXXXXX Contents of tags definition file $TAGSFILE"
+    cat $BASE/$TAGSFILE
+    echo "XXXXXXXXXXXXXXXXXXXX end tags definition"
 }
 
 function usage () {
-  echo "Usage: $COMMAND [option] make-targets"
-  echo "This is revision $REVISION"
-  echo "Supported options"
-  echo " -b BASE - may include @, then replaced with current date"
-  echo " -u : uses directory given as BASE as is, even if already exists"
-  echo " -e : exits (does nothing) if BASE already exists"
-  echo " -d DISTRO"
-  echo " -t TAGSFILE"
-  echo " -r TAGSTAG - a tag that refers to TAGSFILE - defaults to HEAD"
-  echo " -s MAKEVAR=value - spaces in value are not supported"
-  echo " -n passed to make"
-  echo " -m MAILTO"
-  echo " -s SVNPATH"
-  echo " -T : run test only"
-  exit 1
+    echo "Usage: $COMMAND [option] make-targets"
+    echo "This is revision $REVISION"
+    echo "Supported options"
+    echo " -b BASE - may include @, then replaced with current date"
+    echo " -u : uses directory given as BASE as is, even if already exists"
+    echo " -d DISTRO"
+    echo " -t TAGSFILE"
+    echo " -r TAGSTAG - a tag that refers to TAGSFILE - defaults to HEAD"
+    echo " -s MAKEVAR=value - spaces in value are not supported"
+    echo " -n dry-run : -n passed to make - no mail sent"
+    echo " -m MAILTO"
+    echo " -s SVNPATH"
+    echo " -B : run build only"
+    echo " -T : run test only"
+    exit 1
 }
 
 function main () {
 
-  if [ -d /plc/devel/data ] ; then
-    do_chroot "$@"
-  else
-    MAKEVARS=()
-    MAKEOPTS=()
-    while getopts "b:ued:t:r:B:s:nm:s:Th" opt ; do
-      case $opt in
-        b) BASE=$OPTARG ;;
-        u) USEOLD=true ;;
-       e) EXITIFOLD=true ;;
-        d) DISTRO=$OPTARG ;;
-        t) TAGSFILE=$OPTARG ;;
-       r) TAGSTAG=$OPTARG ;;
-        s) MAKEVARS=(${MAKEVARS[@]} $OPTARG) ;;
-       n) MAILTO="" ; MAKEOPTS=(${MAKEOPTS[@]} -n) ;;
-        m) MAILTO=$OPTARG ;;
-       s) SVNPATH=$OPTARG ;;
-        T) TESTONLY=true ; USEOLD=true ;;
-        h|*) usage ;;
-      esac
-    done
-
-    shift $(($OPTIND - 1))
-    
-    ROOT=$ROOT/$DISTRO
-    cd $ROOT
-
-    MAKETARGETS="$@"
-
-    ### set BASE from DISTRO, if unspecified
-    [ -z "$BASE" ] && BASE=${DISTRO}
-    BASE=$(echo ${BASE} | sed -e "s,@,${DATE},g")
-
-    if [ -n "$EXITIFOLD" -a -d "$BASE" ] ; then
-      echo "$COMMAND: -e : exits on existing base directory $BASE"
-      BUILD=$ROOT/$BASE
-      failure
-      exit 1
-    fi
-    
-    if [ -n "$USEOLD" ] ; then
-      use_base $BASE
+    if [ -d /plc/devel/data ] ; then
+       do_chroot "$@"
     else
-      create_base
-    fi
-    BUILD=$ROOT/$BASE
+       MAKEVARS=()
+       MAKEOPTS=()
+       DO_BUILD=true
+       DO_TEST=true
+       while getopts "b:ud:t:r:s:nm:s:BTh" opt ; do
+           case $opt in
+               b) BASE=$OPTARG ;;
+               u) USEOLD=true ;;
+               d) DISTRO=$OPTARG ;;
+               t) TAGSFILE=$OPTARG ;;
+               r) TAGSTAG=$OPTARG ;;
+               s) MAKEVARS=(${MAKEVARS[@]} $OPTARG) ;;
+               n) MAILTO="" ; MAKEOPTS=(${MAKEOPTS[@]} -n) ;;
+               m) MAILTO=$OPTARG ;;
+               s) SVNPATH=$OPTARG ;;
+               B) DO_TEST= ;;
+               T) DO_BUILD= ; USEOLD=true ;;
+               h|*) usage ;;
+           esac
+       done
+       
+       shift $(($OPTIND - 1))
+       
+       ROOT=$ROOT/$DISTRO
+       cd $ROOT
+       
+       MAKETARGETS="$@"
+       
+    ### set BASE from DISTRO, if unspecified
+       [ -z "$BASE" ] && BASE=${DISTRO}
+       BASE=$(echo ${BASE} | sed -e "s,@,${DATE},g")
     
-    if [ -z "$TESTONLY" ] ; then 
-      build >> ${BUILD}/log-build.txt 2>&1 
+       if [ -n "$USEOLD" ] ; then
+           use_base $BASE
+       else
+           create_base
+       fi
+       BUILD=$ROOT/$BASE
+       
+       if [ -n "$DO_BUILD" ] ; then 
+           build >> ${BUILD}/log-build.txt 2>&1 
+       fi
+       
+       if [ -n "$DO_TEST" ] ; then 
+           runtest ${BUILD} >> ${BUILD}/log-build.txt 2>&1 
+       fi
+       
+       success >> ${BUILD}/log-build.txt 2>&1 
+       
     fi
-
-    runtest ${BUILD} >> ${BUILD}/log-build.txt 2>&1 
-
-    success >> ${BUILD}/log-build.txt 2>&1 
-
-  fi
 }  
 
 ##########