~ruther/guix-local

00e219d1c98e55dd1b6c6af00ae73c23ed52583e — Ludovic Courtès 13 years ago e76bdf8
build: Produce (guix config) instead of using compile-time tricks.

* guix/config.scm.in: New file.
* guix/utils.scm: Use it.
  (%libgcrypt): Remove.
  (%nixpkgs-directory): Don't capture the compile-time $NIXPKGS; use
  %NIXPKGS instead.
  (nixpkgs-derivation): Use %NIX-INSTANTIATE.
* pre-inst-env.in (NIX_INSTANTIATE, NIXPKGS, LIBGCRYPT): Remove.

* configure.ac: Emit `guix/config.scm'.
* Makefile.am (GOBJECTS): Add `guix/config.go'.
  (nobase_nodist_guilemodule_DATA): Add `guix/config.scm'.
6 files changed, 61 insertions(+), 13 deletions(-)

M .gitignore
M Makefile.am
M configure.ac
A guix/config.scm.in
M guix/utils.scm
M pre-inst-env.in
M .gitignore => .gitignore +1 -0
@@ 48,3 48,4 @@ config.cache
/guix-download
/distro/packages/bootstrap/i686-linux/guile-bootstrap-2.0.6.tar.xz
/guix-package
/guix/config.scm

M Makefile.am => Makefile.am +2 -2
@@ 46,7 46,7 @@ MODULES =					\
  distro/packages/ld-wrapper.scm		\
  distro/packages/typesetting.scm

GOBJECTS = $(MODULES:%.scm=%.go)
GOBJECTS = $(MODULES:%.scm=%.go) guix/config.go

nobase_dist_guilemodule_DATA = $(MODULES)



@@ 112,7 112,7 @@ distro/packages/bootstrap/i686-linux/guile-bootstrap-2.0.6.tar.xz: guix/utils.go
	$(MKDIR_P) `dirname "$@"`
	$(DOWNLOAD_FILE) "$@" "93b537766dfab3ad287143523751e3ec02dd32d3ccaf88ad2d31c63158f342ee"

nobase_nodist_guilemodule_DATA = $(GOBJECTS)
nobase_nodist_guilemodule_DATA = $(GOBJECTS) guix/config.scm

TESTS =						\
  tests/builders.scm				\

M configure.ac => configure.ac +1 -0
@@ 79,6 79,7 @@ AC_SUBST([LIBGCRYPT])

AC_CONFIG_FILES([Makefile
                 po/Makefile.in
		 guix/config.scm
		 guix-build
		 guix-download
		 guix-package

A guix/config.scm.in => guix/config.scm.in +53 -0
@@ 0,0 1,53 @@
;;; Guix --- Nix package management from Guile.         -*- coding: utf-8 -*-
;;; Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
;;;
;;; 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 <http://www.gnu.org/licenses/>.

(define-module (guix config)
  #:export (%guix-package-name
            %guix-version
            %guix-bug-report-address
            %libgcrypt
            %nixpkgs
            %nix-instantiate))

;;; Commentary:
;;;
;;; Compile-time configuration of Guix.
;;;
;;; Code:

(define %guix-package-name
  "@PACKAGE_NAME@")

(define %guix-version
  "@PACKAGE_VERSION@")

(define %guix-bug-report-address
  "@PACKAGE_BUGREPORT@")

(define %libgcrypt
  "@LIBGCRYPT@")

(define %nixpkgs
  (if (string=? "@NIXPKGS@" "")
      #f
      "@NIXPKGS@"))

(define %nix-instantiate
  "@NIX_INSTANTIATE@")

;;; config.scm ends here

M guix/utils.scm => guix/utils.scm +3 -7
@@ 17,6 17,7 @@
;;; along with Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (guix utils)
  #:use-module (guix config)
  #:use-module (srfi srfi-1)
  #:use-module (srfi srfi-9)
  #:use-module (srfi srfi-26)


@@ 392,10 393,6 @@ starting from the right of S."
;;; Hash.
;;;

(define %libgcrypt
  ;; Name of the libgcrypt shared library.
  (compile-time-value (or (getenv "LIBGCRYPT") "libgcrypt")))

(define sha256
  (cond
   ((compile-time-value


@@ 458,13 455,12 @@ starting from the right of S."
(define %nixpkgs-directory
  (make-parameter
   ;; Capture the build-time value of $NIXPKGS.
   (or (compile-time-value (getenv "NIXPKGS"))
       (getenv "NIXPKGS"))))
   (or %nixpkgs (getenv "NIXPKGS"))))

(define* (nixpkgs-derivation attribute #:optional (system (%current-system)))
  "Return the derivation path of ATTRIBUTE in Nixpkgs."
  (let* ((p (open-pipe* OPEN_READ (or (getenv "NIX_INSTANTIATE")
                                      "nix-instantiate")
                                      %nix-instantiate)
                        "-A" attribute (%nixpkgs-directory)
                        "--argstr" "system" system))
         (l (read-line p))

M pre-inst-env.in => pre-inst-env.in +1 -4
@@ 41,10 41,7 @@ export PATH
# auto-compilation.

NIX_HASH="@NIX_HASH@"
NIX_INSTANTIATE="@NIX_INSTANTIATE@"
NIXPKGS="@NIXPKGS@"
LIBGCRYPT="@LIBGCRYPT@"

export NIX_HASH NIX_INSTANTIATE NIXPKGS LIBGCRYPT
export NIX_HASH

exec "$@"