summaryrefslogtreecommitdiff
path: root/src/cuirass/database.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2018-01-24 23:40:07 +0100
committerLudovic Courtès <ludo@gnu.org>2018-01-24 23:41:24 +0100
commit8675d6309b0576cdca7d5b607a358fd37982bfe7 (patch)
tree29e55f3231937ee2906a0426a494767f1a3e5466 /src/cuirass/database.scm
parent1d7f4f07d995e13093b8bf72c609c901f38b94c6 (diff)
downloadcuirass-8675d6309b0576cdca7d5b607a358fd37982bfe7.tar
cuirass-8675d6309b0576cdca7d5b607a358fd37982bfe7.tar.gz
database: 'db-update-build-status!' takes a #:log-file parameter.
* 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.
Diffstat (limited to 'src/cuirass/database.scm')
-rw-r--r--src/cuirass/database.scm17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/cuirass/database.scm b/src/cuirass/database.scm
index 4b6b062..539aa31 100644
--- a/src/cuirass/database.scm
+++ b/src/cuirass/database.scm
@@ -22,6 +22,7 @@
#:use-module (cuirass config)
#:use-module (cuirass utils)
#:use-module (ice-9 match)
+ #:use-module (ice-9 format)
#:use-module (ice-9 rdelim)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-19)
@@ -54,9 +55,8 @@
(define (sqlite-exec db msg . args)
"Wrap 'sqlite-prepare', 'sqlite-step', and 'sqlite-finalize'. Send message
-MSG to database DB. MSG can contain '~A' and '~S' escape characters which
-will be replaced by ARGS."
- (let* ((sql (apply simple-format #f msg args))
+MSG to database DB. MSG and ARGS are passed to 'format'."
+ (let* ((sql (apply format #f msg args))
(stmt (sqlite-prepare db sql))
(res (let loop ((res '()))
(let ((row (sqlite-step stmt)))
@@ -236,9 +236,10 @@ INSERT INTO Outputs (build, name, path) VALUES ('~A', '~A', '~A');"
(assq-ref build #:outputs))
build-id))
-(define (db-update-build-status! db drv status)
+(define* (db-update-build-status! db drv status #:key log-file)
"Update DB so that DRV's status is STATUS. This also updates the
-'starttime' or 'stoptime' fields."
+'starttime' or 'stoptime' fields. If LOG-FILE is true, record it as the build
+log file for DRV."
(define now
(time-second (current-time time-utc)))
@@ -246,9 +247,9 @@ INSERT INTO Outputs (build, name, path) VALUES ('~A', '~A', '~A');"
(sqlite-exec db "UPDATE Builds SET starttime='~A', status='~A' \
WHERE derivation='~A';"
now status drv)
- (sqlite-exec db "UPDATE Builds SET stoptime='~A', status='~A' \
-WHERE derivation='~A';"
- now status drv)))
+ (sqlite-exec db "UPDATE Builds SET stoptime='~A', \
+status='~A'~@[, log='~A'~] WHERE derivation='~A';"
+ now status log-file drv)))
(define (db-get-outputs db build-id)
"Retrieve the OUTPUTS of the build identified by BUILD-ID in DB database."