~ruther/guix-local

66bc1d2aaf74fc7eb4ef9b3519c69bd37142ffb3 — Jan Nieuwenhuizen 8 years ago 408091d
cuirass: Add gnu-system build spec.

* build-aux/hydra/gnu-system.scm (hydra-jobs): Support subset "hello".
* build-aux/cuirass/gnu-system.scm: New file.
* doc/guix.texi (Continuous Integration): Update example spec.
3 files changed, 56 insertions(+), 9 deletions(-)

A build-aux/cuirass/gnu-system.scm
M build-aux/hydra/gnu-system.scm
M doc/guix.texi
A build-aux/cuirass/gnu-system.scm => build-aux/cuirass/gnu-system.scm +47 -0
@@ 0,0 1,47 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

;;;
;;; This file defines build jobs for the Cuirass continuation integration
;;; tool.
;;;

(include-from-path "build-aux/hydra/gnu-system.scm")

(use-modules ((guix licenses)
              #:select (license? license-name license-uri license-comment)))

(define (cuirass-jobs store arguments)
  "Return Cuirass jobs."
  (map hydra-job->cuirass-job (hydra-jobs store arguments)))

(define (hydra-job->cuirass-job hydra-job)
  (let ((name (car hydra-job))
        (job ((cdr hydra-job))))
    (lambda _ (acons #:job-name (symbol->string name)
                     (map symbol-alist-entry->keyword-alist-entry job)))))

(define (symbol-alist-entry->keyword-alist-entry entry)
  (cons (symbol->keyword (car entry)) (entry->sexp-entry (cdr entry))))

(define (entry->sexp-entry o)
  (match o
    ((? license?) `((name . (license-name o))
                    (uri . ,(license-uri o))
                    (comment . ,(license-comment o))))
    (_ o)))

M build-aux/hydra/gnu-system.scm => build-aux/hydra/gnu-system.scm +7 -0
@@ 270,6 270,7 @@ valid."
  (define subset
    (match (assoc-ref arguments 'subset)
      ("core" 'core)                              ; only build core packages
      ("hello" 'hello)                            ; only build hello
      (_ 'all)))                                  ; build everything

  (define (cross-jobs system)


@@ 340,6 341,12 @@ valid."
                                                 package system))
                                  %core-packages)
                             (cross-jobs system)))
                    ((hello)
                     ;; Build hello package only.
                     (if (string=? system (%current-system))
                         (let ((hello (specification->package "hello")))
                           (list (package-job store (job-name hello) hello system)))
                         '()))
                    (else
                     (error "unknown subset" subset))))
                %hydra-supported-systems)))

M doc/guix.texi => doc/guix.texi +2 -9
@@ 15367,15 15367,8 @@ packages, as prescribed in the @file{gnu-system.scm} example spec:
(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)
               (#:file . "build-aux/cuirass/gnu-system.scm")
               (#:proc . cuirass-jobs)
               (#:arguments (subset . "hello"))
               (#:branch . "master"))))
  (service cuirass-service-type