diff options
author | Ludovic Courtès <ludo@gnu.org> | 2012-06-28 22:38:09 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2012-06-28 22:38:09 +0200 |
commit | 900f7267341da3281e937cb0b128b21975574867 (patch) | |
tree | 4c87f62a5a0c7a49d05b9776ec7668a4800450f9 | |
parent | e3ce5d709f3ba6a3f3a94a24c20a9cd87e6bd07d (diff) | |
download | guix-900f7267341da3281e937cb0b128b21975574867.tar.gz |
Introduce `compile-time-value' and use it.
* guix/utils.scm (compile-time-value): New macro. (%nixpkgs-directory): Use it. * guix/build-system/gnu.scm (%standard-inputs): Likewise.
-rw-r--r-- | guix/build-system/gnu.scm | 11 | ||||
-rw-r--r-- | guix/utils.scm | 16 |
2 files changed, 21 insertions, 6 deletions
diff --git a/guix/build-system/gnu.scm b/guix/build-system/gnu.scm index 15996d4850..c0eef55ba9 100644 --- a/guix/build-system/gnu.scm +++ b/guix/build-system/gnu.scm @@ -33,11 +33,12 @@ ;; Code: (define %standard-inputs - (map (lambda (name) - (list name (nixpkgs-derivation name))) - '("gnutar" "gzip" "bzip2" "xz" "diffutils" "patch" - "coreutils" "gnused" "gnugrep" "bash" - "gcc" "binutils" "gnumake" "glibc"))) + (compile-time-value + (map (lambda (name) + (list name (nixpkgs-derivation name))) + '("gnutar" "gzip" "bzip2" "xz" "diffutils" "patch" + "coreutils" "gnused" "gnugrep" "bash" + "gcc" "binutils" "gnumake" "glibc")))) (define* (gnu-build store name source inputs #:key (outputs '("out")) (configure-flags ''()) diff --git a/guix/utils.scm b/guix/utils.scm index 05c04b87f1..bcea0193d0 100644 --- a/guix/utils.scm +++ b/guix/utils.scm @@ -45,6 +45,7 @@ nixpkgs-derivation define-record-type* + compile-time-value memoize gnu-triplet->nix-system %current-system)) @@ -376,8 +377,21 @@ starting from the right of S." ;;; Nixpkgs. ;;; +(define-syntax compile-time-value + (syntax-rules () + "Evaluate the given expression at compile time. The expression must +evaluate to a simple datum." + ((_ exp) + (let-syntax ((v (lambda (s) + (let ((val exp)) + (syntax-case s () + (_ #`'#,(datum->syntax s val))))))) + v)))) + (define %nixpkgs-directory - (make-parameter (getenv "NIXPKGS"))) + (make-parameter + ;; Capture the build-time value of $NIXPKGS. + (compile-time-value (getenv "NIXPKGS")))) (define (nixpkgs-derivation attribute) "Return the derivation path of ATTRIBUTE in Nixpkgs." |