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. --- README | 18 ++++++++++- build-aux/guix-env | 9 ------ build-aux/guix.scm | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ configure.ac | 2 +- guix.scm | 82 -------------------------------------------------- 5 files changed, 106 insertions(+), 93 deletions(-) delete mode 100755 build-aux/guix-env create mode 100644 build-aux/guix.scm delete mode 100644 guix.scm diff --git a/README b/README index a0b3159..171b040 100644 --- a/README +++ b/README @@ -16,11 +16,27 @@ Cuirass currently depends on the following packages: A convenient way to install those dependencies is to install Guix and execute the following command: - ./build-aux/guix-env + $ guix environment -l build-aux/guix.scm This will build and enter an environment which provides all the necessary dependencies. +Build Instructions +================== + +When all the dependencies are available on you system, in order to build and +install Cuirass, you can proceed with the usual: + + $ ./configure && sudo make install + +An alternative way is to directly install Cuirass in your Guix profile, using: + + $ guix package -f build-aux/guix.scm + +To build it, but not install it, run: + + $ guix build -f build-aux/guix.scm + Example ======= 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"))))) diff --git a/configure.ac b/configure.ac index b37b01a..8a2c729 100644 --- a/configure.ac +++ b/configure.ac @@ -24,7 +24,7 @@ AC_INIT([Cuirass], AC_CONFIG_SRCDIR([bin/cuirass.in]) AC_CONFIG_AUX_DIR([build-aux]) AC_REQUIRE_AUX_FILE([git-version-gen]) -AC_REQUIRE_AUX_FILE([guix-env]) +AC_REQUIRE_AUX_FILE([guix.scm]) AC_REQUIRE_AUX_FILE([test-driver.scm]) AM_INIT_AUTOMAKE([foreign subdir-objects -Wall]) AM_SILENT_RULES([yes]) # enables silent rules by default diff --git a/guix.scm b/guix.scm deleted file mode 100644 index b02ad85..0000000 --- a/guix.scm +++ /dev/null @@ -1,82 +0,0 @@ -;;; guix.scm -- Guix package definition -;;; Copyright © 2016 Jan Nieuwenhuizen -;;; -;;; 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 . - -;;; Commentary: -;; -;; GNU Guix development package. To build and install, run: -;; -;; guix package -f guix.scm -;; -;; To build it, but not install it, run: -;; -;; guix build -f guix.scm -;; -;; To use as the basis for a development environment, run: -;; -;; guix environment -l guix.scm -;; -;;; Code: - -(use-modules (gnu packages) - (gnu packages autotools) - (gnu packages base) - (gnu packages databases) - (gnu packages guile) - (gnu packages package-management) - (gnu packages pkg-config) - (guix git-download) - (guix licenses) - (guix packages) - (guix build-system gnu)) - -(define-public cuirass - (package - (name "cuirass") - (version "0.0.ff7c3a1") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://notabug.org/mthl/cuirass") - (commit "master"))) - (sha256 - (base32 - "1jw3smw6axqr58ahkyjncygv0nk3hdrqkv0hm4awwj0hg5nl3d2p")))) - (build-system gnu-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'bootstrap - (lambda _ (zero? (system* "sh" "bootstrap"))))))) - (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake) - ("guile" ,guile-2.0) - ("guile-json" ,guile-json) - ("guile-sqlite3" ,guile-sqlite3) - ("guix" ,guix) - ("pkg-config" ,pkg-config) - ("sqlite" ,sqlite))) - (synopsis "Continuous integration system") - (description - "Cuirass is a continuous integration system which uses GNU Guix. It is -intended as replacement for Hydra.") - (home-page "https://notabug.org/mthl/cuirass") - (license gpl3+))) - -;; Return it here so 'guix build/environment/package' can consume it directly. -cuirass -- cgit v1.2.3