3 # PlanetLab devbox release script. Intended to be used by scripts and
4 # crontabs to build nightly releases (default).
6 # $Id: devbox.sh,v 1.2 2005/06/06 21:53:37 mlhuang Exp $
10 CVSROOT=:pserver:anon@cvs.planet-lab.org:/cvs
16 # Export certain variables
21 while getopts "d:r:m:b:x:h" opt ; do
38 echo "usage: `basename $0` [OPTION]..."
39 echo " -d directory CVS repository root (default $CVSROOT)"
40 echo " -r revision CVS revision to checkout (default $TAG)"
41 echo " -m address Notify recipient of failures (default: none)"
42 echo " -b base Run operations in specified base directory (default $BASE)"
48 # Base operations in specified directory
49 if [ -z "$BASE" ]; then
50 BASE=`mktemp -d /tmp/DEVBOX.XXXXXX` || { echo $"could not make temp file" >& 2; exit 1; }
57 # Redirect output from here
59 exec &>${BASE}/${DAT}/devbox.log
64 # Upload packages to boot server
65 SERVER=build@boot.planet-lab.org
66 REPOSITORY=/var/www/html/install-rpms
68 for RELEASE in devbox alpha-devbox beta-devbox ; do
69 TMPDEVBOXRELEASE=planetlab-${RELEASE}_${DAT}_tmp
70 DEVBOXRELEASE=planetlab-${RELEASE}
72 ssh $SERVER mkdir -p ${REPOSITORY}/${TMPDEVBOXRELEASE}
73 if [ $? -ne 0 ] ; then
74 echo "ERROR: mkdir -p ${REPOSITORY}/${TMPDEVBOXRELEASE} failed"
77 BUILT=$(echo $DEVBOXRELEASE | sed "s,\-devbox,,")
78 ssh $SERVER ln -nf ${REPOSITORY}/$BUILT/*.rpm ${REPOSITORY}/${TMPDEVBOXRELEASE}
80 mkdir -p ${BASE}/${DAT}/${DEVBOXRELEASE}
81 install -D -m 644 ${DAT}/groups/${RELEASE}_yumgroups.xml ${BASE}/${DAT}/${DEVBOXRELEASE}/yumgroups.xml
82 scp ${BASE}/${DAT}/${DEVBOXRELEASE}/yumgroups.xml ${SERVER}:${REPOSITORY}/${TMPDEVBOXRELEASE}/yumgroups.xml
84 ssh $SERVER yum-arch ${REPOSITORY}/${TMPDEVBOXRELEASE} >/dev/null
86 ssh $SERVER mv ${REPOSITORY}/${DEVBOXRELEASE} ${REPOSITORY}/${DEVBOXRELEASE}-old
87 ssh $SERVER mv ${REPOSITORY}/${TMPDEVBOXRELEASE} ${REPOSITORY}/${DEVBOXRELEASE}
88 if [ $? -ne 0 ] ; then
89 ssh $SERVER mv ${REPOSITORY}/${DEVBOXRELEASE}-old ${REPOSITORY}/${DEVBOXRELEASE}
91 ssh $SERVER rm -rf ${REPOSITORY}/${DEVBOXRELEASE}-old