summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2017-01-01 22:52:35 +0100
committerLudovic Courtès <ludo@gnu.org>2017-01-01 23:30:30 +0100
commit8de938d59aa48a43b71d9fa687d762c807f59136 (patch)
tree350fb689bef806e162c5afaaa9dd6c9fea981fc4
parentfef494d27d52149812365e59d34e1ac3a97396c0 (diff)
services: cuirass: Allow for gexps in specifications.
* gnu/services/cuirass.scm (<cuirass-configuration>)[specifications]: Change default value to #~'(). (cuirass-shepherd-service): Remove conditional for "--specifications". Use 'scheme-file' instead of 'plain-file'. Change file name to "cuirass-specs.scm". * doc/guix.texi (Continuous Integration): Change the example to use a gexp where #:file refers to a file within Cuirass. Adjust documentation.
-rw-r--r--doc/guix.texi31
-rw-r--r--gnu/services/cuirass.scm13
2 files changed, 24 insertions, 20 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 42fb439668..45657ed2cf 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -13,7 +13,7 @@
@set OPENPGP-SIGNING-KEY-ID BCA689B636553801C3C62150197A5888235FACAC
@copying
-Copyright @copyright{} 2012, 2013, 2014, 2015, 2016 Ludovic Courtès@*
+Copyright @copyright{} 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès@*
Copyright @copyright{} 2013, 2014, 2016 Andreas Enge@*
Copyright @copyright{} 2013 Nikita Karetnikov@*
Copyright @copyright{} 2014, 2015, 2016 Alex Kost@*
@@ -12028,16 +12028,22 @@ defining a build job based on a specification that can be found in
Cuirass source tree.
@example
-(let ((spec `((#:name . "guix")
- (#:url . "git://git.savannah.gnu.org/guix.git")
- (#:load-path . ".")
- ;; Adapt to a valid absolute file name.
- (#:file . "/.../cuirass/tests/gnu-system.scm")
- (#:proc . hydra-jobs)
- (#:arguments (subset . "hello"))
- (#:branch . "master"))))
+(let ((spec #~((#:name . "guix")
+ (#:url . "git://git.savannah.gnu.org/guix.git")
+ (#:load-path . ".")
+
+ ;; Here we must provide an absolute file name.
+ ;; We take jobs from one of the examples provided
+ ;; by Cuirass.
+ (#:file . #$(file-append
+ cuirass
+ "/tests/gnu-system.scm"))
+
+ (#:proc . hydra-jobs)
+ (#:arguments (subset . "hello"))
+ (#:branch . "master"))))
(cuirass-service #:config (cuirass-configuration
- (specifications (list spec)))))
+ (specifications #~(list #$spec)))))
@end example
While information related to build jobs are located directly in the
@@ -12068,8 +12074,9 @@ Cuirass jobs.
Location of sqlite database which contains the build results and previously
added specifications.
-@item @code{specifications} (default: @code{'()})
-A list of specifications, where a specification is an association list
+@item @code{specifications} (default: @code{#~'()})
+A gexp (@pxref{G-Expressions}) that evaluates to a list of specifications,
+where a specification is an association list
(@pxref{Associations Lists,,, guile, GNU Guile Reference Manual}) whose
keys are keywords (@code{#:keyword-example}) as shown in the example
above.
diff --git a/gnu/services/cuirass.scm b/gnu/services/cuirass.scm
index 67265e506e..4dc802fc8c 100644
--- a/gnu/services/cuirass.scm
+++ b/gnu/services/cuirass.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
-;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -57,8 +57,8 @@
(default 60))
(database cuirass-configuration-database ;string (file-name)
(default "/var/run/cuirass/cuirass.db"))
- (specifications cuirass-configuration-specifications ;specification-alist
- (default '()))
+ (specifications cuirass-configuration-specifications
+ (default #~'())) ;gexp that evaluates to specification-alist
(use-substitutes? cuirass-configuration-use-substitutes? ;boolean
(default #f))
(one-shot? cuirass-configuration-one-shot? ;boolean
@@ -85,11 +85,8 @@
(start #~(make-forkexec-constructor
(list (string-append #$cuirass "/bin/cuirass")
"--cache-directory" #$cache-directory
- #$@(if (null? specs)
- '()
- (let ((str (format #f "'~S" specs)))
- (list "--specifications"
- (plain-file "specs.scm" str))))
+ "--specifications"
+ #$(scheme-file "cuirass-specs.scm" specs)
"--database" #$database
"--interval" #$(number->string interval)
#$@(if use-substitutes? '("--use-substitutes") '())