This project is mirrored from https://git.savannah.gnu.org/git/guix/guix-cuirass.git/.
Pull mirroring updated .
- Sep 06, 2020
-
-
Mathieu Othacehe authored
src/cuirass/base.scm (fetch-input): Add the commit timestamp to the returned association list, (process-specs): Pass a timestamp taken at procedure start and another one taken after inputs are fetched to "db-add-evaluation" procedure. Once the evaluation is over, call "db-set-evaluation-time" to save the evaluation completion time. src/cuirass/database.scm (db-set-evaluation-time): New procedure, (db-add-checkout): Handle the "timestamp" field, (db-add-evaluation): add "checkouttime" and "evaltime" arguments. Modify the associated SQL query accordingly. (db-get-builds): Use "Builds.timestamp" instead of "timestamp" as this field is also part of the Evaluations table. src/schema.sql (Checkouts): Add "timestamp" field, (Evaluations): add "timestamp", "checkouttime" and "evaltime" fields. src/sql/upgrade-9.sql: New file. tests/database.scm (sqlite-exec): Adapt Evaluations table insertions to include "timestamp", "checkouttime" and "evaltime" required fields.
-
- Sep 02, 2020
-
-
Mathieu Othacehe authored
Fixes <https://issues.guix.gnu.org/43163>. * src/cuirass/http.scm (specification->json-object): New procedure, (url-handler): use it for "/specifications" route to convert specification objects into a representation suitable for json->scm. * tests/http.scm ("/specifications"): Test the above route.
-
- Aug 25, 2020
-
-
Mathieu Othacehe authored
* configure.ac: Add Guile-zlib dependency.
-
Mathieu Othacehe authored
* README (Requirements): Add Guile-zlib. * build-aux/guix.scm: Ditto. * src/cuirass/base.scm: Use Guile-zlib instead of (guix zlib).
-
- Aug 05, 2020
-
-
Mathieu Othacehe authored
Use the pre-unwind-handler of a catch clause instead of nesting with-throw-handler inside a catch clause. * src/web/server/fiberized.scm (with-ignored-disconnects): Remove it, (client-loop): replace "with-ignored-disconnects" with a catch clause.
-
- Aug 04, 2020
-
-
Mathieu Othacehe authored
EPIPE and ECONNRESET errors are already ignored when thrown by "sendfile" and "put-bytevector" procedures. It turns out "peek-char" can also cause such errors. So ignore such errors within the whole procedure. * src/web/server/fiberized.scm (client-loop): Wrap the whole procedure inside "with-ignored-disconnects" instead of wrapping individually "sendfile" and "put-bytevector" calls.
-
- Aug 03, 2020
-
-
Mathieu Othacehe authored
This is a follow-up of 2094d680. * src/cuirass/http.scm (request-parameters): Fix typo.
-
Mathieu Othacehe authored
Handle requests such as "/build/?nr" by ignoring parameters without any associated value. * src/cuirass/http.scm (request-parameters): Ignore silently parameters without an associated value. * tests/http.scm: Add a corresponding test case.
-
Mathieu Othacehe authored
* tests/http.scm: Add new test cases covering some erroneous routes.
-
Mathieu Othacehe authored
This is a follow-up of 614ea057. * src/cuirass/http.scm (url-handler): Fix string concatenation.
-
Mathieu Othacehe authored
* src/cuirass/http.scm (url-handler): Handle the id -> number conversion directly in the route declaration.
-
Mathieu Othacehe authored
* src/cuirass/http.scm (url-handler): Handle erroneous id -> number conversion on "/build/id/log/raw" route.
-
Mathieu Othacehe authored
The request "/build/2465370mdb%22fx'ggx/details" causes a select query on the whole Builds table, because failed "string->number" conversion is not handled. * src/cuirass/http.scm (url-handler): Handle erroneous id -> number conversion on "/build/id/details" route.
-
- Aug 02, 2020
-
-
Mathieu Othacehe authored
The request "/build/1234)" causes a select query on the whole Builds table, because failed "string->number" conversion is not handled. * src/cuirass/http.scm (url-handler): Handle erroneous id -> number conversion on "/build/id" route.
-
- Aug 01, 2020
-
-
Mathieu Othacehe authored
* src/cuirass/utils.scm (with-operation, get-message-with-timeout): New procedures, (call-with-worker-thread): add timeout and timeout-proc arguments. * src/cuirass/database.scm (with-db-worker-thread): Pass a 5 seconds timeout to call-with-worker-thread, and print a debug message on timeout expiration.
-
- Jul 31, 2020
-
-
Mathieu Othacehe authored
* src/web/server/fiberized.scm (with-ignored-disconnects): New macro factorizing the catch clause ignoring client disconnection related errors. Use it for both "sendfiles" and "put-bytevector" procedures.
-
Mathieu Othacehe authored
* bin/cuirass.in (main): Add monitoring fiber in web mode.
-
- Jul 30, 2020
-
-
Mathieu Othacehe authored
* src/web/server/fiberized.scm (client-loop): Catch EPIPE and ECONNRESET errors than can be thrown if the client disconnects prematurely.
-
Mathieu Othacehe authored
Setting current-fiber to #f in %non-blocking will prevent put-message in the new thread to try suspending itself, but will also cause the same behavior on get-message, which is not desired. * src/cuirass/utils.scm (%non-blocking): Reduce the scope of current-fiber parameter to the newly created thread.
-
- Jul 29, 2020
-
-
Mathieu Othacehe authored
* src/cuirass/http.scm (url-handler): Handle the error case on /download route.
-
- Jul 26, 2020
-
-
Mathieu Othacehe authored
It happens that some left-over checkout entries refer to removed inputs. In that case, input will be #f, causing commit-hyperlink to fail with the following error message: In cuirass/http.scm: 475:25 9 (url-handler _ _) 193:3 8 (evaluation-html-page ((#:id . 5103) (# . 0) (# . 39) ?) ?) In cuirass/templates.scm: 612:14 7 (evaluation-build-table _ #:checkouts _ #:inputs _ # _ # ?) In srfi/srfi-1.scm: 586:17 6 (map1 (((#:commit . "3a3e9f2bb586e79a7931163f0191d?") ?))) In cuirass/templates.scm: 621:39 5 (_ _) 584:15 4 (commit-hyperlink #f "3a3e9f2bb586e79a7931163f0191df615?") In web/uri.scm: 308:23 3 (string->uri _) 278:14 2 (string->uri-reference _) In unknown file: 1 (regexp-exec #<regexp 7f3a76c05980> #f #<undefined> #<u?>) In ice-9/boot-9.scm: 1669:16 0 (raise-exception _ #:continuable? _) In procedure regexp-exec: Wrong type argument in position 2 (expecting string): #f * src/cuirass/templates.scm (evaluation-build-table): Do not call "commit-hyperlink" if the matching input could not be found.
-
- Jul 25, 2020
-
-
Mathieu Othacehe authored
When "spawn-builds" is called to restart builds, the spec is not known, preventing build products from being created as reported here: https://issues.guix.gnu.org/42523 Fix this issue by reading the specification in database in "set-build-successful!" procedure. * src/cuirass/database.scm (db-get-specification): New exported procedure, (db-get-specifications): add an optional name argument. * tests/database.scm (db-get-specification): Add a corresponding test-case. * src/cuirass/base.scm (set-build-successful!): Remove spec argument and read it directly from database instead, (update-build-statuses!): also remove spec argument, adapt set-build-successful! call accordingly, (spawn-builds): remove spec argument and adapt handle-build-event and update-build-statuses! calls accordingly, (handle-build-event): remove spec argument, adapt set-build-successful! call accordingly, (build-packages): remove spec argument, adapt spawn-builds call accordingly, (process-specs): adapt build-packages call.
-
- Jul 03, 2020
-
-
Mathieu Othacehe authored
* src/cuirass/templates.scm (html-page): Turn "Latest builds" into "Running builds".
-
Mathieu Othacehe authored
Add a "status" dropdown menu in the navigation bar. For now this menu only contains one item, a link to the "latest builds" page at "/status" location. * src/cuirass/database.scm (db-get-builds): Add support for 'started status. * src/cuirass/http.scm (url-handler): Add "/status" route. * src/cuirass/templates.scm (running-builds-table): New procedure, (html-page): add a dropdown menu containing one item, a link to "/status" route defined above. * src/static/css/cuirass.css: Add new class to allow bootstrap dropdown menus to work without javascript plugin.
-
- Jun 30, 2020
-
-
Mathieu Othacehe authored
* src/cuirass/base.scm (create-build-outputs): Add a debug message.
-
Mathieu Othacehe authored
Ignore errors when trying to insert an already existing build product. * src/cuirass/database.scm (db-add-build-product): Ignore insertion errors.
-
- Jun 29, 2020
-
-
Mathieu Othacehe authored
Make sure that build products are also created when a batch of derivations finishes, and not only when single build success events are received. Factorize build status update to success and build products creation into a single procedure. * src/cuirass/base.scm (set-build-successful!): New procedure, (update-build-statuses!): call it here, (handle-build-event): and here.
-
- Jun 26, 2020
-
-
Mathieu Othacehe authored
It happens that we receive build succeeded notifications for derivations that are not stored in the Builds table. In that case, do not try to create build products. * src/cuirass/base.scm (handle-build-event): Check if the derivation is registered in the Builds table.
-
- Jun 23, 2020
-
-
Mathieu Othacehe authored
This is a follow-up of 2280ae18. The gzipped log files are supposed to be displayed directly in the browser and not downloaded. Set "Content-Disposition" header to "inline" to ensure that. * src/cuirass/http.scm (respond-gzipped-file): Set to "Content-Disposition" to "inline".
-
- Jun 22, 2020
-
-
Mathieu Othacehe authored
When searching for successful builds in Cuirass, it is expected that the build products are already available. Hence, make sure that build products are computed before the build is marked as successful. * src/cuirass/base.scm (spawn-builds): Add a spec argument, (handle-build-event): ditto, and call create-build-outputs when the build-succeeded event is received, (create-build-outputs): take a single build argument instead of a builds list and adapt accordingly, (build-packages): pass spec argument to spawn-builds and remove create-build-outputs call.
-
- Jun 21, 2020
-
-
Mathieu Othacehe authored
* src/cuirass/http.scm (url-handler): Add "/search/latest" and "/search/latest/<product-type>" routes.
-
- Jun 15, 2020
-
-
Mathieu Othacehe authored
* src/cuirass/http.scm (build->hydra-build)[build-products]: New variable, added to "buildproducts" field. * tests/http.scm (build-query-result): Adapt accordingly.
-
- Jun 14, 2020
-
-
Mathieu Othacehe authored
* src/cuirass/templates.scm (build-details): Display build product type.
-
- Jun 13, 2020
-
-
Christopher Baines authored
* Makefile.am (dist_sql_DATA): Add src/sql/upgrade-8.sql.
-
Christopher Baines authored
Remove the Builds_index from the schema, as it would have been removed in error by the upgrade-6 upgrade. Add a specific index on the Builds status field, as this helps with db-get-builds queries, and add an index on the Outputs derivation field, as this helps with the db-get-outputs part of db-get-builds. * src/sql/upgrade-8.sql: New file. * src/schema.sql: Update accordingly.
-
- Jun 10, 2020
-
-
Mathieu Othacehe authored
* src/cuirass/http.scm (respond-file): Send the file name as 'x-raw-file header argument, instead of the raw file content, (respond-gzipped-file): ditto. Also set 'content-disposition header. * src/web/server/fiberized.scm (strip-headers, with-content-length): New procedures, (client-loop): Check if 'x-raw-file is set. If it's the case, use sendfiles to send the given file. Otherwise, keep the existing behaviour and send directly the received bytevector.
-
Mathieu Othacehe authored
* src/sql/upgrade-7.sql: New file. * Makefile.am: Add it. * src/cuirass/base.scm (create-build-outputs): New procedure, (build-packages): call it, (process-spec): add the new spec argument and pass it to create-build-outputs. * src/cuirass/database.scm (db-add-build-product, db-get-build-product-path, db-get-build-products): New exported procedures. * src/cuirass/http.scm (respond-static-file): Move file sending to ... (respond-file): ... this new procedure, (url-handler): add a new "download/<id>" route, serving the requested file with the new respond-file procedure. Also gather build products and pass them to "build-details" for "build/<id>/details" route. * src/cuirass/templates.scm (build-details): Honor the new "products" argument to display all the build products associated to the given build. * src/schema.sql (BuildProducts): New table, (Specifications)[build_outputs]: new field. * tests/database.scm: Add empty build-outputs spec. * tests/http.scm: Ditto. * examples/guix-jobs.scm: Ditto. * examples/hello-git.scm: Ditto. * examples/hello-singleton.scm: Ditto. * examples/hello-subset.scm: Ditto. * examples/random.scm: Ditto. * doc/cuirass.texi (overview): Document it.
-
Christopher Baines authored
This commit does several things, the big change is to try and construct a simpler query for SQLite. I'm not confident that SQLite's query planner can look past handling the NULL parameters, so I think it could be helpful to try and create a simpler query, both to avoid that problem if it exists, but also move the complexity in to Guile code, which I think is a bit more manageable. The way ordering is handled is also changed. Order is one of the filters, although it's not a filter, and some of the other filters also influenced the order. I think there are things still to fix/improve with the handling of ordering, but at least this commit just has the ordering happen once in the query. * src/cuirass/database.scm (filters->order): Remove procedure, inline in to db-get-builds. (db-get-builds): Change query generation in an attempt to make it easier to tune the queries for performance.
-
- May 25, 2020
-
-
Christopher Baines authored
Add a "optimize" step that occurs when starting up the main Curiass process. Currently this does two things, but could be extended to do more. The "PRAGMA optimize;" command prompts SQLite to ANALYZE tables where that might help. The "PRAGMA wal_checkpoint(TRUNCATE);" command has SQLite process any unprocessed changes from the WAL file, then truncate it to 0 bytes. I've got no data to suggest this helps with performance, but I'm hoping that going from a large WAL file to a small one occasionally might be useful. * src/cuirass/database.scm (db-optimize): New procedure. * bin/cuirass.in (main): Run it.
-
Christopher Baines authored
* build-aux/guix.scm (arguments): Change 2.2 to 3.0. (inputs): Change guile@2.2 to guile.
-