Features
- explicit useful and convenient checks from
apenwarr/redo
:
- check that $1 was not touched during .do execution
- check that stdout and $3 are not written simultaneously
- check that generated target was not modified "externally" outside
the redo, preventing its overwriting, but continuing the build
- targets, dependency information and their directories are explicitly
synced (can be disabled, should work faster)
- file’s change is detected by comparing its size,
ctime
(if
REDO_INODE_NO_TRUST
environment variable is not set) and
BLAKE3 hash
- files creation is
umask
-friendly (unlike mkstemp()
used in redo-c
)
- parallel build with jobs limit, optionally in infinite mode
- coloured messages (can be disabled)
- verbose debug messages, including out-of-date determination, PIDs,
lock and jobserver acquirings/releases
- displaying of each target’s execution time
- each target’s stderr can be prefixed with the PID
- optional statusline with currently running/waiting/done jobs
- target’s stderr can be stored on the disk with
TAI64N timestamp prefixes
for each line. To convert them to localtime you can use either
tai64nlocal
utility from
daemontools, or similar one:
go get go.cypherpunks.ru/tai64n/cmd/tai64nlocal