build: Capture configure-time settings in (guix config).

* configure.ac: Compute and substitute `guix_localstatedir'.
* m4/guix.m4: Substitute `guix_system'.
* guix/config.scm.in (%store-directory, %store-directory, %system): New
  variables.
* guix/store.scm (%nix-state-dir): Remove.
  (%default-socket-path): Use %STATE-DIRECTORY as the default.
  (%store-prefix): Use %STORE-DIRECTORY as the default.
* guix/utils.scm (%current-system): Default to %SYSTEM.
This commit is contained in:
Ludovic Courtès 2012-12-05 23:02:47 +01:00
parent 69cfce50db
commit d8eea3d2bc
5 changed files with 24 additions and 5 deletions

View file

@ -30,6 +30,11 @@ AC_ARG_WITH(store-dir,
[storedir="/nix/store"]) [storedir="/nix/store"])
AC_SUBST(storedir) AC_SUBST(storedir)
# Prepare a version of $localstatedir that does not contain references
# to shell variables.
guix_localstatedir="`eval echo $localstatedir | sed -e "s|NONE|/usr/local|g"`"
AC_SUBST([guix_localstatedir])
PKG_CHECK_MODULES([GUILE], [guile-2.0]) PKG_CHECK_MODULES([GUILE], [guile-2.0])
AC_PATH_PROG([GUILE], [guile]) AC_PATH_PROG([GUILE], [guile])
AC_PATH_PROG([GUILD], [guild]) AC_PATH_PROG([GUILD], [guild])

View file

@ -20,6 +20,9 @@ (define-module (guix config)
#:export (%guix-package-name #:export (%guix-package-name
%guix-version %guix-version
%guix-bug-report-address %guix-bug-report-address
%store-directory
%state-directory
%system
%libgcrypt %libgcrypt
%nixpkgs %nixpkgs
%nix-instantiate)) %nix-instantiate))
@ -39,6 +42,15 @@ (define %guix-version
(define %guix-bug-report-address (define %guix-bug-report-address
"@PACKAGE_BUGREPORT@") "@PACKAGE_BUGREPORT@")
(define %store-directory
"@storedir@")
(define %state-directory
"@guix_localstatedir@")
(define %system
"@guix_system@")
(define %libgcrypt (define %libgcrypt
"@LIBGCRYPT@") "@LIBGCRYPT@")

View file

@ -18,6 +18,7 @@
(define-module (guix store) (define-module (guix store)
#:use-module (guix utils) #:use-module (guix utils)
#:use-module (guix config)
#:use-module (rnrs bytevectors) #:use-module (rnrs bytevectors)
#:use-module (rnrs io ports) #:use-module (rnrs io ports)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
@ -111,10 +112,9 @@ (define-enumerate-type hash-algo
(sha1 2) (sha1 2)
(sha256 3)) (sha256 3))
(define %nix-state-dir
(or (getenv "NIX_STATE_DIR") "/nix/var/nix"))
(define %default-socket-path (define %default-socket-path
(string-append %nix-state-dir "/daemon-socket/socket")) (string-append (or (getenv "NIX_STATE_DIR") %state-directory)
"/daemon-socket/socket"))
;; serialize.cc ;; serialize.cc
@ -439,7 +439,7 @@ (define-operation (add-indirect-root (string file-name))
(define %store-prefix (define %store-prefix
;; Absolute path to the Nix store. ;; Absolute path to the Nix store.
(make-parameter (or (and=> (getenv "NIX_STORE_DIR") canonicalize-path) (make-parameter (or (and=> (getenv "NIX_STORE_DIR") canonicalize-path)
"/nix/store"))) %store-directory)))
(define (store-path? path) (define (store-path? path)
"Return #t if PATH is a store path." "Return #t if PATH is a store path."

View file

@ -342,7 +342,8 @@ (define (gnu-triplet->nix-system triplet)
(define %current-system (define %current-system
;; System type as expected by Nix, usually ARCHITECTURE-KERNEL. ;; System type as expected by Nix, usually ARCHITECTURE-KERNEL.
(make-parameter (gnu-triplet->nix-system %host-type))) ;; By default, this is equal to (gnu-triplet->nix-system %host-type).
(make-parameter %system))
(define (package-name->name+version name) (define (package-name->name+version name)
"Given NAME, a package name like \"foo-0.9.1b\", return two values: "Given NAME, a package name like \"foo-0.9.1b\", return two values:

View file

@ -61,4 +61,5 @@ AC_DEFUN([GUIX_SYSTEM_TYPE], [
# `darwin10.2.0', etc. # `darwin10.2.0', etc.
guix_system="$machine_name-`echo $host_os | "$SED" -e's/@<:@0-9.@:>@*$//g'`";; guix_system="$machine_name-`echo $host_os | "$SED" -e's/@<:@0-9.@:>@*$//g'`";;
esac]) esac])
AC_SUBST([guix_system])
]) ])