Byzantine Reality

Searching for Byzantine failures in the world around us

Go + AppScale

I just got back from Google I/O last week and after hearing about the cool new Go support in App Engine, I set out to get Go working over our implementation in of App Engine, namely AppScale. After a bit of hacking I got it working – here’s a screenshot of the go-mandlebrot demo:

Living up to their promise as being super cool and open-source, the Go App Engine code is available for people wanting to hack around with it - of course that’s me! But I wasn’t able to compile the Go App Engine SDK out of the box. Thankfully, it turned out to be pretty straightforward, so here’s what to do if you want to do it (or if you’re a future version of me who has forgotten how to do it and needs to remember). Enjoy!

Compiling the Go App Engine SDK in Three Easy Steps, each with sub-steps:

Step 1: Install Go

Step 1.1: Install Go’s language prerequisites

1
2
sudo apt-get install bison ed gawk gcc libc6-dev make
sudo apt-get install python-setuptools python-dev build-essential

Step 1.2: Install Mercurial (skip if you can run ‘hg’)

1
sudo easy_install mercurial

Step 1.3: Actually install go

1
2
3
hg clone -u release https://go.googlecode.com/hg/ go
cd go/src
./all.bash

Step 1.4: Move Go out of your home directory

1
2
3
4
cd ../..
sudo mv go /usr/local/
export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go

Step 2: Install Go’s Protocol Buffer Bindings

Step 2.1: Install Protocol Buffers

1
2
3
4
5
6
7
8
9
wget http://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz
tar zxvf protobuf-2.4.1.tar.gz
cd protobuf-2.4.1
./configure
make
make check
make install
cd ..
rm -rfv protobuf-2.4.1 protobuf-2.4.1.tar.gz

Step 2.2: Install the Go Protocol Buffer Library and Protocol Compiler Plugin

1
2
3
goinstall goprotobuf.googlecode.com/hg/proto
cd $GOROOT/src/pkg/goprotobuf.googlecode.com/hg/compiler
make install

Step 3: Actually compile the Go App Engine SDK

Step 3.1: Get the Go App Engine SDK Source

1
hg clone https://appengine-go.googlecode.com/hg/ appengine-go

Step 3.2: Compile it

1
2
cd appengine-go
make

And that’s it! It should compile without problems, and now you have the ability to mess around with your very own Go App Engine SDK! I’m not exactly sure what you’d want to do with it, but I sure know what I do! Stay tuned for more updates from the wacky world of the cloud, now with 100% more Go!