News
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.