79825b645d0c792ff81334de5339dee2806ff30d
[build.git] / devbox.sh
1 #!/bin/bash
2 #
3 # PlanetLab devbox release script. Intended to be used by scripts and
4 # crontabs to build nightly releases (default).
5 #
6 # $Id: devbox.sh,v 1.4 2005/09/21 18:57:53 mef Exp $
7 #
8
9 # Set defaults
10 CVSROOT=:pserver:anon@cvs.planet-lab.org:/cvs
11 CVS_RSH=ssh
12 MODULE=build
13 TAG=HEAD
14 BASE=$PWD
15
16 # Export certain variables
17 export CVS_RSH
18
19 BASE=
20 # Get options
21 while getopts "d:r:m:b:x:h" opt ; do
22     case $opt in
23         d)
24             CVSROOT=$OPTARG
25             ;;
26         r)
27             TAG=$OPTARG
28             ;;
29         m)
30             MAILTO=$OPTARG
31             ;;
32         b)
33             BASE=$OPTARG
34             ;;
35         x)
36             ;;
37         h|*)
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)"
43             exit 1
44             ;;
45     esac
46 done
47
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; }
51         mkdir -p $BASE
52 fi
53 cd $BASE || exit $?
54
55 DAT=`date +%Y.%m.%d`
56 # Redirect output from here
57 exec 2>&1
58 exec &>${BASE}/${DAT}/devbox.log
59
60 # XXX For debugging
61 set -x
62
63 # Upload packages to boot server
64 SERVER=build@boot.planet-lab.org
65 REPOSITORY=/var/www/html/install-rpms
66
67 for RELEASE in devbox alpha-devbox beta-devbox ; do
68     TMPDEVBOXRELEASE=planetlab-${RELEASE}_${DAT}_tmp
69     DEVBOXRELEASE=planetlab-${RELEASE}
70
71     ssh $SERVER mkdir -p ${REPOSITORY}/${TMPDEVBOXRELEASE}
72     if [ $? -ne 0 ] ; then
73         echo "ERROR: mkdir -p ${REPOSITORY}/${TMPDEVBOXRELEASE} failed"
74         exit 1 
75     fi
76     BUILT=$(echo $DEVBOXRELEASE | sed "s,\-devbox,,")
77     ssh $SERVER ln -nf ${REPOSITORY}/$BUILT/*.rpm ${REPOSITORY}/${TMPDEVBOXRELEASE}
78
79     mkdir -p ${BASE}/${DAT}/${DEVBOXRELEASE}
80     install -D -m 644 ${DAT}/groups/${RELEASE}_yumgroups.xml ${BASE}/${DAT}/${DEVBOXRELEASE}/yumgroups.xml
81     scp ${BASE}/${DAT}/${DEVBOXRELEASE}/yumgroups.xml ${SERVER}:${REPOSITORY}/${TMPDEVBOXRELEASE}/yumgroups.xml
82
83     ssh $SERVER rm -rf ${REPOSITORY}/${DEVBOXRELEASE}-old
84     ssh $SERVER mv ${REPOSITORY}/${DEVBOXRELEASE} ${REPOSITORY}/${DEVBOXRELEASE}-old
85     ssh $SERVER mv ${REPOSITORY}/${TMPDEVBOXRELEASE} ${REPOSITORY}/${DEVBOXRELEASE}
86     ssh $SERVER rm -rf ${REPOSITORY}/${DEVBOXRELEASE}-old
87
88     ssh $SERVER yum-arch ${REPOSITORY}/${DEVBOXRELEASE} >/dev/null
89     ssh $SERVER createrepo -g yumgroups.xml ${REPOSITORY}/${DEVBOXRELEASE} >/dev/null
90 done
91
92 cd / || exit $?
93 #rm -rf $BASE
94
95 exit 0