Skip to content

mefyl/drake

Repository files navigation

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 starting

Refer to the quickstart for a fast functional setup of Drake.

About

The well-formed build system.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages