CHROOTBINDIR=/root/bin
# default values, tunable with command-line options
-CVSROOT=":pserver:anon@cvs.planet-lab.org:/cvs"
+SVNPATH="svn+ssh://build@svn.one-lab.org/svn/build/trunk"
DISTRO=onelab
MAILTO="onelab-build@one-lab.org"
TAGSFILE=onelab-tags.mk
+TESTBUILDURL="http://onelab-build.inria.fr/"
+TESTBOX=onelab-test.inria.fr
+TESTSCRIPT=plctest/TestMain.py
+
####################
# plc chroot runs in UTC
DATE=$(date -u +'%Y.%m.%d')
# Notify recipient of failure
function failure() {
+ touch ${BUILD}.broken
if [ -n "$MAILTO" ] ; then
tail -c 8k ${BUILD}/log-build.txt | mail -s "Failures for ${BUILD}" $MAILTO
fi
}
function success () {
- touch ${BUILD}/log-success.stamp
+ touch ${BUILD}.ok
if [ -n "$MAILTO" ] ; then
- date | mail -s "Successfull build in ${BUILD}" $MAILTO
+ (echo "http://build.one-lab.org/$DISTRO/$BASE" ; echo "Completed on $(date)" ) | mail -s "Successfull build in ${BUILD}" $MAILTO
fi
exit 0
}
date
cd $ROOT
- cvs -d $CVSROOT co -d $BASE build
+ svn co $SVNPATH $BASE
# if TAGSTAG specified : update TAGSFILE with this tag
if [ -n "$TAGSTAG" ] ; then
cd $BASE
- cvs up -r $TAGSTAG $TAGSFILE
+ svn up -r $TAGSTAG $TAGSFILE
cd -
fi
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
# only if successful
rm -f latest
ln -s $BASE latest
- success
+}
+
+function runtest () {
+ set -x
+ build=$1; shift
+ buildname=$(basename $build)
+ distroname=$(basename $(dirname $build))
+ cd build
+ rpm=$(find . -name myplc\*.rpm )
+ url=${TESTBUILDURL}${distroname}/${buildname}/${rpm}
+ ssh root@${TESTBOX} ${TESTSCRIPT} ${url}
+ return $?
}
function show_env () {
echo ROOT=$ROOT
- echo BASE=$BASE
echo DISTRO=$DISTRO
+ echo BASE=$BASE
+ echo SVNPATH=$SVNPATH
echo MAKEVARS="${MAKEVARS[@]}"
echo MAKEOPTS="${MAKEOPTS[@]}"
- echo TAGSFILE=$TAGSFILE
- echo "XXXXXXXXXXXXXXXXXXXX Contents of $TAGSFILE"
+ echo TAGSFILE="$TAGSFILE"
+ echo TAGSTAG="$TAGSTAG"
+ echo "XXXXXXXXXXXXXXXXXXXX Contents of tags definition file $TAGSFILE"
cat $BASE/$TAGSFILE
- echo "XXXXXXXXXXXXXXXXXXXX end contents"
+ echo "XXXXXXXXXXXXXXXXXXXX end tags definition"
}
function usage () {
echo "Usage: $COMMAND [option] make-targets"
echo "This is revision $REVISION"
echo "Supported options"
- echo " -v verbose"
- echo " -b BASE - may include %d then is replaced with current date"
+ 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 " -c CVSROOT"
echo " -d DISTRO"
echo " -t TAGSFILE"
echo " -r TAGSTAG - a tag that refers to TAGSFILE - defaults to HEAD"
- echo " -m MAILTO"
echo " -s MAKEVAR=value - spaces in value are not supported"
echo " -n passed to make"
+ echo " -v verbose"
+ echo " -m MAILTO"
+ echo " -s SVNPATH"
+ echo " -T : run test only"
exit 1
}
else
MAKEVARS=()
MAKEOPTS=()
- while getopts "vc:t:r:m:d:b:s:uenh" opt ; do
+ while getopts "b:ued:t:r:B:s:nvm:s:Th" opt ; do
case $opt in
- v) set -x ;;
- c) CVSROOT=$OPTARG ;;
- t) TAGSFILE=$OPTARG ;;
- r) TAGSTAG=$OPTARG ;;
- m) MAILTO=$OPTARG ;;
- d) DISTRO=$OPTARG ;;
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) ;;
+ v) set -x ;;
+ m) MAILTO=$OPTARG ;;
+ s) SVNPATH=$OPTARG ;;
+ T) TESTONLY=true ; USEOLD=true ;;
h|*) usage ;;
esac
done
- ROOT=$ROOT/$DISTRO
-
shift $(($OPTIND - 1))
+ ROOT=$ROOT/$DISTRO
+ cd $ROOT
+
MAKETARGETS="$@"
- cd $ROOT
### set BASE from DISTRO, if unspecified
[ -z "$BASE" ] && BASE=${DISTRO}
-
- BASE=$(echo ${BASE} | sed -e "s,%d,${DATE},g")
+ BASE=$(echo ${BASE} | sed -e "s,@,${DATE},g")
if [ -n "$EXITIFOLD" -a -d "$BASE" ] ; then
echo "$COMMAND: -e : exits on existing base directory $BASE"
fi
BUILD=$ROOT/$BASE
- build >> ${BUILD}/log-build.txt 2>&1
+ if [ -z "$TESTONLY" ] ; then
+ build >> ${BUILD}/log-build.txt 2>&1
+ fi
+
+ runtest ${BUILD} >> ${BUILD}/log-build.txt 2>&1
+
+ success
+
fi
}