3 # use svn propset svn:keywords Revision to enable this
4 REVISION=$(echo '$Revision$' | sed -e 's,\$,,g' -e 's,^\w*:\s,,' )
10 # default values, tunable with command-line options
11 SVNPATH="svn+ssh://build@svn.one-lab.org/svn/build/trunk"
13 MAILTO="onelab-build@one-lab.org"
14 TAGSFILE=onelab-tags.mk
16 TESTBUILDURL="http://onelab-build.inria.fr/"
17 TESTBOX=onelab-test.inria.fr
18 TESTSCRIPT=plctest/TestMain.py
21 # plc chroot runs in UTC
22 DATE=$(date -u +'%Y.%m.%d')
24 ### in the root context
25 function do_chroot () {
26 chroot /plc/devel/root su - build <<EOF
27 $CHROOTBINDIR/$COMMAND $@
31 # Notify recipient of failure
34 if [ -n "$MAILTO" ] ; then
35 tail -c 8k ${BUILD}/log-build.txt | mail -s "Failures for ${BUILD}" $MAILTO
42 if [ -n "$MAILTO" ] ; then
43 (echo "http://build.one-lab.org/$DISTRO/$BASE" ; echo "Completed on $(date)" ) | mail -s "Successfull build in ${BUILD}" $MAILTO
48 function create_base () {
50 while ! mkdir ${BASE}${i} 2>/dev/null ; do
51 [ -z ${i} ] && BASE=${BASE}.
53 if [ $i -gt 100 ] ; then
54 echo "$0: Failed to create release directory `pwd`/${BASE}${i}"
61 function use_base () {
62 [ ! -d $BASE ] && mkdir $BASE
63 if [ ! -d $BASE ] ; then
64 echo $COMMAND failed to create base $BASE
73 echo -n "============================== Starting $COMMAND on "
79 # if TAGSTAG specified : update TAGSFILE with this tag
80 if [ -n "$TAGSTAG" ] ; then
82 svn up -r $TAGSTAG $TAGSFILE
88 echo "Running make IN build $(pwd)"
89 make stage1=true ${MAKEOPTS[@]} TAGSFILE=${TAGSFILE} PLDISTRO=${DISTRO} ${MAKEVARS[@]} -C $BASE $MAKETARGETS
90 make ${MAKEOPTS[@]} TAGSFILE=${TAGSFILE} PLDISTRO=${DISTRO} ${MAKEVARS[@]} -C $BASE $MAKETARGETS
101 buildname=$(dirname $build)
102 distroname=$(dirname $(dirname $build))
104 rpm=$(find . -name myplc\*.rpm )
105 url=${TESTBUILDURL}${distroname}/${buildname}/${rpm}
106 ssh root@${TESTBOX} ${TESTSCRIPT} ${URL}
110 function show_env () {
114 echo SVNPATH=$SVNPATH
115 echo MAKEVARS="${MAKEVARS[@]}"
116 echo MAKEOPTS="${MAKEOPTS[@]}"
117 echo TAGSFILE="$TAGSFILE"
118 echo TAGSTAG="$TAGSTAG"
119 echo "XXXXXXXXXXXXXXXXXXXX Contents of tags definition file $TAGSFILE"
121 echo "XXXXXXXXXXXXXXXXXXXX end tags definition"
125 echo "Usage: $COMMAND [option] make-targets"
126 echo "This is revision $REVISION"
127 echo "Supported options"
128 echo " -b BASE - may include @, then replaced with current date"
129 echo " -u : uses directory given as BASE as is, even if already exists"
130 echo " -e : exits (does nothing) if BASE already exists"
133 echo " -r TAGSTAG - a tag that refers to TAGSFILE - defaults to HEAD"
134 echo " -s MAKEVAR=value - spaces in value are not supported"
135 echo " -n passed to make"
144 if [ -d /plc/devel/data ] ; then
149 while getopts "b:ued:t:r:B:s:nvm:s:h" opt ; do
155 t) TAGSFILE=$OPTARG ;;
156 r) TAGSTAG=$OPTARG ;;
157 s) MAKEVARS=(${MAKEVARS[@]} $OPTARG) ;;
158 n) MAILTO="" ; MAKEOPTS=(${MAKEOPTS[@]} -n) ;;
161 s) SVNPATH=$OPTARG ;;
166 shift $(($OPTIND - 1))
173 ### set BASE from DISTRO, if unspecified
174 [ -z "$BASE" ] && BASE=${DISTRO}
175 BASE=$(echo ${BASE} | sed -e "s,@,${DATE},g")
177 if [ -n "$EXITIFOLD" -a -d "$BASE" ] ; then
178 echo "$COMMAND: -e : exits on existing base directory $BASE"
184 if [ -n "$USEOLD" ] ; then
191 build >> ${BUILD}/log-build.txt 2>&1
193 runtest ${BUILD} >> ${BUILD}/log-build.txt 2>&1