remove extra space in REVISION
[infrastructure.git] / scripts / nightly-build.sh
index 6c74036..c281cb7 100755 (executable)
@@ -1,5 +1,8 @@
 #!/bin/bash
 
+# use svn propset svn:keywords Revision to enable this
+REVISION=$(echo '$Revision$' | sed -e 's,\$,,g' -e 's,^\w*:\s,,' )
+
 COMMAND=$(basename $0)
 ROOT=/build
 CVSROOT=":pserver:anon@cvs.planet-lab.org:/cvs"
@@ -11,16 +14,6 @@ CHROOTDIR=/root/bin
 # plc chroot runs in UTC
 date=$(date -u +'%Y.%m.%d')
 
-function usage () {
-  echo "$COMMAND [option]"
-  echo " -d CVSROOT"
-  echo " -r TAG"
-  echo " -m MAILTO"
-  echo " -f DISTRO"
-  echo " -b BASE"
-  exit 1
-}
-
 ### in the root context
 function do_chroot () {
   chroot /plc/devel/root su - build <<EOF
@@ -40,7 +33,7 @@ function success () {
   if [ -n "$MAILTO" ] ; then
     date | mail -s "Successfull build in ${BUILD}" $MAILTO
   fi
-  exit 1
+  exit 0
 }
 
 function create_base () {
@@ -65,36 +58,6 @@ function use_base () {
   fi
 }
 
-function manage_distro () {
-
-#  DISTROFILE=$BUILD/$DISTRO.mk
-#
-#  if [ -f $DISTROFILE ] ; then
-#    echo Using $DISTROFILE
-#  elif [ -f $ROOT/$DISTRO.mk ] ; then
-#    echo Using $ROOT/$DISTRO.mk
-#    ln -s $ROOT/$DISTRO.mk $DISTROFILE
-#  else
-#    echo Could not locate $DISTRO.mk
-#    exit 1
-#  fi
-#
-  if "$DISTRO" != planetlab; then
-    DISTROFILE=$BUILD/$DISTRO.xml
-
-    if [ -f $DISTROFILE ] ; then
-      echo Using $DISTROFILE
-    elif [ -f $ROOT/$DISTRO.xml ] ; then
-      echo Using $ROOT/$DISTRO.xml
-      ln -s $ROOT/$DISTRO.xml $DISTROFILE
-    else
-      echo Could not locate $DISTRO.xml
-      exit 1
-    fi
-  fi
-
-}
-
 function build () {
   trap failure ERR INT
   set -x
@@ -107,10 +70,8 @@ function build () {
   cd $ROOT
   cvs -d $CVSROOT co -d $BASE build
 
-  manage_distro
-
   echo "Running make IN build $(pwd)"
-  make TAG=${TAG} PLDISTRO=${DISTRO} -C $BASE
+  make ${MAKEOPTS[@]} TAG=${TAG} PLDISTRO=${DISTRO} ${MAKEVARS[@]} -C $BASE $MAKETARGETS
 
   # only if successful
   rm -f latest
@@ -126,22 +87,44 @@ function show_env () {
   echo DISTRO=$DISTRO
 }
 
+function usage () {
+  echo "Usage: $COMMAND [option] make-targets"
+  echo "This is revision $REVISION"
+  echo "Supported options"
+  echo " -v verbose"
+  echo " -d CVSROOT"
+  echo " -r TAG"
+  echo " -m MAILTO"
+  echo " -f DISTRO"
+  echo " -b BASE"
+  echo " -s MAKEVAR=value - spaces in value are not supported"
+  echo " -n passed to make"
+  exit 1
+}
+
 function main () {
 
   if [ -d /plc/devel/data ] ; then
     do_chroot "$@"
   else
-    while getopts "d:r:m:f:b:h" opt ; do
+    MAKEVARS=()
+    MAKEOPTS=()
+    while getopts "vd:r:m:f:b:s:nh" opt ; do
       case $opt in
+       v) set -x ;;
        d) CVSROOT=$OPTARG ;;
         r) TAG=$OPTARG ;;
         m) MAILTO=$OPTARG ;;
         f) DISTRO=$OPTARG ;;
         b) BASE=$OPTARG ;;
-        h) usage ;;
+        s) MAKEVARS=(${MAKEVARS[@]} $OPTARG) ;;
+       n) MAILTO="" ; MAKEOPTS=(${MAKEOPTS[@]} -n) ;;
+        h|*) usage ;;
       esac
     done
     shift $(($OPTIND - 1))
+    
+    MAKETARGETS="$@"
 
     cd $ROOT
     ### determine BASE