]> Cypherpunks.ru repositories - goredo.git/blobdiff - doc/features.texi
Ability to rely on mtime, instead of ctime
[goredo.git] / doc / features.texi
index 5d2b634df5504a4b84c5eeec8cf7048c4cb1f52b..13530aec4502f43def54f4d2c8002564ae92f58b 100644 (file)
@@ -1,6 +1,9 @@
 @node Features
 @unnumbered Features
 
+Notable features that differentiate @command{goredo} from many other
+implementations.
+
 @itemize
 
 @item explicit useful and convenient checks from @command{apenwarr/redo}:
     @item check that generated target was not modified "externally" outside
       the redo, preventing its overwriting, but continuing the build
     @end itemize
+@item recursive, indented and serialized logs display ability, with
+    priority to the depth and bad return codes, like in @command{apenwarr/redo},
+    thanks to @url{https://apenwarr.ca/log/20181106, apenwarr's article}
+@item all environment variables, working directory, command line
+    arguments, start/finish times, duration, participated PIDs, return
+    codes can be saved for later investigation
 @item targets, dependency information and their directories are explicitly
   synced (can be disabled, should work faster)
-@item file's change is detected by comparing its @code{ctime} and BLAKE3 hash
+@item file's change is detected by comparing its size, and
+    @url{https://github.com/BLAKE3-team/BLAKE3, BLAKE3} hash. Also as an
+    optimization, by default if file's @code{ctime} is same, then hash
+    check is skipped. Optionally you can disable that behaviour, or even
+    enable trust to file's @code{mtime}
 @item files creation is @code{umask}-friendly (unlike @code{mkstemp()}
     used in @command{redo-c})
 @item parallel build with jobs limit, optionally in infinite mode
-@item coloured messages (can be disabled)
+@item optional coloured messages
 @item verbose debug messages, including out-of-date determination, PIDs,
   lock and jobserver acquirings/releases
 @item displaying of each target's execution time
@@ -25,8 +38,9 @@
 @item target's @file{stderr} can be stored on the disk with
     @url{http://cr.yp.to/libtai/tai64.html, TAI64N} timestamp prefixes
     for each line. To convert them to localtime you can use either
-    tai64nlocal utility from @url{http://cr.yp.to/daemontools.html,
-    daemontools}, or similar one:
+    @command{tai64nlocal} utility from
+    @url{http://cr.yp.to/daemontools.html, daemontools}, or similar one:
     @code{go get go.cypherpunks.ru/tai64n/cmd/tai64nlocal}
+@item Either GNU Make or bmake @ref{Jobserver, jobserver} compatibility support
 
 @end itemize