# Mark Huang <mlhuang@cs.princeton.edu>
# Copyright (C) 2003-2005 The Trustees of Princeton University
#
-# $Id: build.sh,v 1.34 2006/06/07 21:18:28 mlhuang Exp $
+# $Id: build.sh,v 1.43 2007/02/01 16:03:33 mlhuang Exp $
#
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
# Set defaults
-CVSROOT=:pserver:anon@cvs.planet-lab.org:/cvs
+if [ -f CVS/Root ] ; then
+ CVSROOT=$(cat CVS/Root)
+ TAG=$(cvs status build.sh | sed -ne 's/[[:space:]]*Sticky Tag:[[:space:]]*\([^[:space:]]*\).*/\1/p')
+ if [ "$TAG" = "(none)" ] ; then
+ TAG=HEAD
+ fi
+else
+ CVSROOT=:pserver:anon@cvs.planet-lab.org:/cvs
+ TAG=HEAD
+fi
CVS_RSH=ssh
MODULE=build
-TAG=HEAD
BASE=$PWD
PLDISTRO=planetlab
exec 2>&1
exec &>${BASE}/log
-# Build
-cvs -d ${CVSROOT} checkout -r ${TAG} -d ${BASE} ${MODULE}
-make TAG=${TAG} PLDISTRO=${PLDISTRO} -C ${BASE} && \
-make TAG=${TAG} PLDISTRO=${PLDISTRO} -C ${BASE} install BASE=$BASE BUILDS=$BUILDS
-rc=$?
-
-if [ $rc -ne 0 ] ; then
+failure() {
# Notify recipient of failure
if [ -n "$MAILTO" ] ; then
tail -c 8k ${BASE}/log | mail -s "Failures for ${BASE}" $MAILTO
fi
- exit $rc
-fi
+ exit 1
+}
+
+trap failure ERR INT
+
+set -x
+
+# Checkout build directory
+cvs -d ${CVSROOT} checkout -r ${TAG} -d ${BASE} ${MODULE}
+
+# Build
+${BASE}/make.sh TAG=${TAG} PLDISTRO=${PLDISTRO}
+
+# Install to boot server
+make TAG=${TAG} PLDISTRO=${PLDISTRO} -C ${BASE} install BASE=$BASE BUILDS=$BUILDS
exit 0