aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAge
...
* base: Make repository fetching and compilation non-blocking.Ludovic Courtès2018-01-26
| | | | | | | | 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'.
* utils: Add 'non-blocking' macro.Ludovic Courtès2018-01-26
| | | | | * src/cuirass/utils.scm (%non-blocking): New procedure. (non-blocking): New macro.
* logging: Add 'with-time-logging' and use it.Ludovic Courtès2018-01-26
| | | | | | * src/cuirass/logging.scm (call-with-time-logging): New procedure. (with-time-logging): New macro. * src/cuirass/http.scm (handle-builds-request): Use it.
* base: Do not restart builds that turn out to have succeeded already.Ludovic Courtès2018-01-26
| | | | | * src/cuirass/base.scm (restart-builds): Mark as succeeded the subset of VALID with at least one valid output.
* base: Do not pass bogus store file names to 'db-update-build-status!'.Ludovic Courtès2018-01-26
| | | | | | * src/cuirass/base.scm (handle-build-event)[valid?]: New procedure. Use it when handling 'build-started', 'build-succeeded', and 'build-failed' events.
* http: Log incoming connections and requests.Ludovic Courtès2018-01-26
| | | | | * src/web/server/fiberized.scm (socket-loop): Add 'log-message' call. * src/cuirass/http.scm (url-handler): Likewise.
* http: Use our own 'fiberized' web server backend.Ludovic Courtès2018-01-25
| | | | | | * src/web/server/fiberized.scm: New file. * Makefile.am (dist_pkgmodule_DATA): Add it. * src/cuirass/http.scm (run-cuirass-server): Use it.
* base: Delete duplicate builds when restarting them.Ludovic Courtès2018-01-25
| | | | | * src/cuirass/base.scm (build-derivation=?): New procedure. (restart-builds): Call 'delete-duplicates' on BUILDS.
* base: Remove unneeded import.Ludovic Courtès2018-01-25
| | | | * src/cuirass/base.scm: Remove unneeded #:use-module.
* http: Sort /api/latestbuilds and /api/queue by time.Ludovic Courtès2018-01-25
| | | | | | | * 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.
* database: Turn 'sqlite-exec' into a macro.Ludovic Courtès2018-01-25
| | | | | * src/cuirass/database.scm (%sqlite-exec): New procedure. (sqlite-exec): New macro.
* base: Build derivations in batches.Ludovic Courtès2018-01-25
| | | | | | | | 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.
* base: Buffer input pipe of the 'evaluate' process.Ludovic Courtès2018-01-25
| | | | * src/cuirass/base.scm (read/non-blocking): Add 'setvbuf' call.
* base: Extract 'read/non-blocking'.Ludovic Courtès2018-01-25
| | | | | * src/cuirass/base.scm (read/non-blocking): New procedure. (evaluate): Use it instead of inline code.
* database: 'db-update-build-status!' takes a #:log-file parameter.Ludovic Courtès2018-01-24
| | | | | | * 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.
* base: Be more verbose about restarted builds.Ludovic Courtès2018-01-24
| | | | | | | * src/cuirass/base.scm (handle-build-event): Remove unused 'log-port' parameter. (restart-builds): Wrap 'build-derivations' in 'guard'. Add 'log-message' calls.
* ui: Bump copyright year in '--version' output.Ludovic Courtès2018-01-24
| | | | * src/cuirass/ui.scm (show-version): Update year.
* http: /build: Include the derivation.Ludovic Courtès2018-01-24
| | | | * src/cuirass/http.scm (build->hydra-build): Add #:derivation.
* base: Populate the 'Outputs' table.Ludovic Courtès2018-01-24
| | | | | | | | | 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.
* http: /build: Gracefully handle empty output list.Ludovic Courtès2018-01-24
| | | | * src/cuirass/http.scm (url-handler): Add case for empty #:outputs.
* base: Always set 'keep-going' when opening the store.Ludovic Courtès2018-01-23
| | | | | | | | Previously 'restart-builds' would lack it, for instance. * src/cuirass/base.scm (process-specs): Move 'set-build-options' call to... (with-store): ... here.
* cuirass: Fix scope mismatch.Ludovic Courtès2018-01-23
| | | | | | | | | | 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.
* http: Implement /api/queue.Ludovic Courtès2018-01-23
| | | | | | | | * 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.
* base: Restart pending builds upfront.Ludovic Courtès2018-01-23
| | | | | | | | * 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.
* http: /api/latestbuilds only returns finished builds.Ludovic Courtès2018-01-23
| | | | | | | * 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'.
* database: Use US spelling for "canceled".Ludovic Courtès2018-01-23
| | | | | * src/cuirass/database.scm (build-status): Use US spelling for "canceled".
* base: Add missing argument.Ludovic Courtès2018-01-23
| | | | | * src/cuirass/base.scm (build-packages): In 'filter-map' call, add missing argument to 'db-get-build'.
* base: Use 'log-message' some more.Ludovic Courtès2018-01-23
| | | | | * src/cuirass/base.scm (build-packages): Use 'log-message' instead of 'format'.
* base: Update build status and start/stop time according to build log.Ludovic Courtès2018-01-23
| | | | | | | | | | | Now the database is updated as things are built, rather than after the whole batch of derivation builds has completed. * src/cuirass/base.scm (handle-build-event): Call 'db-update-build-status!'. (build-packages)[register]: Set #:starttime and #:stoptime to 0. Set #:status to 'scheduled'. Define 'build-ids' and use it to determine the overall result.
* database: Add 'db-update-build-status!'.Ludovic Courtès2018-01-23
| | | | | | | | | * src/cuirass/database.scm (build-status): Add 'scheduled' and 'started'. (db-add-build): Make sure #:timestamp, #:starttime, #:stoptime, and #:status are integers. (db-update-build-status!): New procedure. * tests/database.scm ("database")["db-update-build-status!"]: New test.
* Add a 'build-status' enumeration.Ludovic Courtès2018-01-23
| | | | | | | * src/cuirass/utils.scm (define-enumeration): New macro. * src/cuirass/database.scm (build-status): New macro. * src/cuirass/base.scm (build-packages)[hydra-build-status]: Remove. Use the 'build-status' macro instead.
* Fix scope mismatch.Ludovic Courtès2018-01-23
| | | | | * src/cuirass/base.scm (process-specs): Add new 'with-database' within the fiber.
* Introduce concurrency with Fibers.Ludovic Courtès2018-01-22
| | | | | | | | | | | | | | | * README: Mark Fibers as required. * configure.ac: Check for Guile 2.2 only. Check for (fibers). * bin/cuirass.in (main): Use (fibers). Run 'process-specs' and web server in separate fibers. * src/cuirass/base.scm (with-store): New macro. (non-blocking-port): New procedure. (evaluate): Use 'non-blocking-port'. Use 'read-string' followed by 'read'. (process-specs): Move 'db-add-stamp' right after 'string=?' comparison. Run evaluation and subsequent builds in a separate fiber. * src/cuirass/http.scm (run-cuirass-server): Pass 'fibers as the second argument to 'run-server'. Use 'log-message' instead of 'format'. * src/cuirass/database.scm (with-database): Remove 'dynamic-wind'.
* database: Change default file name to /var/run/cuirass/cuirass.db.Ludovic Courtès2018-01-22
| | | | | * src/cuirass/database.scm (%package-database): Change default file name from /var/cuirass.db (or similar) to /var/run/cuirass/cuirass.db.
* Improve build event logging.Ludovic Courtès2018-01-22
| | | | | * src/cuirass/base.scm (handle-build-event): Add 'build-failed'; shorten message for 'build-remote'.
* Log activity of the main loop.Ludovic Courtès2018-01-22
| | | | * src/cuirass/base.scm (process-specs): Add 'log-message' calls.
* Add (cuirass logging) module.Ludovic Courtès2018-01-22
| | | | | | | * src/cuirass/logging.scm: New file. * Makefile.am (dist_pkgmodule_DATA): Add it. * src/cuirass/base.scm (handle-build-event): Use 'log-message' instead of 'log'.
* Initialize libgit's TLS certificate directory once and for all.Ludovic Courtès2018-01-22
| | | | | | * src/cuirass/base.scm (prepare-git): New procedure. Body moved from... (process-specs): ... here. Remove it. * bin/cuirass.in (main): Call 'prepare-git'.
* Monitor and report build events.Ludovic Courtès2018-01-22
| | | | | | * src/cuirass/base.scm (%newline): New variable. (build-event-output-port, handle-build-event): New procedures. (build-packages): Use 'handle-build-event'.
* http: /build/N/log/raw redirects to /log.Ludovic Courtès2018-01-07
| | | | | | | | | | | This moves log handling responsibility to 'guix publish'. * src/cuirass/http.scm (handle-log-request): Remove. (url-handler): Change /log/raw URI handler to return 302 to /log/OUTPUT. * tests/http.scm (log-file-name): Remove, and remove code to create and delete it. ("fill-db"): Change #:log value. ("/build/1/log/raw"): Expect 302.
* database: Extend and test 'db-get-builds'.Ludovic Courtès2018-01-07
| | | | | | | | | | * src/cuirass/database.scm (db-get-builds): Make 'order' a separate filter. Add 'format-limit-clause'. Reverse OUTPUTS. * tests/database.scm (make-dummy-eval, make-dummy-derivation) (make-dummy-build): New procedures. (with-temporary-database): New macro. ("database"): Use 'make-dummy-build'. ("db-get-builds"): New test.
* Do not mistakenly use 'GIT_SSL_CAINFO' as a directory name.Ludovic Courtès2017-09-29
| | | | | | | | | | 'GIT_SSL_CAINFO' designates a single-file certificate bundle, not a directory; thus it must be passed as the second argument to 'set-tls-certificate-locations!'. * src/cuirass/base.scm (process-specs): Pass $SSL_CERT_DIR as the first argument to 'set-tls-certificate-locations!', and $GIT_SSL_CAINFO or $SSL_CERT_FILE as the second argument.
* cuirass: Add --listen command line option.Jan Nieuwenhuizen2017-09-18
| | | | | | | | * bin/cuirass.in (show-help): Add help for --listen option. (%options): Add listen option. (main): Pass host to run-cuirass-server. * doc/cuirass.texi (Invocation): Add --listen option. * src/cuirass/http.scm (run-cuirass-server): Add named #:host parameter.
* base: Show feedback when build has finished.Jan Nieuwenhuizen2017-09-17
| | | | | * src/cuirass/base.scm (build-packages): Print some feedback when derivations have been built.
* base: Make working copy writable.Jan Nieuwenhuizen2017-09-17
| | | | | * src/cuirass/base.scm (copy-repository-cache): Make working copy writable. Fixes guix .po build errors.
* cuirass: add Hydra compatible HTTP API.Mathieu Othacehe2017-09-08
| | | | | | | | | | | | | * doc/cuirass.texi (Sections)[Web API]: New section describing the HTTP API. * src/cuirass/http.scm (spec->json-string): Move it to utils.scm and rename it object->json-string. (object->json-scm): Move it utils.scm. (handle-*-request): New helpers procedures. (request-parameters): New procedure to parse a request query. (url-handler): Add new API's. * src/cuirass/utils.scm (object->json-scm, object->json-string): Exported procedures moved from http.scm. * tests/http.scm: Add various tests on new HTTP API.
* cuirass: Store new information in database to prepare new HTTP APIMathieu Othacehe2017-09-08
| | | | | | | | | | | | | | | | | | | | | integration. * bin/evaluate.in (fill-job): New procedure. (main): Use it to fill informations (nix-name, system) that will later be added to database. * doc/cuirass.texi (Database)[Derivation]: Add system and nix_name fields. (Database)[Builds]: Add id, status, timestamp, starttime and stoptime fields. Remove output field. (Database)[Outputs]: New table describing the build outputs. * src/cuirass/base.scm (build-packages): Add new fields to build object before adding it to database. * src/cuirass/database.scm (db-get-build, db-get-builds): New procedures to get a build by id from database and a list of builds using filter parameters respectively. * src/schema.sql (Outputs) : New table. (Derivations): Add system and nix_name columns. (Builds): Remove output column and add id, status, timestamp, starttime and stoptime columns.
* base: Set certificate location.Ricardo Wurmus2017-08-26
| | | | | * src/cuirass/base.scm (process-specs): Set certificate location to the value in GIT_SSL_CAINFO or SSL_CERT_DIR.
* database: 'db-add-build' is now idempotent.Ludovic Courtès2017-08-26
| | | | | | | | | | | Fixes <https://bugs.gnu.org/28094>. Reported by Ricardo Wurmus <rekado@elephly.net>. * src/cuirass/database.scm (SQLITE_CONSTRAINT) (SQLITE_CONSTRAINT_PRIMARYKEY): New variables. (db-add-build): Catch 'sqlite-error, and swallow SQLITE_CONSTRAINT_PRIMARYKEY errors. * tests/database.scm ("db-add-build"): New test.
* cuirass: Fix Guile current-processor-count deprecation warnings.Mathieu Othacehe2017-08-02
| | | | | | | | | When current-processor-count is used without (ice-9 threads) being used, Guile complains with the following warning: Import (ice-9 threads) to have access to `current-processor-count'. * src/cuirass/base.scm: Use (ice-9 threads).