diff options
author | Clément Lassieur <clement@lassieur.org> | 2018-08-11 20:30:11 +0200 |
---|---|---|
committer | Clément Lassieur <clement@lassieur.org> | 2018-08-27 15:38:44 +0200 |
commit | 8d40c49170971ad7bbf8b97336934dbb3d949fc1 (patch) | |
tree | fe272b71fe83409579418ed02564d4805e92f9ed /doc | |
parent | 4612a3a70f1e70afa4e0ce00e8cb1a7848dddf58 (diff) | |
download | cuirass-8d40c49170971ad7bbf8b97336934dbb3d949fc1.tar cuirass-8d40c49170971ad7bbf8b97336934dbb3d949fc1.tar.gz |
database: Add a Checkouts table.
It is used to know when a new evaluation must be triggered and to display
input changes.
* Makefile.am (dist_sql_DATA): Add 'src/sql/upgrade-3.sql'.
* bin/cuirass.in (main): Call DB-SET-EVALUATION-DONE at startup to clear
'in-progress' evaluations.
* bin/evaluate.in (input-checkout, format-checkouts): Rename '#:name' to
'#:input'.
* doc/cuirass.texi (Stamps): Remove section.
(Checkouts): New section.
* src/cuirass/base.scm (fetch-input, fetch-inputs, compile-checkouts): Rename
'#:name' to '#:input'.
(evaluate): Remove the COMMITS argument. Add an EVAL-ID argument. Don't call
DB-ADD-EVALUATION because it was called sooner. Remove the EVAL-ID argument
to AUGMENT-JOB because it's a closure.
(build-packages): Add an EVAL-ID argument. Call DB-SET-EVALUATION-DONE once
all the derivations are registered.
(process-specs): Replace the stamping mechanism by the primary key constraint
of the Checkouts table: call "evaluate" only when DB-ADD-EVALUATION is true,
which means that at least one checkout was added. Change the EVALUATE and
BUILD-PACKAGES arguments accordingly.
* src/cuirass/database.scm (db-add-stamp, db-get-stamp): Remove procedures.
(db-set-evaluations-done, db-set-evaluation-done): New exported procedure.
(db-add-checkout): New procedure that returns #f if a checkout with the same
revision already exists.
(db-add-evaluation): Replace the EVAL argument with a SPEC-NAME and a
CHECKOUTS arguments. Insert the evaluation only if at least one checkout was
inserted. Return #f otherwise.
(db-get-checkouts): New procedure.
(db-get-evaluations, db-get-evaluations-build-summary): Handle the
'in_progress' column, remove the 'commits' column. Return the result of
DB-GET-CHECKOUTS as part of the evaluation.
* src/cuirass/templates.scm (input-changes, evaluation-badges): New
procedures.
(evaluation-info-table): Rename "Commits" to "Input changes". Use
INPUT-CHANGES to display the input changes that triggered the evaluation. Use
EVALUATION-BADGES to display a message indicating that the evaluation is in
progress.
* src/schema.sql (Stamps): Remove table.
(Checkouts): New table.
(Evaluations): Remove the 'commits' column. Add an 'in_progress' column.
* src/sql/upgrade-3.sql: New file with SQL queries to upgrade the database.
* tests/database.scm (make-dummy-eval): Remove procedure.
(make-dummy-checkouts): New procedure.
("sqlite-exec"): Remove the 'commits' column. Add the 'in_progress' column.
("db-update-build-status!", "db-get-builds", "db-get-pending-derivations"):
Update the arguments of DB-ADD-EVALUATION accordingly.
* tests/http.scm (hash-table=?): Add support for lists of hash tables.
(evaluations-query-result): Replace '#:commits' with '#:checkouts'. Return a
list instead of returning one element, for symmetry.
("fill-db"): Add a new input so that the second checkout can refer to it.
Replace EVALUATION1 and EVALUATION2 with CHECKOUTS1 and CHECKOUTS2. Update
the arguments of DB-ADD-EVALUATION accordingly.
("/api/queue?nr=100"): Take the CAR of the EVALUATIONS-QUERY-RESULT list to
make it symmetrical with the other argument of HASH-TABLE=?.
Diffstat (limited to 'doc')
-rw-r--r-- | doc/cuirass.texi | 33 |
1 files changed, 25 insertions, 8 deletions
diff --git a/doc/cuirass.texi b/doc/cuirass.texi index b51cfad..08ca832 100644 --- a/doc/cuirass.texi +++ b/doc/cuirass.texi @@ -249,7 +249,7 @@ Cuirass uses a SQLite database to store information about jobs and past build results, but also to coordinate the execution of jobs. The database contains the following tables: @code{Specifications}, -@code{Inputs}, @code{Stamps}, @code{Evaluations}, @code{Builds} and +@code{Inputs}, @code{Checkouts}, @code{Evaluations}, @code{Builds} and @code{Outputs}. The purpose of each of these tables is explained below. @section Specifications @@ -334,16 +334,33 @@ When this integer field holds the value @code{1} Cuirass will skip compilation for the specified repository. @end table -@section Stamps -@cindex stamps, database +@section Checkouts +@cindex checkouts, database When a specification is processed, the repositories must be downloaded at a -certain revision as specified. The @code{Stamps} table stores the current -revisions for every specification when it is being processed. +certain revision as specified. The download is called a checkout. The +@code{Checkouts} table stores the new checkouts for every specification when +it is being processed. -The table only has two text columns: @code{specification}, which references a -specification from the @code{Specifications} table via the field @code{name}, -and @code{stamp}, which holds the revisions (space separated commit hashes). +The @code{Checkouts} table has the following columns: + +@table @code +@item specification +The specification associated with the checkout. + +@item revision +The revision of the checkout. Within the same specification, two checkouts +can't be identical: they can't have the same revision. + +@item evaluation +The evaluation that was triggered by the addition of that new checkout. + +@item input +The input associated with the checkout. + +@item directory +The directory into which the checkout was extracted. +@end table @section Evaluations @cindex evaluations, database |