BuildAutomation

Joseph Koshy

Build Automation

This wiki page describes a proposed build system for the Elftoolchain project.

Requirements

  1. The tools should work in 'offline' mode, without needing external network access to function.
  2. The tools should be able to work effectively in a resource constrained host environment (such as a laptop computer).
  3. The tools should be able to build and test our code on a variety of (non-native) machine architectures and operating systems.
  4. 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.
  5. The tools should be easy to port to new target OSes.

Sources

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

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.

See Also


Related

Wiki: BuildingFromSource
Wiki: Home
Wiki: PortingNotes