Make apenwarr/redo installable on windows and work with uv tool install
Find a file
Avery Pennarun 7165b342f5 redo-log: fix stdout vs stderr; don't recapture if .do script redirects stderr.
redo-log should log to stdout, because when you ask for the specific
logs from a run, the logs are the output you requested.  redo-log's
stderr should be about any errors retrieving that output.

On the other hand, when you run redo, the logs are literally the stderr
of the build steps, which are incidental to the main job (building
things).  So that should be send to stderr.  Previously, we were
sending to stderr when --no-log, but stdout when --log, which is
totally wrong.

Also, adding redo-log had the unexpected result that if a .do script
redirected the stderr of a sub-redo or redo-ifchange to a file or pipe,
the output would be eaten by redo-log instead of the intended output.
So a test runner like this:

	self.test:
		redo self.runtest 2>&1 | grep ERROR

would not work; the self.runtest output would be sent to redo's log
buffer (and from there, probably printed to the toplevel redo's stderr)
rather than passed along to grep.
2018-11-19 16:27:41 -05:00
contrib/bash_completion.d MacOS: "-e filename/." returns true even for non-directories. 2011-03-05 19:03:30 -08:00
Documentation Refactor the huge README.md into the more structured mkdocs. 2018-11-16 05:22:09 -05:00
minimal minimal/do: didn't work correctly with multi-level auto dir creation. 2018-11-02 04:27:28 -04:00
t Replaced all instances of 'python' with 'python2' 2018-11-14 10:52:09 -08:00
version Raw logs contain @@REDO lines instead of formatted data. 2018-11-17 10:27:44 -05:00
.gitignore Generate a basic documentation website with the mkdocs toolkit. 2018-11-16 00:50:18 -05:00
_all.do Change definitions of $1,$2,$3 to match djb's redo. 2011-12-31 02:49:39 -05:00
all.do Automatically select a good shell instead of relying on /bin/sh. 2010-12-21 04:44:39 -08:00
atoi.py Move atoi() into atoi.py and add a new debug2() debug level. 2010-11-16 04:13:17 -08:00
builder.py redo-log: fix stdout vs stderr; don't recapture if .do script redirects stderr. 2018-11-19 16:27:41 -05:00
clean.do .gitignore and clean.do: add minimal/.do* 2018-11-16 00:32:07 -05:00
deps.py Raw logs contain @@REDO lines instead of formatted data. 2018-11-17 10:27:44 -05:00
helpers.py New redo-sources and redo-targets commands. 2010-12-19 03:50:38 -08:00
install.do Replaced all instances of 'python' with 'python2' 2018-11-14 10:52:09 -08:00
jwack.py redo-log: prioritize the "foreground" process. 2018-11-17 11:13:20 -05:00
LICENSE Add README.md and LICENSE. 2010-11-17 00:53:58 -08:00
logs.py Add --color and --no-color options. 2018-11-19 11:22:53 -05:00
Makefile Makefile: don't try to 'redo Makefile'. 2010-12-11 23:41:40 -08:00
mkdocs.yml Refactor the huge README.md into the more structured mkdocs. 2018-11-16 05:22:09 -05:00
options.py options.py: typo in comment 2018-11-13 07:00:11 -05:00
paths.py Raw logs contain @@REDO lines instead of formatted data. 2018-11-17 10:27:44 -05:00
README.md Refactor the huge README.md into the more structured mkdocs. 2018-11-16 05:22:09 -05:00
redo Extremely basic first crack at implementing djb's redo. 2010-11-12 05:25:03 -08:00
redo-always Add a redo-always command: it adds an "always dirty" dependency to your target. 2010-12-11 07:02:45 -08:00
redo-always.py Raw logs contain @@REDO lines instead of formatted data. 2018-11-17 10:27:44 -05:00
redo-ifchange Move 'redo --ifchange' into 'redo-ifchange' to match djb's style. 2010-11-13 00:47:49 -08:00
redo-ifchange.py Add --color and --no-color options. 2018-11-19 11:22:53 -05:00
redo-ifcreate Add redo-ifcreate to match djb's design. 2010-11-13 01:10:43 -08:00
redo-ifcreate.py Raw logs contain @@REDO lines instead of formatted data. 2018-11-17 10:27:44 -05:00
redo-log redo-log: capture and linearize the output of redo builds. 2018-11-17 10:27:43 -05:00
redo-log.py redo-log: don't show status line until >1.0 seconds after starting. 2018-11-19 15:42:05 -05:00
redo-ood Add a new redo-ood command. 2010-12-19 03:50:38 -08:00
redo-ood.py Raw logs contain @@REDO lines instead of formatted data. 2018-11-17 10:27:44 -05:00
redo-sh.do redo-sh: downgrade failures that affected dash; add a bash warning. 2018-10-12 05:18:25 -04:00
redo-sources New redo-sources and redo-targets commands. 2010-12-19 03:50:38 -08:00
redo-sources.py Raw logs contain @@REDO lines instead of formatted data. 2018-11-17 10:27:44 -05:00
redo-stamp Half-support for using file checksums instead of stamps. 2010-12-11 05:54:37 -08:00
redo-stamp.py Raw logs contain @@REDO lines instead of formatted data. 2018-11-17 10:27:44 -05:00
redo-targets New redo-sources and redo-targets commands. 2010-12-19 03:50:38 -08:00
redo-targets.py Raw logs contain @@REDO lines instead of formatted data. 2018-11-17 10:27:44 -05:00
redo-unlocked Rename redo-oob to redo-unlocked, to more accurately represent its use. 2010-12-19 01:20:13 -08:00
redo-unlocked.py Raw logs contain @@REDO lines instead of formatted data. 2018-11-17 10:27:44 -05:00
redo-whichdo redo-whichdo: a command that explains the .do search path for a target. 2018-10-04 20:20:53 -04:00
redo-whichdo.py Raw logs contain @@REDO lines instead of formatted data. 2018-11-17 10:27:44 -05:00
redo.py Add --color and --no-color options. 2018-11-19 11:22:53 -05:00
state.py redo-log: prioritize the "foreground" process. 2018-11-17 11:13:20 -05:00
test.do minimal/do: add redo-whichdo support and internal unit tests. 2018-11-02 02:20:52 -04:00
vars.py redo-log: fix stdout vs stderr; don't recapture if .do script redirects stderr. 2018-11-19 16:27:41 -05:00
vars_init.py redo-log: capture and linearize the output of redo builds. 2018-11-17 10:27:43 -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.


  • 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).