From 206c30220683ff50f35277e8df4b9687848b7a0e Mon Sep 17 00:00:00 2001 From: Mathieu Lirzin Date: Sun, 25 Dec 2016 14:29:13 +0100 Subject: build: Add "build-aux/guix.scm". * guix.scm: Delete. * build-aux/guix-env: Likewise. * build-aux/guix.scm: New file. * configure.ac (AC_REQUIRE_AUX_FILE): Distribute it. * README : Document it. --- build-aux/guix-env | 9 ------ build-aux/guix.scm | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+), 9 deletions(-) delete mode 100755 build-aux/guix-env create mode 100644 build-aux/guix.scm (limited to 'build-aux') diff --git a/build-aux/guix-env b/build-aux/guix-env deleted file mode 100755 index 67d88f0..0000000 --- a/build-aux/guix-env +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh -# Build an environment that includes all the regular and development -# dependencies of Cuirass. - -set -e -x -guix environment --ad-hoc \ - autoconf automake bash coreutils findutils gawk git grep \ - guile guile-json guile-sqlite3 guix gzip less libgcrypt make \ - perl pkg-config sed sqlite tar "$@" diff --git a/build-aux/guix.scm b/build-aux/guix.scm new file mode 100644 index 0000000..dc50361 --- /dev/null +++ b/build-aux/guix.scm @@ -0,0 +1,88 @@ +;;;; guix.scm -- Guix package definition +;;; Copyright © 2016 Jan Nieuwenhuizen +;;; Copyright © 2016 Mathieu Lirzin +;;; +;;; This file is part of Cuirass. +;;; +;;; Cuirass 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. +;;; +;;; Cuirass 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 Cuirass. If not, see . + +(use-modules (ice-9 popen) + (ice-9 rdelim) + (gnu) + (guix) + (srfi srfi-1)) + +(define (keep-cuirass-file? file stat) + ;; Return #t if FILE in Cuirass repository must be kept, #f otherwise. FILE + ;; is an absolute file name and STAT is the result of 'lstat' applied to + ;; FILE. + (not (or (any (λ (str) (string-contains file str)) + '(".git" "autom4te" "Makefile.in" ".go" ".log" + "stamp-vti" ".dirstamp")) + (any (λ (str) (string-suffix? str file)) + '("trs""configure" "Makefile" "config.status" "pre-inst-env" + "aclocal.m4" "bin/cuirass" "bin/evaluate" "config.cache" + "guix.scm"))))) + +(define %srcdir + (or (current-source-directory) ".")) + +(define (git-version-gen) + ;; Return a string containing Cuirass version number. + (let* ((cmd "git-version-gen .version") + (port (open-input-pipe (string-append %srcdir "/" cmd))) + (str (read-line port))) + (close-pipe port) + str)) + +(package + (inherit (specification->package "cuirass")) + (version (git-version-gen)) + (source (local-file (dirname %srcdir) #:recursive? #t + #:select? keep-cuirass-file?)) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'disable-repo-tests + ;; Disable tests that use a connection to the Guix daemon. + (λ _ + (substitute* "Makefile.am" + (("tests/repo.scm \\\\") "\\")) + #t)) + (add-before 'configure 'bootstrap + (λ _ (zero? (system* "sh" "bootstrap")))) + (add-after 'install 'wrap-program + (lambda* (#:key inputs outputs #:allow-other-keys) + ;; Wrap the 'cuirass' command to refer to the right modules. + (let* ((out (assoc-ref outputs "out")) + (json (assoc-ref inputs "guile-json")) + (sqlite (assoc-ref inputs "guile-sqlite3")) + (guix (assoc-ref inputs "guix")) + (mods (string-append json "/share/guile/site/2.0:" + sqlite "/share/guile/site/2.0:" + guix "/share/guile/site/2.0"))) + (wrap-program (string-append out "/bin/cuirass") + `("GUILE_LOAD_PATH" ":" prefix (,mods)) + `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,mods))))))))) + (inputs + `(("guile" ,(specification->package "guile@2.0")) + ("guile-json" ,(specification->package "guile-json")) + ("guile-sqlite3" ,(specification->package "guile-sqlite3")) + ("guix" ,(specification->package "guix")))) + (native-inputs + `(("autoconf" ,(specification->package "autoconf")) + ("automake" ,(specification->package "automake")) + ("bash" ,(specification->package "bash")) + ("pkg-config" ,(specification->package "pkg-config")) + ("texinfo" ,(specification->package "texinfo"))))) -- cgit v1.2.3