I'm tired of long build times …
I'm interested in a distributed build system, either at the lower-level of running the equivalent of make, and not knowing anything about anything other than dependency rules, or at the higher level of something like CMake or SCons. The system must (make an effort to) utilize all cores on a group of machines.
Example
Suppose I have the following sources, intermediary targets and final target:
and suppose building each of this takes a significant amount of time, and I have two machines.
The build system will have one machine build b0 and a second machine build b1, then one machine build b2 and another machine build b3 - and it will make sure only the relevant sources are copied/made available on relevant machines as soon as possible, not just after previous intermediaries are done. And it will determine these dependencies by looking at the source file and minimal additional information I provide - similarly to CMake+make.
Requirements
Must:
- not be limited to a single programming language (e.g. not distcc or something living in a distributed JVM).
- not require root access on any of the machines.
- support on x86_64 machines
- support (at least) modern distributions of Linux
- have a command-line interface.
- support on-demand builds.
- be gratis.
Should:
- be sort-of language-agnostic, in the sense that Make or CMake are (so, have mechanisms to handle different languages, recognize depndencies and so on without assuming targets are in any specific language or any language at all).
May or may not:
- require partial or complete uniformity of the system configuration, software-wise.
- integrate with version control
- have a GUI
- be web-accessible