(This is without considering the unit test run times :-/). Ryan isn?t
joking when he says that the setup and upkeep is not trivial!
Maintenance is a real bitch.
The setup we have for SDL looks like this:
The master process runs on libsdl.org, the slave processes all run on a
machine in my office.
This office machine is massive: 12 CPU cores (x2 for hyperthreads), 96
gigabytes of RAM. There’s a 400gb SSD drive dedicated to VMware
Workstation instances: WinXP/64bit, Mac OS X 10.9, Linux/x86,
Linux/amd64, Haiku, OpenBSD, FreeBSD, and Debian/kFreeBSD.
(the host machine is Ubuntu 14.04/amd64, running ZFS-on-Linux. All the
virtual machines are in a zpool that had gzip-9 compression enabled
during setup to make the most of those 400gb, and are using lzjb
compression now, so more CPU can go to the actual building effort.)
Various guests build more than one buildbot target. The Mac VM does Mac
and iOS and static analysis, the Linux/amd64 does Linux and Android and
the 32-bit one does Linux and Raspberry Pi, etc. Except places where
there is no option but cross-compiling (iOS, Emscripten, Native Client,
etc), we try to build on the real OS. Several of these could probably be
consolidated to a Linux instance–lord knows it would be faster than
Cygwin on Windows–but using the actual target seems more likely to
catch bugs.
All the guests can be ssh’d into, and VMware has a built-in VNC server
for the guests if you need a real desktop, if you aren’t literally
sitting in front of the machine.
Mac OS X isn’t supported on VMware Workstation, but the code it shares
with VMware Fusion for Mac guest support still exists, so we use a
hacked build of Workstation that unlocks it. Hey, I’ve been paying the
licensing cost on VMware every year since the 1990’s. I do what I want.
–ryan.