From 8c0e5b1e8770f47abf9aa8496e21ca5f0c7b9ae8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sun, 18 Nov 2012 18:35:26 +0100 Subject: [PATCH] build: Add `hydra.scm'. * hydra.scm: New file. * Makefile.am (EXTRA_DIST): Add it. --- Makefile.am | 1 + hydra.scm | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 hydra.scm diff --git a/Makefile.am b/Makefile.am index 54f982838a..98f8ac9f0b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -167,6 +167,7 @@ EXTRA_DIST = \ ROADMAP \ TODO \ .dir-locals.el \ + hydra.scm \ build-aux/download.scm \ srfi/srfi-64.scm \ srfi/srfi-64.upstream.scm \ diff --git a/hydra.scm b/hydra.scm new file mode 100644 index 0000000000..4016a69d75 --- /dev/null +++ b/hydra.scm @@ -0,0 +1,57 @@ +;;; Guix --- Nix package management from Guile. -*- coding: utf-8 -*- +;;; Copyright (C) 2012 Ludovic Courtès +;;; +;;; This file is part of Guix. +;;; +;;; 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. +;;; +;;; 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 Guix. If not, see . + +;;; +;;; This file defines build jobs for the Hydra continuation integration +;;; tool. +;;; + +(use-modules (guix store) + (guix packages) + (distro) + (distro packages guile) + (ice-9 match)) + +(define (package->alist store package system) + "Convert PACKAGE to an alist suitable for Hydra." + `((derivation . ,(package-derivation store package system)) + (description . ,(package-synopsis package)) + (long-description . ,(package-description package)) + (license . ,(package-license package)) + (maintainers . ("gnu-system-discuss@gnu.org")))) + +(define (package-job store job-name package system) + "Return a job called JOB-NAME that builds PACKAGE on SYSTEM." + `(,job-name . ,(package->alist store package system))) + +(define (hydra-jobs store arguments) + "Return Hydra jobs." + (define system + (assoc-ref arguments "system")) + + (map (match-lambda + ((job-name (? package? package)) + (package-job store job-name package system)) + ((job-name (? string? name)) + (package-job store job-name + (car (find-packages-by-name name)) + system))) + `((hello "hello") + (gmp "gmp") + (guile_2_0 ,guile-2.0) + (guile_1_8 ,guile-1.8))))