summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathieu Lirzin <mthl@gnu.org>2016-12-25 14:29:13 +0100
committerMathieu Lirzin <mthl@gnu.org>2016-12-28 19:11:43 +0100
commit206c30220683ff50f35277e8df4b9687848b7a0e (patch)
tree8806e1637d657092445ac6f317ddbe811d03089e
parent145077f160b4951da00527b082f81e8412ba8d32 (diff)
downloadcuirass-206c30220683ff50f35277e8df4b9687848b7a0e.tar
cuirass-206c30220683ff50f35277e8df4b9687848b7a0e.tar.gz
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 <Build Instructions>: Document it.
-rw-r--r--README18
-rwxr-xr-xbuild-aux/guix-env9
-rw-r--r--build-aux/guix.scm88
-rw-r--r--configure.ac2
-rw-r--r--guix.scm82
5 files changed, 106 insertions, 93 deletions
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 <janneke@gnu.org>
+;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(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 <janneke@gnu.org>
-;;;
-;;; 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 <http://www.gnu.org/licenses/>.
-
-;;; 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