News ¶
Release 2.6.4 ¶
- Fix possible NFS locking issue.
- Updated dependant libraries.
Release 2.6.3 ¶
- Updated dependant libraries. Should fix workability on modern OpenBSD.
Release 2.6.2 ¶
- Integration tests do not depend on non-portable
stat
command.
Release 2.6.1 ¶
- Integration tests do not depend on Python or Git.
Release 2.6.0 ¶
- Omit possible obtrusive error of non-existent .dep file
opening of the failed target.
Release 2.5.0 ¶
- Prevent rare race in the code, where externally modified target may
panic the program.
Release 2.4.0 ¶
- Continue regression fixing of
redo-whichdo
.
Release 2.3.0 ¶
- Fix regressions in
redo-whichdo
happened after huge refactoring.
Release 2.2.0 ¶
- Prefix target’s output lines with the name of the target.
Release 2.1.0 ¶
- Mistakenly path to .do file was not absolute and OS can
refuse to run it because it is not in
$PATH
.
Release 2.0.0 ¶
- Huge quantity of performance optimisations.
- Fixed possible unexpected lock file closing.
- When resulting target has the same contents, it does not replace
already existing one. That was done previously. But now it also
copies the file’s mode flags to the target (for example making it
executable).
- If
redo-*
command runs under control of another
(top-level) redo, then it does not parse the flags as options and
treat each argument as a target, allowing passing the targets with
dashes in the beginning.
- Prevented possible concurrent stderr writing by multiple running targets.
redo-depfix
command now always rewrites dependency files
and calculates checksums of the files.
- Own binary format is used for dependency files (.dep),
instead of recfile (.rec) one. It is several times smaller
and much faster to parse. You must run
redo-depfix
to
convert all existing .redo/*.rec files to that binary format.
redo-dep2rec
command appeared, that can convert
.dep to recfile on stdout.
Release 1.32.0 ¶
- Omit printing of the
resource deadlock avoided
warning when
trying to take the lock.
Release 1.31.0 ¶
- Fixed possible race when target can be built more than once.
- Print out finished targets much more quickly.
Release 1.30.0 ¶
- Fixed wrong OOD-cache value of source file dependency.
Targets could be rebuilt without any reason.
Release 1.29.0 ¶
- Fix possible error when two always-ed targets are run simultaneously.
- Updated dependant libraries.
Release 1.28.0 ¶
- Do not remove .lock files, that leads to possible races
between running targets. Although
nncp-cleanup lock
can be used to cleanup.
- Updated dependant libraries.
Release 1.27.1 ¶
- Fixed lack of .redo.-prefix in temporary file names.
Release 1.27.0 ¶
- Improved out-of-date check and .do files search performance,
because of caching their results.
Release 1.26.0 ¶
- Debug output contained colour-related attribute even if
$NO_COLOR=1
was set.
- Updated dependant libraries.
Release 1.25.0 ¶
- Target’s lock file requires a token from the jobserver now. So
amount of simultaneously opened lock files depends on job slots
available.
Release 1.24.0 ¶
redo-cleanup tmp
also removes temporarily ($3
)
created directories.
Release 1.23.0 ¶
redo-ifchange
’s -f option forces each target
rebuilding. Comparing to redo
, it will parallelize the
process.
- Inode’s number is also stored as dependency information, just to
prevent possible
ctime
collision of two files.
- Performance optimization: do not use target’s temporary output file
at all, if its hash equals to already existing target’s one. Just
touch existing target file instead.
Release 1.22.0 ¶
flock
locks replaced with POSIX fcntl
ones.
They could be more portable.
redo-depfix
command appeared, that traverses through all
.redo directories and their dependency files, checks if
corresponding targets has the same content but different
ctime
/mtime
values and rewrites dependencies with that
updated inode information.
- With
$REDO_STOP_IF_MODIFIED=1
environment variable redo will
stop and fail if it meet externally modified file. By default user
is only warned about it, but building continues for convenience.
Release 1.21.0 ¶
$REDO_INODE_NO_TRUST
is replaced with $REDO_INODE_TRUST
environment variable, that takes either none
, or ctime
(the default one), or mtime
(new one). Check documentation’s
separate page about that option.
Release 1.20.0 ¶
- Print warning message if both ifcreate and ifchange records were
discovered after the target is done.
Release 1.19.0 ¶
- Skip target itself, when searching for corresponding .do
file. For example default.do must use ../default.do
instead of the self.
Release 1.18.0 ¶
- Fix regression of known OODs passing since 1.3.0, that leads to
rebuilding of already built targets.
Release 1.17.0 ¶
- If
redo*
process is killed, then it sends SIGTERM
to all his children too, properly terminating the whole job queue.
Release 1.16.0 ¶
- Unexistent targets are considered always out-of-date, as it should be.
- Do not panic if
$REDO_LOGS=1
and we were unable to start the command.
Release 1.15.0 ¶
- Explicitly check if
$1
target is touched and then fail.
Previously we check if $1
was only altered.
Release 1.14.0 ¶
- Fixed
redo-ifcreate
’s targets proper relative paths to the target.
Release 1.13.0 ¶
- Use .log-rec extension, instead of .log.rec, that
won’t collide with already existing .log and .rec in
.redo directory.
Release 1.12.0 ¶
- Fix possible lack of success finish message printing if any of
targets fail.
Release 1.11.0 ¶
- Fix nasty bug with incorrect .redo/tgt.rec files renaming.
Release 1.10.0 ¶
redo-cleanup
now also cleans .redo/tgt.log.rec files.
- Recursive logs do not require .redo/tgt.rec existence anymore.
Release 1.9.0 ¶
- Do not enable command line options not applicable to the command.
For example -j option is only applicable to
redo
and redo-ifchange
commands.
- -dry-run option is renamed to -n
- -logs option is renamed to -k
- -silent option is renamed to -s
- When
stderr
logs are kept, all environment variables, working
directory, command line arguments, start/finish times, duration,
participated PIDs, return codes are saved in corresponding
.redo/tgt.log.rec file. Some of them can be viewed with
-c option to redo-log
.
redo-log
’s -r option allows recursive, indented
viewing of the whole redo commands invocations for the given target
in serialized way.
Release 1.8.0 ¶
- Fixed possibly wrong relative path record of the dependency, when
redo commands are run in different directory from the .do.
- Fixed possible failing in
redo-sources
if no .dep
is found.
Release 1.7.0 ¶
- Optional compatibility (through
$REDO_MAKE={bmake|gmake}
)
with either NetBSD’s bmake or GNU Make jobserver protocols, being
able to tightly integrate goredo
with the make
.
Release 1.6.0 ¶
redo-affects
command appeared, that shows all targets that
will be affected by changing the specified ones.
Release 1.5.0 ¶
redo-ood
, redo-sources
and
redo-targets
can optionally take list of targets to apply
the command on, to narrow the result.
redo-sources
mistakenly missed .do files in the output.
redo-sources
now recursively searches for all source
files, not the "first" depth level ones.
Release 1.4.1 ¶
- Even more simpler statusline cleaning function.
Release 1.4.0 ¶
- Fixed proper -xx and
$REDO_TRACE
workability, that
previously was not applied to all targets.
- Simpler statusline cleaning function, does not leading to whitespace
junk after long lines.
- Updated dependant libraries.
Release 1.3.0 ¶
- Experimental
redo-sources
, redo-targets
and
redo-ood
commands.
- Repetitive OOD determination optimization: pass all already known to
be OOD targets to redoing targets.
Release 1.2.0 ¶
- Dependency files .dep extension changed to .rec, to
reflect its recfile format nature and editors file type better
determination.
- Reduce number of file descriptors kept open (1 instead of 4) while
waiting for job slot token.
Release 1.1.0 ¶
redo-cleanup
has -dry-run option.
Release 1.0.0 ¶
Size
is stored in the state, for faster OOD detection.
Previous goredo
state files won’t work.
- Setting of
$REDO_INODE_NO_TRUST
environment variable brings no
trust to file inode’s information (except for its size), forcing its
checksum checking.
redo-whichdo
resembles apenwarr/redo
’s one behaviour more.
Release 0.12.3 ¶
- Use an updated
lukechampine.com/blake3
with possibly working
arm64 macOS fix.
Release 0.12.2 ¶
- Try to fix failing
lukechampine.com/blake3
on arm64 macOS.
- Fixed tests permissions in the tarball.
Release 0.12.1 ¶
- Tarball uses vendor directory without
$GOPATH
overriding. goredo
and its dependencies anyway uses Go
1.12+ versions, that have vendor-ing support.
Release 0.12.0 ¶
- Do not forget to save even output-less target as a dependency.
- -debug option renamed to shorter -d.
Release 0.11.0 ¶
- Previously
$REDO_JOBS
overrided even explicitly specified
-j option. Fix that behaviour – command line options must
precede environment variables.
- BLAKE3 replaces
BLAKE2b hashing algorithm for even better performance.
Release 0.10.0 ¶
- Initial tarballed release.