| Commit message (Collapse) | Author | Age |
|
|
|
|
| |
* src/cuirass/base.scm (spawn-builds): Log the number of builds
performed, not the number of remaining builds.
|
|
|
|
|
| |
* bin/cuirass.in (show-help, %options): Add "--threads".
(main): Honor it. Pass #:parallelism to 'run-fibers'.
|
|
|
|
|
|
|
|
|
|
|
| |
Works around <https://github.com/wingo/fibers/issues/19>.
The effect in practice would be that we'd usually not reach the
'close-pipe' call in 'evaluate', leaving zombie processes behind us,
never executing the continuation, and additionally spinning fast on a
sequence of epoll_wait/epoll_ctl calls.
* src/cuirass/base.scm <top level>: Monkey-patch (fibers internal).
|
|
|
|
|
| |
* examples/random-jobs.scm, examples/random.scm: New files.
* Makefile.am (nobase_dist_pkgdata_DATA): Add them.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We used to have 'build-derivations' write to the custom binary port
returned by 'build-event-output-port'. However, custom binary ports
constitute continuation barriers, thereby preventing fibers from being
suspended.
To make build log processing non-blocking, we therefore invert this
inversion of control and use a suspendable I/O procedure,
'read-line/non-blocking', when reading the build log.
* src/cuirass/base.scm (read-line/non-blocking, process-build-log)
(build-derivations&): New procedures.
(%newline, build-event-output-port): Remove.
(spawn-builds): Use 'build-derivations&' instead of 'build-derivations'
with 'build-event-output-port'.
|
|
|
|
|
| |
* src/cuirass/http.scm (handle-builds-request): Wrap 'db-get-builds'
into 'non-blocking'.
|
|
|
|
|
| |
* src/cuirass/logging.scm (log-monitoring-stats): New procedure.
* bin/cuirass.in (main): Add a fiber that calls it regularly.
|
|
|
|
|
|
| |
* src/cuirass/database.scm (db-get-builds)[format-order-clause]: Add
'status+submission-time'.
* src/cuirass/http.scm (url-handler) <"queue">: Use it.
|
|
|
|
|
| |
* src/cuirass/base.scm (shuffle-jobs): New procedure.
(spawn-builds): Use it.
|
|
|
|
| |
* src/cuirass/base.scm (spawn-builds): Add 'log-message' call.
|
|
|
|
| |
* build-aux/guix.scm (inputs): Add guile-fibers.
|
|
|
|
|
| |
* examples/guix-track-git.scm (package->git-tracked): Add STORE parameter.
(guix-jobs): Pass value for STORE parameter.
|
|
|
|
|
| |
* bin/cuirass.in (main): Pass #:parallel? to 'spawn-fiber' for the web
server.
|
|
|
|
|
| |
* src/cuirass/utils.scm (essential-task): New procedure.
* bin/cuirass.in (main): Wrap each fiber in 'essential-task'.
|
|
|
|
|
| |
* src/cuirass/http.scm (url-handler): Check whether REQUEST's method is
'GET, and return 405 if not.
|
|
|
|
|
|
|
|
| |
This should placate 'guix-hydra-queued-builds', for instance, which
checks these values to choose between "Running" and "Scheduled".
* src/cuirass/http.scm (build->hydra-build): Provide the correct value
for #:finished and #:busy.
|
|
|
|
|
|
|
| |
Suggested by Ricardo Wurmus.
* src/cuirass/database.scm (wal-mode): New procedure.
(db-open): Use it.
|
|
|
|
|
|
|
|
|
| |
Fixes a bug whereby 'build-event-output-port' would sometimes read more
than COUNT from BV, which would usually result in a 'decoding-error'
exception from 'utf8->string'.
* src/cuirass/base.scm (build-event-output-port)[write!]: Use
'bytevector-range' to honor COUNT and OFFSET.
|
|
|
|
|
| |
* src/cuirass/utils.scm (%weak-references): New variable.
(bytevector-range): New procedure.
|
|
|
|
|
|
|
|
| |
Previously these calls would effectively suspend execution of all the
fibers until they had completed.
* src/cuirass/base.scm (process-specs): Wrap 'fetch-repository' and
'compile' calls in 'non-blocking'.
|
|
|
|
|
| |
* src/cuirass/utils.scm (%non-blocking): New procedure.
(non-blocking): New macro.
|
|
|
|
| |
* bin/cuirass.in (main): Pass #:hz to 'run-fibers'.
|
|
|
|
|
|
| |
* bin/cuirass.in (main): Add 'exit-channel' and read from it.
Catch exceptions in the main fiber and write to that channel upon
error.
|
|
|
|
|
|
| |
* src/cuirass/logging.scm (call-with-time-logging): New procedure.
(with-time-logging): New macro.
* src/cuirass/http.scm (handle-builds-request): Use it.
|
|
|
|
| |
* bin/cuirass.in (main): Print message while fetching pending builds.
|
|
|
|
| |
* tests/http.scm ("http")["cuirass-run"]: Run server with 'run-fibers'.
|
|
|
|
|
| |
* src/cuirass/base.scm (restart-builds): Mark as succeeded the subset of
VALID with at least one valid output.
|
|
|
|
|
|
| |
* src/cuirass/base.scm (handle-build-event)[valid?]: New procedure.
Use it when handling 'build-started', 'build-succeeded', and
'build-failed' events.
|
|
|
|
|
| |
* src/web/server/fiberized.scm (socket-loop): Add 'log-message' call.
* src/cuirass/http.scm (url-handler): Likewise.
|
|
|
|
|
|
| |
* src/web/server/fiberized.scm: New file.
* Makefile.am (dist_pkgmodule_DATA): Add it.
* src/cuirass/http.scm (run-cuirass-server): Use it.
|
|
|
|
|
| |
* src/cuirass/base.scm (build-derivation=?): New procedure.
(restart-builds): Call 'delete-duplicates' on BUILDS.
|
|
|
|
| |
* src/cuirass/base.scm: Remove unneeded #:use-module.
|
|
|
|
|
|
|
| |
* src/cuirass/database.scm (db-get-builds)[format-order-clause]: Add
'order' clauses.
* src/cuirass/http.scm (url-handler): Default to (order finish-time) for
/latestbuilds and (order submission-time) for /queue.
|
|
|
|
|
| |
* src/cuirass/database.scm (%sqlite-exec): New procedure.
(sqlite-exec): New macro.
|
|
|
|
|
|
|
|
| |
This works around a scalability issue in guix-daemon when passing a long
list of derivations to 'build-derivations'.
* src/cuirass/base.scm (spawn-builds): New procedure.
(restart-builds, build-packages): Use it.
|
|
|
|
|
|
| |
This is a followup to commit c89c117c12792cbc4996035feb670c2535dcb105.
* tests/http.scm (build-query-result): Add #:derivation.
|
|
|
|
| |
* src/cuirass/base.scm (read/non-blocking): Add 'setvbuf' call.
|
|
|
|
|
| |
* src/cuirass/base.scm (read/non-blocking): New procedure.
(evaluate): Use it instead of inline code.
|
|
|
|
|
|
| |
* src/cuirass/database.scm (sqlite-exec): Use (ice-9 format).
(db-update-build-status!): Add #:log-file parameter and honor it.
* tests/database.scm ("database")["db-update-build-status!"]: Test it.
|
|
|
|
|
|
|
| |
* src/cuirass/base.scm (handle-build-event): Remove unused 'log-port'
parameter.
(restart-builds): Wrap 'build-derivations' in 'guard'. Add
'log-message' calls.
|
|
|
|
| |
* src/cuirass/ui.scm (show-version): Update year.
|
|
|
|
| |
* src/cuirass/http.scm (build->hydra-build): Add #:derivation.
|
|
|
|
|
|
|
|
|
| |
Fixes a regression introduced in
d7306a4f48a666a008091bfeb94d1fdb32b46948 whereby 'register' would pass
the empty list as #:outputs to 'db-add-build'.
* src/cuirass/base.scm (build-packages)[register]: Always include
outputs.
|
|
|
|
| |
* src/cuirass/http.scm (url-handler): Add case for empty #:outputs.
|
|
|
|
|
|
|
|
| |
Previously 'restart-builds' would lack it, for instance.
* src/cuirass/base.scm (process-specs): Move 'set-build-options' call
to...
(with-store): ... here.
|
|
|
|
|
|
|
|
|
|
| |
Previously STORE would be closed on the first context switch, before
'restart-builds' has completed, leading to an error (writing to a closed
port).
* src/cuirass/base.scm (restart-builds): Remove 'store' parameter. Wrap
body in 'with-store'.
* bin/cuirass.in (main): Adjust accordingly.
|
|
|
|
| |
* bin/cuirass.in: Import (guix store).
|
|
|
|
|
|
|
|
| |
* src/cuirass/http.scm (url-handler): Add /api/queue handler.
* tests/http.scm ("http"): Add a BUILD2 and DERIVATION2, and rename
BUILD and DERIVATION accordingly.
("/build/2", "/build/2/log/raw"): Rename to /42.
("/api/queue?nr=100"): New test.
|
|
|
|
|
|
|
|
| |
* src/cuirass/database.scm (db-get-builds)[format-where-clause]:
Honor (status pending) filter.
* src/cuirass/base.scm (restart-builds): New procedure.
* bin/cuirass.in (main): Fetch pending builds. Start fiber that invokes
'restart-builds' on them.
|
|
|
|
|
|
|
| |
* src/cuirass/database.scm (db-get-builds)[format-where-clause]:
Honor (status done) filter.
* src/cuirass/http.scm (url-handler): Always add (status done)
to the filters passed to 'handle-builds-request'.
|