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.
master
Ludovic Courtès 2017-01-01 22:52:35 +01:00
parent fef494d27d
commit 8de938d59a
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
2 changed files with 24 additions and 20 deletions

View 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.

View 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
@ -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") '())