Explaining our build system – Part I

We recently got several questions on how our build system for SmartInspect works and which products we are using. I decided to explain it here so I need to tell it only once :).

It might be uncommon but we use a home-grown build solution based on cygwin (in case you don’t know, cygwin provides a Linux-like environment on Windows machines). We created a lot of Makefiles and scripts to automate tasks like checking out the source tree, incrementing version numbers, compiling our software and creating documentation or installation programs. All you need to do is to type `make’ in the top directory, press enter, wait 20 minutes and you have a bunch of fresh setup files.

We use cygwin as build platform instead of using tools like FinalBuilder, because we have quite a lot of experience with the unix tool suite and simply love its flexibility and power. Be it replacing a version string in a file or ensuring that all source files use the same end-of-line characters, you normally end up using just a few commands.

For the hardware, we decided not to go with a dedicated machine for the build system. We use a Virtual Machine instead. This has the advantage that every developer can do a build where and when he wants to. Furthermore, we can create simple copies or so called snapshots to be able to restore a working system if something goes wrong while installing an update or service pack. This would take a lot more effort with a physical machine.

Oh, and just in case you are asking, we use Subversion and TortoiseSVN for source control. We switched from CVS in early 2004 and never looked back since Subversion is so much nicer. As bugtracker we currently use an in-house Desktop application with a simple database backend. We might switch to something more powerful and comfortable in the future.