From ac4512897c6e08f26f87d9b7ddd9120436610513 Mon Sep 17 00:00:00 2001 From: Mathieu Lirzin Date: Wed, 27 Jul 2016 19:19:26 +0200 Subject: [PATCH] schema: Evaluations: Add 'revision' column. * src/schema.sql (Evaluations): Add 'revision' column. * src/cuirass/database.scm (db-add-evaluation): Adapt. All callers changed. --- bin/evaluate.in | 6 ++++-- src/cuirass/base.scm | 3 ++- src/cuirass/database.scm | 8 +++++--- src/schema.sql | 1 + tests/database.scm | 12 ++++++------ 5 files changed, 18 insertions(+), 12 deletions(-) diff --git a/bin/evaluate.in b/bin/evaluate.in index 6c5a53f..239bdcc 100644 --- a/bin/evaluate.in +++ b/bin/evaluate.in @@ -60,8 +60,10 @@ exec ${GUILE:-@GUILE@} --no-auto-compile -e main -s "$0" "$@" (let* ((proc (module-ref %user-module 'hydra-jobs)) (thunks (proc store (assq-ref spec #:arguments))) (db (db-open)) - (spec-id (assq-ref spec #:id)) - (eval-id (db-add-evaluation db spec-id))) + (commit (assq-ref spec #:current-commit)) + (eval `((#:specification . ,(assq-ref spec #:id)) + (#:revision . ,commit))) + (eval-id (db-add-evaluation db eval))) (pretty-print (map (λ (thunk) (let* ((job (call-with-time-display thunk)) diff --git a/src/cuirass/base.scm b/src/cuirass/base.scm index baf8909..52e0d00 100644 --- a/src/cuirass/base.scm +++ b/src/cuirass/base.scm @@ -147,7 +147,8 @@ if required." (compile (string-append (%package-cachedir) "/" (assq-ref spec #:name))) (with-store store - (let ((jobs (evaluate store db spec))) + (let* ((spec* (acons #:current-commit commit spec)) + (jobs (evaluate store db spec*))) (set-build-options store #:use-substitutes? #f) (build-packages store db jobs)))) (db-add-stamp db spec commit))) diff --git a/src/cuirass/database.scm b/src/cuirass/database.scm index b831833..2d2dfd2 100644 --- a/src/cuirass/database.scm +++ b/src/cuirass/database.scm @@ -155,9 +155,11 @@ INSERT INTO Derivations (derivation, job_name, evaluation)\ "Retrieve a job in database DB which corresponds to ID." (car (sqlite-exec db "SELECT * FROM Derivations WHERE derivation='~A';" id))) -(define (db-add-evaluation db spec-id) - (sqlite-exec db "INSERT INTO Evaluations (specification) VALUES ('~A');" - spec-id) +(define (db-add-evaluation db eval) + (sqlite-exec db "\ +INSERT INTO Evaluations (specification, revision) VALUES ('~A', '~A');" + (assq-ref eval #:specification) + (assq-ref eval #:revision)) (last-insert-rowid db)) (define-syntax-rule (with-database db body ...) diff --git a/src/schema.sql b/src/schema.sql index 725d145..a545da5 100644 --- a/src/schema.sql +++ b/src/schema.sql @@ -23,6 +23,7 @@ CREATE TABLE Stamps ( CREATE TABLE Evaluations ( id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, specification INTEGER NOT NULL, + revision TEXT NOT NULL, FOREIGN KEY (specification) REFERENCES Specifications (id) ); diff --git a/tests/database.scm b/tests/database.scm index eecef8b..8cc022a 100644 --- a/tests/database.scm +++ b/tests/database.scm @@ -59,12 +59,12 @@ (test-assert "sqlite-exec" (begin - (sqlite-exec (%db) - "INSERT INTO Evaluations (specification) VALUES (1);") - (sqlite-exec (%db) - "INSERT INTO Evaluations (specification) VALUES (2);") - (sqlite-exec (%db) - "INSERT INTO Evaluations (specification) VALUES (3);") + (sqlite-exec (%db) "\ +INSERT INTO Evaluations (specification, revision) VALUES (1, 1);") + (sqlite-exec (%db) "\ +INSERT INTO Evaluations (specification, revision) VALUES (2, 2);") + (sqlite-exec (%db) "\ +INSERT INTO Evaluations (specification, revision) VALUES (3, 3);") (sqlite-exec (%db) "SELECT * FROM Evaluations;"))) (test-equal "db-add-specification"