Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


We have to clear the setitimer *before* leaving the try/except clause,
or the timer might fire between the try/except and the try/finally,
leaking a TimeoutError.

Reported-by: Denton Gentry

Git stats


Failed to load latest commit information.
Latest commit message
Commit time

redo - a recursive build system

Smaller, easier, more powerful, and more reliable than make.

This is an implementation of Daniel J. Bernstein's redo build system. He never released his version, so other people have implemented different variants based on his published specification.

This version, sometimes called apenwarr/redo, is probably the most advanced one, including parallel builds, improved logging, extensive automated tests, and helpful debugging features.

To build and test redo, run:

	./do -j10 test

To install it, run something like this:

	DESTDIR= PREFIX=/usr/local ./do -j10 install

  • View the documentation via
  • Visit the source code on github
  • Discussions and support via the mailing list (archives). You can subscribe by sending any email message to (note the plus sign). You can send questions or feedback (with or without subscribing) by sending messages to