| #!/usr/bin/env bash |
| # Copyright 2010 The Go Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style |
| # license that can be found in the LICENSE file. |
| |
| # This script can be run to create a new builder and then |
| # to keep it running via cron. First, run it by hand until it |
| # starts up without errors and can run the loop. Then, once |
| # you're confident that it works, add this to your crontab: |
| # |
| # */5 * * * * cd $HOME; path/to/buildcron.sh darwin 386 >/dev/null 2>/dev/null |
| |
| if [ $# != 2 ]; then |
| echo 'usage: buildcron.sh goos goarch' 1>&2 |
| exit 2 |
| fi |
| |
| export GOOS=$1 |
| export GOARCH=$2 |
| |
| # Check if we are already running. |
| # First command must not be pipeline, to avoid seeing extra processes in ps. |
| all=$(ps axwwu) |
| pid=$(echo "$all" | grep "buildcron.sh $1 $2" | grep -v "sh -c" | grep -v $$ | awk '{print $2}') |
| if [ "$pid" != "" ]; then |
| #echo already running buildcron.sh $1 $2 |
| #echo "$all" | grep "buildcron.sh $1 $2" | grep -v "sh -c" | grep -v $$ |
| exit 0 |
| fi |
| |
| export BUILDHOST=godashboard.appspot.com |
| export BUILDER=${GOOS}-${GOARCH} |
| export GOROOT=$HOME/go-$BUILDER/go |
| export GOBIN=$HOME/go-$BUILDER/bin |
| |
| if [ ! -f ~/.gobuildkey-$BUILDER ]; then |
| echo "need gobuildkey for $BUILDER in ~/.gobuildkey-$BUILDER" 1>&2 |
| exit 2 |
| fi |
| |
| if [ ! -d $GOROOT ]; then |
| mkdir -p $GOROOT |
| hg clone https://go.googlecode.com/hg/ $GOROOT |
| else |
| cd $GOROOT |
| hg pull -u || exit 1 |
| fi |
| mkdir -p $GOROOT/bin |
| |
| cd $GOROOT/.. |
| cp go/misc/dashboard/{builder.sh,buildcontrol.py,googlecode_upload.py} . |
| chmod a+x builder.sh buildcontrol.py |
| cd go |
| ../buildcontrol.py next $BUILDER |
| cd .. |
| ./builder.sh |
| |
| |