Package: guix-patches;
Reported by: Jan Nieuwenhuizen <janneke <at> gnu.org>
Date: Sun, 17 Sep 2017 20:14:04 UTC
Severity: normal
Tags: patch
Done: Jan Nieuwenhuizen <janneke <at> gnu.org>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: Jan Nieuwenhuizen <janneke <at> gnu.org> To: ludo <at> gnu.org (Ludovic Courtès) Cc: Mathieu Othacehe <m.othacehe <at> gmail.com>, 28487 <at> debbugs.gnu.org Subject: [bug#28487] [PATCH] cuirass: Add gnu-system build spec. Date: Tue, 26 Sep 2017 19:56:32 +0200
[Message part 1 (text/plain, inline)]
Ludovic Courtès writes: > I like this but… while we’re at it, could we arrange to have a single > file that works for both Hydra and Cuirass? I like that. It bothered me a bit to have similar files (not DRY) but didn't see how that could be easily avoided. > The main difference is that one returns an alist with symbols, whereas > the other returns an alist with keywords. That helps a lot...I kind of vaguely knew this but not well enough to see it! > If we could instead add, say, build-aux/hydra/gnu-system-cuirass.scm, > which simply loads gnu-system.scm and “converts” the resulting alist > appropriately, that would be awesome. I opted for build-aux/cuiras/gnu-cuirass.scm. > I understand this is not quite what you were asking for ;-), but it > would achieve the same result. Attached is a new proposal, untested. I will test it tomorrow, please shoot on things that are already visibly foo. One question: Assuming we intend to move to Cuirass and away from Hydra, do we want to reverse the translation: have Cuirass be the untranslated version and keep the translation to Hydra alive for as long as we need to support Hydra? Greetings, janneke
[0001-cuirass-Add-gnu-system-build-spec.patch (text/x-patch, inline)]
From 8f10a707b0bbf6949388d85de175ed98974a8df4 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen <janneke <at> gnu.org> Date: Sat, 16 Sep 2017 12:57:37 +0200 Subject: [PATCH] cuirass: Add gnu-system build spec. * build-aux/hydra/gnu-system.scm (hydra-jobs): Add subsets "hello" and list of packages: ("name[@version" ...). * build-aux/cuirass/gnu-system.scm: New file. * doc/guix.texi (Continuous Integration): Update example spec. --- build-aux/cuirass/gnu-system.scm | 36 ++++++++++++++++++++++++++++++++++++ build-aux/hydra/gnu-system.scm | 18 ++++++++++++++++++ doc/guix.texi | 4 ++-- 3 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 build-aux/cuirass/gnu-system.scm diff --git a/build-aux/cuirass/gnu-system.scm b/build-aux/cuirass/gnu-system.scm new file mode 100644 index 000000000..b545323f6 --- /dev/null +++ b/build-aux/cuirass/gnu-system.scm @@ -0,0 +1,36 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2017 Jan Nieuwenhuizen <janneke <at> 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") + +(define (cuirass-jobs store arguments) + "Return Cuirass jobs." + (pk (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)))) + (cons name (lambda _ (map symbol-alist-entry->keyword-alist-entry job))))) + +(define (symbol-alist-entry->keyword-alist-entry entry) + (cons (symbol->keyword (car entry)) (cdr entry))) diff --git a/build-aux/hydra/gnu-system.scm b/build-aux/hydra/gnu-system.scm index 73bd566f7..9968fc3da 100644 --- a/build-aux/hydra/gnu-system.scm +++ b/build-aux/hydra/gnu-system.scm @@ -270,6 +270,8 @@ valid." (define subset (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) @@ -340,6 +342,22 @@ 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))) + '())) + ((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))) diff --git a/doc/guix.texi b/doc/guix.texi index fff3fbd5f..c1391ee4b 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -15375,8 +15375,8 @@ packages, as prescribed in the @file{gnu-system.scm} example spec: cuirass "/tests/gnu-system.scm")) - (#:proc . hydra-jobs) - (#:arguments (subset . "hello")) + (#:proc . cuirass-jobs) + (#:arguments (subset . ("hello" "grep"))) (#:branch . "master")))) (service cuirass-service-type (cuirass-configuration -- Jan Nieuwenhuizen <janneke <at> gnu.org> | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com
[Message part 3 (text/plain, inline)]
-- Jan Nieuwenhuizen <janneke <at> gnu.org> | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.