* src/cuirass/scripts/remote-server.scm (%options): Fix program name
passed as a 'show-version-and-exit' argument.
* src/cuirass/scripts/remote-worker.scm (%options): Likewise.
This is a followup to c7db7f88a2, which
would only show, say, 'guix-past' and not 'guix' (the latter being a
dependency of the former).
* src/cuirass/http.scm (dashboard-page): Call 'latest-checkouts' and
pass #:checkouts to 'evaluation-dashboard'.
* src/cuirass/templates.scm (evaluation-dashboard): Add #:checkouts and
honor it.
* src/cuirass/http.scm (url-handler)[redirect]: New procedure.
Add clause for /eval/latest/dashboard.
* src/cuirass/templates.scm (specifications-table): Link to it.
* src/cuirass/base.scm (spawn-builds): Add 'set-build-options' call.
Previously, we'd build with #:keep-going? #false, which made Cuirass
build very little when not using the "remote worker" mechanism.
Previously, an error such as 'system-error would be uncaught, which
would (presumably) lead 'cuirass register' to exit right away, via
'essential-task'.
* src/cuirass/base.scm (process-specs): Use 'with-exception-handler' +
'let/ec' instead of 'catch'. Report 'system-error' exceptions in
detail. Print other exceptions as well.
Fixes a regression introduced in
f1f0489ed7 where 'error-level messages
would never be logged.
* src/cuirass/logging.scm (log-message): Always log errors.
These primitives are no longer used. They're also antithetical to the
"communicating sequential processes" (CSP) model where communication is
synchronous and lack of a recipient or sender can lead to lockups.
* src/cuirass/utils.scm (with-timeout)
(put-message-with-timeout, get-message-with-timeout): Remove.
With 'exec-query' from (squee) no longer blocking, we no longer need to
carry out 'exec-query' calls in a dedicated worker thread. However, it
is useful to have a pool of database connections at hand to allow for
concurrent queries.
Thanks to Christopher Baines for suggesting the use of a connection pool.
* src/cuirass/database.scm (%db-channel): Remove.
(%db-connection-pool, %db-connection-pool-size): New variables.
(with-database): Rewrite to use 'make-resource-pool' when in a fiber
context.
(current-db): New variable.
(with-db-worker-thread): Rewrite to use 'current-db' or
'with-resource-from-pool' when appropriate, and plain 'db-open'
otherwise.
* tests/common.scm (test-init-db!): Remove reference to '%db-channel'.
* tests/database.scm (with-fibers): New macro.
Use it throughout.
* configure.ac: Check whether Guile-Squee is recent enough.
'%use-substitutes?' had an effect when it was introduced in
fca42b010e but it got lost eventually.
* src/cuirass/base.scm (%use-substitutes?): Remove.
* src/cuirass/scripts/register.scm (show-help): Remove
'--use-substitutes'.
(cuirass-register): Remove dead store to '%use-substitutes?'.
* doc/cuirass.texi (Invocation): Remove '--use-substitutes'.
It seems 'read-line' has always been non-blocking, according to (ice-9
suspendable-ports) history.
* src/cuirass/base.scm (read-line/non-blocking): Remove.
(process-build-log): Adjust accordingly.
The timestamp was redundant with that added by shepherd.
* src/cuirass/logging.scm (current-logging-procedure): Change default
value to not include a timestamp unless writing to a tty.
Fixes <https://issues.guix.gnu.org/63389>.
We were hitting an old bug from Fibers 1.0.x.
* configure.ac: Check for (fibers scheduler).
* src/cuirass/base.scm <top level>: Remove workaround for Fibers <= 1.0.0.
* src/cuirass/utils.scm (make-worker-thread-channel): Do not
parameterize 'current-fiber'.
(%non-blocking): Likewise.
(call-with-worker-thread): Remove references to 'current-fiber'.
* src/cuirass/watchdog.scm (start-watchdog): Annihilate.
This 'with-store' macro has become unnecessary since Guix commit
8ed597f4a261fe188de82cd1f5daed83dba948eb, which changes its own
'with-store' macro to not rely on 'dynamic-wind'.
Furthermore, this definition of 'unwind-protect' would rewrap SRFI-34
exceptions on Guile 3.0 in something like this:
#<&compound-exception components: (#<&error> #<&irritants irritants: (#<&evaluation-error name: "shepherd" id: 26>)> #<&exception-with-kind-and-args kind: %exception args: (#<&evaluation-error name: "shepherd" id: 26>)>)>
The 'error?' and 'evaluation-error?' predicates would return #f for
these things, thereby leaving an uncaught exception in the fiber calling
'process-specs'.
* src/cuirass/base.scm (with-store): Remove.
* src/cuirass/utils.scm (unwind-protect): Remove.