From 1b58f1c8ba6f2ccf7e19c6b022b7567a6841a28b Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 8 Sep 2017 12:47:55 +0200 Subject: build: Use -Wmacro-use-before-definition. * build-aux/compile-all.scm (warnings): Add 'macro-use-before-definition'. --- build-aux/compile-all.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'build-aux') diff --git a/build-aux/compile-all.scm b/build-aux/compile-all.scm index 147bb80196..fe25c5d065 100644 --- a/build-aux/compile-all.scm +++ b/build-aux/compile-all.scm @@ -27,7 +27,8 @@ ;; FIXME: 'format' is missing because it reports "non-literal format ;; strings" due to the fact that we use 'G_' instead of '_'. We'll need ;; help from Guile to solve this. - '(unsupported-warning unbound-variable arity-mismatch)) + '(unsupported-warning unbound-variable arity-mismatch + macro-use-before-definition)) ;new in 2.2 (define host (getenv "host")) -- cgit v1.2.3 From 66bc1d2aaf74fc7eb4ef9b3519c69bd37142ffb3 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Sat, 16 Sep 2017 12:57:37 +0200 Subject: 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. --- build-aux/cuirass/gnu-system.scm | 47 ++++++++++++++++++++++++++++++++++++++++ build-aux/hydra/gnu-system.scm | 7 ++++++ doc/guix.texi | 11 ++-------- 3 files changed, 56 insertions(+), 9 deletions(-) create mode 100644 build-aux/cuirass/gnu-system.scm (limited to 'build-aux') diff --git a/build-aux/cuirass/gnu-system.scm b/build-aux/cuirass/gnu-system.scm new file mode 100644 index 0000000000..c88267b9d8 --- /dev/null +++ b/build-aux/cuirass/gnu-system.scm @@ -0,0 +1,47 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2017 Jan Nieuwenhuizen +;;; +;;; 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 . + +;;; +;;; 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))) diff --git a/build-aux/hydra/gnu-system.scm b/build-aux/hydra/gnu-system.scm index 73bd566f7c..8f97ab934f 100644 --- a/build-aux/hydra/gnu-system.scm +++ b/build-aux/hydra/gnu-system.scm @@ -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))) diff --git a/doc/guix.texi b/doc/guix.texi index fff3fbd5fd..5a32476bd3 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -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 -- cgit v1.2.3 From 516b53828e90018126b79e7600cae9aa531e06d7 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Wed, 27 Sep 2017 22:04:44 +0200 Subject: cuirass: Support subset with list of package[@version]. * build-aux/hydra/gnu-system.scm (hydra-jobs): Support subset of packages: ("name[@version" ...). --- build-aux/hydra/gnu-system.scm | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'build-aux') diff --git a/build-aux/hydra/gnu-system.scm b/build-aux/hydra/gnu-system.scm index 8f97ab934f..146d929f9b 100644 --- a/build-aux/hydra/gnu-system.scm +++ b/build-aux/hydra/gnu-system.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès +;;; Copyright © 2017 Jan Nieuwenhuizen ;;; ;;; This file is part of GNU Guix. ;;; @@ -271,6 +272,7 @@ valid." (match (assoc-ref arguments 'subset) ("core" 'core) ; only build core packages ("hello" 'hello) ; only build hello + (((? string?) (? string?) ...) 'list) ; only build selected list of packages (_ 'all))) ; build everything (define (cross-jobs system) @@ -347,6 +349,16 @@ valid." (let ((hello (specification->package "hello"))) (list (package-job store (job-name hello) hello system))) '())) + ((list) + ;; Build selected list of packages only. + (if (string=? system (%current-system)) + (let* ((names (assoc-ref arguments 'subset)) + (packages (map specification->package names))) + (map (lambda (package) + (package-job store (job-name package) + package system)) + packages)) + '())) (else (error "unknown subset" subset)))) %hydra-supported-systems))) -- cgit v1.2.3 From 454caca8e6db34d7777ddb4ba84680d41e381b32 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Wed, 27 Sep 2017 22:44:56 +0200 Subject: cuirass: Add 'cuirass-jobs.scm' target to compute the Cuirass jobs. * build-aux/hydra/evaluate.scm: Support "cuirass" command line option. * Makefile.am (cuirass-jobs.scm): New target. --- Makefile.am | 10 ++++++++++ build-aux/hydra/evaluate.scm | 13 +++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) (limited to 'build-aux') diff --git a/Makefile.am b/Makefile.am index 1f014b7c01..d054f78791 100644 --- a/Makefile.am +++ b/Makefile.am @@ -7,6 +7,7 @@ # Copyright © 2017 Mathieu Othacehe # Copyright © 2017 Leo Famulari # Copyright © 2017 Ricardo Wurmus +# Copyright © 2017 Jan Nieuwenhuizen # # This file is part of GNU Guix. # @@ -711,6 +712,15 @@ hydra-jobs.scm: $(GOBJECTS) "$(top_srcdir)/build-aux/hydra/gnu-system.scm" > "$@.tmp" $(AM_V_at)mv "$@.tmp" "$@" +# Compute the Cuirass jobs and write them in the target file. +cuirass-jobs.scm: $(GOBJECTS) + $(AM_V_at)$(MKDIR_P) "`dirname "$@"`" + $(AM_V_GEN)$(top_builddir)/pre-inst-env "$(GUILE)" \ + "$(top_srcdir)/build-aux/hydra/evaluate.scm" \ + "$(top_srcdir)/build-aux/cuirass/gnu-system.scm" \ + cuirass > "$@.tmp" + $(AM_V_at)mv "$@.tmp" "$@" + .PHONY: gen-ChangeLog gen-AUTHORS gen-tarball-version .PHONY: assert-no-store-file-names assert-binaries-available .PHONY: assert-final-inputs-self-contained diff --git a/build-aux/hydra/evaluate.scm b/build-aux/hydra/evaluate.scm index cc6a4b9492..604022abcf 100644 --- a/build-aux/hydra/evaluate.scm +++ b/build-aux/hydra/evaluate.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016, 2017 Ludovic Courtès +;;; Copyright © 2017 Jan Nieuwenhuizen ;;; ;;; This file is part of GNU Guix. ;;; @@ -70,7 +71,7 @@ Otherwise return THING." ;; Without further ado... (match (command-line) - ((command file) + ((command file cuirass? ...) ;; Load FILE, a Scheme file that defines Hydra jobs. (let ((port (current-output-port))) (save-module-excursion @@ -96,7 +97,11 @@ Otherwise return THING." ;; Call the entry point of FILE and print the resulting job sexp. (pretty-print - (match ((module-ref %user-module 'hydra-jobs) store '()) + (match ((module-ref %user-module + (if (equal? cuirass? "cuirass") + 'cuirass-jobs + 'hydra-jobs)) + store '()) (((names . thunks) ...) (map (lambda (job thunk) (format (current-error-port) "evaluating '~a'... " job) @@ -107,8 +112,8 @@ Otherwise return THING." names thunks))) port)))) ((command _ ...) - (format (current-error-port) "Usage: ~a FILE -Evaluate the Hydra jobs defined in FILE.~%" + (format (current-error-port) "Usage: ~a FILE [cuirass] +Evaluate the Hydra or Cuirass jobs defined in FILE.~%" command) (exit 1))) -- cgit v1.2.3