Build-tool is a script that helps with maintaining develop environments if complex dependencies have to be met. It makes it possible to run the builds in a reproducible way.
A build is described by a recipe. A recipe is the collection of everything needed to perform a build. It controls every aspect of the build by separating the users environment from the actual build environment as much as possible.
The tool itself does not bring any recipes. Recipes are maintained independently.
Why another build tool
Before we delve into the details i want to lay down the reason why i started a new script instead of working on kdesvn-build (these days known as kdesrc-build). First and foremost one of the main design choices of kdesrc-build is the one script rule. It is one big script by design. To make it easier to distribute it. My requirements clearly showed we would end up with one freaking big script.
The requirements I have are:
- Support different version control systems (svn, git, git-svn, mercurial). Make it easy to add others
- Support different build systems (cmake, autoconf, custom). Make it easy to add others.
- Support recipes. It should be able to build more than just kde trunk.
- Make it possible to control the complete build environment from the recipe file. It should be easy to grasp from the file how to reproduce the build manually. I want to document the build that way.
- Make it possible to plug in additional custom commands. Not yet.
- Make the build environment accessible with the shell.