The well-formed build system.
Drake is a build system written in Python aiming at expressivity, consistency and extensibility.
In a nutshell:
- The declaration of the dependency graph is enforced and separated from the build command, creating a streamlined build process.
- Build files are plain Python, enabling you to stay declarative or leverage the full power of the language if needed.
- Support for new build processes can easily be added, no matter how complex.
- Nested projects are merged in a single graph, enabling rich dependency exploration.
Drake is a one man few people project, initially used as an
internal tool. The core itself is still designed in a clean and
extensible well suited for collaboration. What can be lacking is
language support, which need to be implemented. So far the main
supported languages are:
- C++
- OCaml
- Python
- Go
- GNU autotools projects
Several convenience tools also have good support, such as Mako templating, Debian packaging or Docker.
If you want a streamlined experience with a widely used, well supported build system, then drake might not (yet) be for you.
If existing solution do not satisfy you, and you are ready or need to implement the build steps you need, then drake might be the perfect base to build upon. More so if the technology you use is one of the already well supported one.
Drake requires Python3 along with the following modules:
- greenlet (Micro-threads).
- orderedset (Set that remembers original insertion order).
Drake is bootstrapped. From the root of the repository, simply run:
src/bin/drake --prefix=/usr/local //install
Refer to the quickstart for a fast functional setup of Drake.