Make apenwarr/redo installable on windows and work with uv tool install
Find a file
Avery Pennarun f6fe00db5c Directory reorg: move code into redo/, generate binaries in bin/.
It's time to start preparing for a version of redo that doesn't work
unless we build it first (because it will rely on C modules, and
eventually be rewritten in C altogether).

To get rolling, remove the old-style symlinks to the main programs, and
rename those programs from redo-*.py to redo/cmd_*.py.  We'll also move
all library functions into the redo/ dir, which is a more python-style
naming convention.

Previously, install.do was generating wrappers for installing in
/usr/bin, which extend sys.path and then import+run the right file.
This made "installed" redo work quite differently from running redo
inside its source tree.  Instead, let's always generate the wrappers in
bin/, and not make anything executable except those wrappers.

Since we're generating wrappers anyway, let's actually auto-detect the
right version of python for the running system; distros can't seem to
agree on what to call their python2 binaries (sigh). We'll fill in the
right #! shebang lines.  Since we're doing that, we can stop using
/usr/bin/env, which will a) make things slightly faster, and b) let us
use "python -S", which tells python not to load a bunch of extra crap
we're not using, thus improving startup times.

Annoyingly, we now have to build redo using minimal/do, then run the
tests using bin/redo.  To make this less annoying, we add a toplevel
./do script that knows the right steps, and a Makefile (whee!) for
people who are used to typing 'make' and 'make test' and 'make clean'.
2018-12-04 02:53:40 -05:00
bin Directory reorg: move code into redo/, generate binaries in bin/. 2018-12-04 02:53:40 -05:00
contrib/bash_completion.d MacOS: "-e filename/." returns true even for non-directories. 2011-03-05 19:03:30 -08:00
docs Directory reorg: move code into redo/, generate binaries in bin/. 2018-12-04 02:53:40 -05:00
minimal minimal/do: use "#!/usr/bin/env sh" instead of "#!/bin/sh" 2018-12-04 02:52:23 -05:00
redo Directory reorg: move code into redo/, generate binaries in bin/. 2018-12-04 02:53:40 -05:00
t Directory reorg: move code into redo/, generate binaries in bin/. 2018-12-04 02:53:40 -05:00
.gitignore Directory reorg: move code into redo/, generate binaries in bin/. 2018-12-04 02:53:40 -05:00
.pylintrc Move into the 21st century by fixing some pylint warnings. 2018-12-03 00:11:27 -05:00
_all.do Directory reorg: move code into redo/, generate binaries in bin/. 2018-12-04 02:53:40 -05:00
all.do Directory reorg: move code into redo/, generate binaries in bin/. 2018-12-04 02:53:40 -05:00
clean.do Directory reorg: move code into redo/, generate binaries in bin/. 2018-12-04 02:53:40 -05:00
do Directory reorg: move code into redo/, generate binaries in bin/. 2018-12-04 02:53:40 -05:00
install.do Directory reorg: move code into redo/, generate binaries in bin/. 2018-12-04 02:53:40 -05:00
LICENSE Change license to Apache 2.0. 2018-11-26 17:04:31 -05:00
Makefile Directory reorg: move code into redo/, generate binaries in bin/. 2018-12-04 02:53:40 -05:00
mkdocs.yml Directory reorg: move code into redo/, generate binaries in bin/. 2018-12-04 02:53:40 -05:00
README.md Directory reorg: move code into redo/, generate binaries in bin/. 2018-12-04 02:53:40 -05:00
test.do Directory reorg: move code into redo/, generate binaries in bin/. 2018-12-04 02:53:40 -05:00

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 support for parallel builds, improved logging, and helpful debugging features.

To build and test redo, run ./do -j10 test. To install it, run DESTDIR=/tmp/testinstall PREFIX=/usr/local ./do -j10 install.


  • View the documentation via readthedocs.org
  • Visit the source code on github
  • Discussions and support via the mailing list. You can subscribe by sending any email message to redo-list+subscribe@googlegroups.com (note the plus sign).