services: cuirass: Allow for gexps in specifications.
authorLudovic Courtès <ludo@gnu.org>
Sun, 1 Jan 2017 21:52:35 +0000 (22:52 +0100)
committerLudovic Courtès <ludo@gnu.org>
Sun, 1 Jan 2017 22:30:30 +0000 (23:30 +0100)
* 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.

doc/guix.texi
gnu/services/cuirass.scm

index 42fb439..45657ed 100644 (file)
@@ -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.
index 67265e5..4dc802f 100644 (file)
@@ -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
             (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") '())