Make apenwarr/redo installable on windows and work with uv tool install
redo now saves the stderr from every .do script, for every target, into a file in the .redo directory. That means you can look up the logs from the most recent build of any target using the new redo-log command, for example: redo-log -r all The default is to show logs non-recursively, that is, it'll show when a target does redo-ifchange on another target, but it won't recurse into the logs for the latter target. With -r (recursive), it does. With -u (unchanged), it does even if redo-ifchange discovered that the target was already up-to-date; in that case, it prints the logs of the *most recent* time the target was generated. With --no-details, redo-log will show only the 'redo' lines, not the other log messages. For very noisy build systems (like recursing into a 'make' instance) this can be helpful to get an overview of what happened, without all the cruft. You can use the -f (follow) option like tail -f, to follow a build that's currently in progress until it finishes. redo itself spins up a copy of redo-log -r -f while it runs, so you can see what's going on. Still broken in this version: - No man page or new tests yet. - ANSI colors don't yet work (unless you use --raw-logs, which gives the old-style behaviour). - You can't redirect the output of a sub-redo to a file or a pipe right now, because redo-log is eating it. - The regex for matching 'redo' lines in the log is very gross. Instead, we should put the raw log files in a more machine-parseable format, and redo-log should turn that into human-readable format. - redo-log tries to "linearize" the logs, which makes them comprehensible even for a large parallel build. It recursively shows log messages for each target in depth-first tree order (by tracing into a new target every time it sees a 'redo' line). This works really well, but in some specific cases, the "topmost" redo instance can get stuck waiting for a jwack token, which makes it look like the whole build has stalled, when really redo-log is just waiting a long time for a particular subprocess to be able to continue. We'll need to add a specific workaround for that. |
||
|---|---|---|
| contrib/bash_completion.d | ||
| Documentation | ||
| minimal | ||
| t | ||
| version | ||
| .gitignore | ||
| _all.do | ||
| all.do | ||
| atoi.py | ||
| builder.py | ||
| clean.do | ||
| deps.py | ||
| helpers.py | ||
| install.do | ||
| jwack.py | ||
| LICENSE | ||
| log.py | ||
| Makefile | ||
| mkdocs.yml | ||
| options.py | ||
| paths.py | ||
| README.md | ||
| redo | ||
| redo-always | ||
| redo-always.py | ||
| redo-ifchange | ||
| redo-ifchange.py | ||
| redo-ifcreate | ||
| redo-ifcreate.py | ||
| redo-log | ||
| redo-log.py | ||
| redo-ood | ||
| redo-ood.py | ||
| redo-sh.do | ||
| redo-sources | ||
| redo-sources.py | ||
| redo-stamp | ||
| redo-stamp.py | ||
| redo-targets | ||
| redo-targets.py | ||
| redo-unlocked | ||
| redo-unlocked.py | ||
| redo-whichdo | ||
| redo-whichdo.py | ||
| redo.py | ||
| state.py | ||
| test.do | ||
| vars.py | ||
| vars_init.py | ||
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).