// Copyright 2009 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.

The files in this directory constitute the continuous builder:

godashboard/: An AppEngine that acts as a server
builder.sh, buildcontrol.sh: used by the build slaves
buildcron.sh: a build loop that can be run regularly via cron

If you wish to run a Go builder, please email golang-dev@googlegroups.com


To set up a Go builder automatically, run buildcron.sh
(you might want to read it first to see what it does).

To set up a Go builder by hand:

* (Optional) create a new user 'gobuild'
* Edit ~gobuild/.bash_profile and add the following:

export GOROOT=/gobuild/go
export GOARCH=XXX
export GOOS=XXX
export GOBIN=/gobuild/bin
export PATH=$PATH:/gobuild/bin
export BUILDER=XXX
export BUILDHOST=godashboard.appspot.com

* Write the key ~gobuild/.gobuildkey (you need to get it from someone who knows
                                      the key)

* sudo apt-get install bison gcc libc6-dev ed make
* cd ~gobuild
* mkdir bin
* hg clone https://go.googlecode.com/hg/ $GOROOT
* copy builder.sh and buildcontrol.py to ~gobuild
* chmod a+x ./builder.sh ./buildcontrol.py
* cd go
* ../buildcontrol.py next $BUILDER  (just to check that things are ok)
* cd ..
* ./builder.sh (You probably want to run this in a screen long term.)
