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 CVSROOT=":pserver:anon@cvs.planet-lab.org:/cvs"
13 MAILTO="onelab-build@onelab.eu"
14 TAGSFILE=onelab-tags.mk
17 # plc chroot runs in UTC
18 DATE=$(date -u +'%Y.%m.%d')
20 ### in the root context
21 function do_chroot () {
22 chroot /plc/devel/root su - build <<EOF
23 $CHROOTBINDIR/$COMMAND $@
27 # Notify recipient of failure
30 if [ -n "$MAILTO" ] ; then
31 tail -c 8k ${BUILD}/log-build.txt | mail -s "Failures for ${BUILD}" $MAILTO
38 if [ -n "$MAILTO" ] ; then
39 (echo "http://build.onelab.eu/$DISTRO/$BASE" ; echo "Completed on $(date)" ) | mail -s "Successfull build in ${BUILD}" $MAILTO
44 function create_base () {
46 while ! mkdir ${BASE}${i} 2>/dev/null ; do
47 [ -z ${i} ] && BASE=${BASE}.
49 if [ $i -gt 100 ] ; then
50 echo "$0: Failed to create release directory `pwd`/${BASE}${i}"
57 function use_base () {
58 [ ! -d $BASE ] && mkdir $BASE
59 if [ ! -d $BASE ] ; then
60 echo $COMMAND failed to create base $BASE
69 echo -n "============================== Starting $COMMAND on "
73 cvs -d $CVSROOT co -r $BUILDTAG -d $BASE build
75 # if TAGSTAG specified : update TAGSFILE with this tag
76 if [ -n "$TAGSTAG" ] ; then
78 cvs up -r $TAGSTAG $TAGSFILE
84 echo "Running make IN build $(pwd)"
85 make ${MAKEOPTS[@]} TAGSFILE=${TAGSFILE} PLDISTRO=${DISTRO} ${MAKEVARS[@]} -C $BASE $MAKETARGETS
94 function show_env () {
98 echo MAKEVARS="${MAKEVARS[@]}"
99 echo MAKEOPTS="${MAKEOPTS[@]}"
100 echo BUILDTAG="$BUILDTAG"
101 echo TAGSFILE="$TAGSFILE"
102 echo TAGSTAG="$TAGSTAG"
103 echo "XXXXXXXXXXXXXXXXXXXX Contents of tags definition file $TAGSFILE"
105 echo "XXXXXXXXXXXXXXXXXXXX end tags definition"
109 echo "Usage: $COMMAND [option] make-targets"
110 echo "This is revision $REVISION"
111 echo "Supported options"
112 echo " -b BASE - may include @, then replaced with current date"
113 echo " -u : uses directory given as BASE as is, even if already exists"
114 echo " -e : exits (does nothing) if BASE already exists"
117 echo " -r TAGSTAG - a tag that refers to TAGSFILE - defaults to HEAD"
118 echo " -B BUILDTAG - the tag used to extract build/"
119 echo " -s MAKEVAR=value - spaces in value are not supported"
120 echo " -n passed to make"
129 if [ -d /plc/devel/data ] ; then
134 while getopts "b:ued:t:r:B:s:nvm:c:h" opt ; do
140 t) TAGSFILE=$OPTARG ;;
141 r) TAGSTAG=$OPTARG ;;
142 B) BUILDTAG=$OPTARG ;;
143 s) MAKEVARS=(${MAKEVARS[@]} $OPTARG) ;;
144 n) MAILTO="" ; MAKEOPTS=(${MAKEOPTS[@]} -n) ;;
147 c) CVSROOT=$OPTARG ;;
152 shift $(($OPTIND - 1))
160 [ -z "$BUILDTAG" ] && BUILDTAG=HEAD
162 ### set BASE from DISTRO, if unspecified
163 [ -z "$BASE" ] && BASE=${DISTRO}
164 BASE=$(echo ${BASE} | sed -e "s,@,${DATE},g")
166 if [ -n "$EXITIFOLD" -a -d "$BASE" ] ; then
167 echo "$COMMAND: -e : exits on existing base directory $BASE"
173 if [ -n "$USEOLD" ] ; then
180 build >> ${BUILD}/log-build.txt 2>&1