Skip to content
mefyl edited this page Aug 25, 2019 · 2 revisions

Drake

The well-formed build system.

pipeline status coverage report

About drake

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.

Project status

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.

Is drake for me ?

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.

Requirements

Drake requires Python3 along with the following modules:

Installation

Drake is bootstrapped. From the root of the repository, simply run:

src/bin/drake --prefix=/usr/local //install

Getting started

The quickstart will give you the minimal operational understanding of Drake.