summaryrefslogtreecommitdiff
path: root/guix
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2012-06-28 22:38:09 +0200
committerLudovic Courtès <ludo@gnu.org>2012-06-28 22:38:09 +0200
commit900f7267341da3281e937cb0b128b21975574867 (patch)
tree4c87f62a5a0c7a49d05b9776ec7668a4800450f9 /guix
parente3ce5d709f3ba6a3f3a94a24c20a9cd87e6bd07d (diff)
downloadguix-patches-900f7267341da3281e937cb0b128b21975574867.tar
guix-patches-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.
Diffstat (limited to 'guix')
-rw-r--r--guix/build-system/gnu.scm11
-rw-r--r--guix/utils.scm16
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."