This wiki page describes a proposed build system for the Elftoolchain project.
- The tools should work in 'offline' mode, without needing external network access to function.
- The tools should be able to work effectively in a resource constrained host environment (such as a laptop computer).
- The tools should be able to build and test our code on a variety of (non-native) machine architectures and operating systems.
- The tools should be able to work with a source tree with local changes, in addition to working with the canonical source tree on the master version control system.
- The tools should be easy to port to new target OSes.
Bitten / Buildbot / Hudson
Bitten, Buildbot and Hudson are popular tools used for continuous integration.
Our project has constraints that come in the way of using these tools to automate our builds:
- First, these build tools are not available for some of our target operating systems and machine architectures.
- Second, their design uses a central 'master' controller that build 'slaves' connect to. This 'master' controller typically is the same host serving the SVN repository. In our setup, we do not have a way to run such a controller on SF.Net's SVN servers.
- Third, since we would need to using virtual machines to be able to build and test on a range of OSes and architectures, we would need to additionally manage the virtual machines used for a build run.
crosstool-NG is a utility for building toolchains, offering a user-friendly way to configure and build a GNU cross toolchain, using a
menuconfig-style configuration interface.
However, it does not address the issue that we face: that of invoking and managing builds on virtual machines running non-native operating systems.