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'.
This commit is contained in:
Ludovic Courtès 2012-11-03 21:07:52 +01:00
parent e76bdf8b87
commit 00e219d1c9
6 changed files with 61 additions and 13 deletions

1
.gitignore vendored
View File

@ -48,3 +48,4 @@ config.cache
/guix-download /guix-download
/distro/packages/bootstrap/i686-linux/guile-bootstrap-2.0.6.tar.xz /distro/packages/bootstrap/i686-linux/guile-bootstrap-2.0.6.tar.xz
/guix-package /guix-package
/guix/config.scm

View File

@ -46,7 +46,7 @@ MODULES = \
distro/packages/ld-wrapper.scm \ distro/packages/ld-wrapper.scm \
distro/packages/typesetting.scm distro/packages/typesetting.scm
GOBJECTS = $(MODULES:%.scm=%.go) GOBJECTS = $(MODULES:%.scm=%.go) guix/config.go
nobase_dist_guilemodule_DATA = $(MODULES) 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 "$@"` $(MKDIR_P) `dirname "$@"`
$(DOWNLOAD_FILE) "$@" "93b537766dfab3ad287143523751e3ec02dd32d3ccaf88ad2d31c63158f342ee" $(DOWNLOAD_FILE) "$@" "93b537766dfab3ad287143523751e3ec02dd32d3ccaf88ad2d31c63158f342ee"
nobase_nodist_guilemodule_DATA = $(GOBJECTS) nobase_nodist_guilemodule_DATA = $(GOBJECTS) guix/config.scm
TESTS = \ TESTS = \
tests/builders.scm \ tests/builders.scm \

View File

@ -79,6 +79,7 @@ AC_SUBST([LIBGCRYPT])
AC_CONFIG_FILES([Makefile AC_CONFIG_FILES([Makefile
po/Makefile.in po/Makefile.in
guix/config.scm
guix-build guix-build
guix-download guix-download
guix-package guix-package

53
guix/config.scm.in Normal file
View File

@ -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

View File

@ -17,6 +17,7 @@
;;; along with Guix. If not, see <http://www.gnu.org/licenses/>. ;;; along with Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix utils) (define-module (guix utils)
#:use-module (guix config)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:use-module (srfi srfi-9) #:use-module (srfi srfi-9)
#:use-module (srfi srfi-26) #:use-module (srfi srfi-26)
@ -392,10 +393,6 @@ starting from the right of S."
;;; Hash. ;;; Hash.
;;; ;;;
(define %libgcrypt
;; Name of the libgcrypt shared library.
(compile-time-value (or (getenv "LIBGCRYPT") "libgcrypt")))
(define sha256 (define sha256
(cond (cond
((compile-time-value ((compile-time-value
@ -458,13 +455,12 @@ starting from the right of S."
(define %nixpkgs-directory (define %nixpkgs-directory
(make-parameter (make-parameter
;; Capture the build-time value of $NIXPKGS. ;; Capture the build-time value of $NIXPKGS.
(or (compile-time-value (getenv "NIXPKGS")) (or %nixpkgs (getenv "NIXPKGS"))))
(getenv "NIXPKGS"))))
(define* (nixpkgs-derivation attribute #:optional (system (%current-system))) (define* (nixpkgs-derivation attribute #:optional (system (%current-system)))
"Return the derivation path of ATTRIBUTE in Nixpkgs." "Return the derivation path of ATTRIBUTE in Nixpkgs."
(let* ((p (open-pipe* OPEN_READ (or (getenv "NIX_INSTANTIATE") (let* ((p (open-pipe* OPEN_READ (or (getenv "NIX_INSTANTIATE")
"nix-instantiate") %nix-instantiate)
"-A" attribute (%nixpkgs-directory) "-A" attribute (%nixpkgs-directory)
"--argstr" "system" system)) "--argstr" "system" system))
(l (read-line p)) (l (read-line p))

View File

@ -41,10 +41,7 @@ export PATH
# auto-compilation. # auto-compilation.
NIX_HASH="@NIX_HASH@" NIX_HASH="@NIX_HASH@"
NIX_INSTANTIATE="@NIX_INSTANTIATE@"
NIXPKGS="@NIXPKGS@"
LIBGCRYPT="@LIBGCRYPT@"
export NIX_HASH NIX_INSTANTIATE NIXPKGS LIBGCRYPT export NIX_HASH
exec "$@" exec "$@"