From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35805) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dwu7S-000865-Oe for guix-patches@gnu.org; Tue, 26 Sep 2017 13:58:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dwu7O-0006K9-NJ for guix-patches@gnu.org; Tue, 26 Sep 2017 13:58:06 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:53092) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dwu7O-0006Jy-I1 for guix-patches@gnu.org; Tue, 26 Sep 2017 13:58:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1dwu7O-0002uk-BP for guix-patches@gnu.org; Tue, 26 Sep 2017 13:58:02 -0400 Subject: [bug#28487] [PATCH] cuirass: Add gnu-system build spec. Resent-Message-ID: From: Jan Nieuwenhuizen References: <20170917201157.9802-1-janneke@gnu.org> <20170917201157.9802-5-janneke@gnu.org> <87zi9h27q3.fsf@gnu.org> Date: Tue, 26 Sep 2017 19:56:32 +0200 In-Reply-To: <87zi9h27q3.fsf@gnu.org> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\= \=\?utf-8\?Q\?s\?\= message of "Tue, 26 Sep 2017 10:18:44 +0200") Message-ID: <87mv5hqr73.fsf@gnu.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: Ludovic =?UTF-8?Q?Court=C3=A8s?= Cc: 28487@debbugs.gnu.org --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Ludovic Court=C3=A8s writes: > I like this but=E2=80=A6 while we=E2=80=99re at it, could we arrange to h= ave 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 i= t! > If we could instead add, say, build-aux/hydra/gnu-system-cuirass.scm, > which simply loads gnu-system.scm and =E2=80=9Cconverts=E2=80=9D the resu= lting 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 --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: inline; filename=0001-cuirass-Add-gnu-system-build-spec.patch Content-Transfer-Encoding: quoted-printable >From 8f10a707b0bbf6949388d85de175ed98974a8df4 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen 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-syste= m.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 =C2=A9 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") + +(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 packag= es + ("hello" 'hello) ; only build hello + (((? string?) (? string?) ...) 'list) ; only build selected li= st of packages (_ 'all))) ; build everything =20 (define (cross-jobs system) @@ -340,6 +342,22 @@ valid." package system)) %core-packages) (cross-jobs system))) + ((hello) + ;; Build hello package only. + (if (string=3D? 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=3D? system (%current-system)) + (let* ((names (assoc-ref arguments 'subset)) + (packages (map specification->package name= s))) + (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")) =20 - (#:proc . hydra-jobs) - (#:arguments (subset . "hello")) + (#:proc . cuirass-jobs) + (#:arguments (subset . ("hello" "grep"))) (#:branch . "master")))) (service cuirass-service-type (cuirass-configuration --=20 Jan Nieuwenhuizen | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar=C2=AE http://AvatarAcademy.com --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable --=20 Jan Nieuwenhuizen | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar=C2=AE http://AvatarAcademy.com --=-=-=--