1.5 API for Parallel Builds
The
setup/parallel-build library provides the parallel-compilation
functionality of
raco setup and
raco make.
Both parallel-compile-files and parallel-compile log messages
to the topic 'setup/parallel-build at the level 'info. These
messages are instances of a parallel-compile-event prefab structure:
(struct parallel-compile-event (worker event) #:prefab)
The worker field is the index of the worker that the created the event. The event
field is a compile-event as document in
make-compilation-manager-load/use-compiled-handler.
The
parallel-compile-files utility function is used by
raco make to
compile a list of paths in parallel. The optional
#:worker-count argument specifies the number of compile workers to spawn during
parallel compilation. The callback,
handler, is called with the symbol
'done as the
handler-type argument for each successfully compiled file,
'output when a
successful compilation produces stdout/stderr output,
'error when a
compilation error has occured, or
'fatal-error when a unrecoverable
error occurs. The other arguments give more information for each status update.
The return value is
(void) if it was successful, or
#f if there was an error.
(parallel-compile-files |
source-files |
#:worker-count 4 |
#:handler (lambda (type work msg out err) |
(match type |
['done (when (verbose) (printf " Made ~a\n" work))] |
['output (printf " Output from: ~a\n~a~a" work out err)] |
[else (printf " Error compiling ~a\n~a\n~a~a" |
work |
msg |
out |
err)]))) |
|
worker-count : non-negative-integer? |
|
|
collects-tree : (listof any/c) |
The
parallel-compile function is used by
raco setup to
compile collections in parallel. The
worker-count argument
specifies the number of compilation workers to spawn during parallel
compilation. The
setup-fprintf and
append-error
functions communicate intermediate compilation results and errors. The
collects-tree argument is a compound datastructure containing
an in-memory tree representation of the collects directory.
When the exn argument to append-error is a part of
strings, the first string is a long form of the error message, and the
second string is a short form (omitting evaluation context
information, for example).
Changed in version 6.1.1.8 of package base: Changed append-error to allow
a pair of error strings.