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.
This commit is contained in:
Ludovic Courtès 2012-06-28 22:38:09 +02:00
parent e3ce5d709f
commit 900f726734
2 changed files with 21 additions and 6 deletions

View File

@ -33,11 +33,12 @@
;; Code: ;; Code:
(define %standard-inputs (define %standard-inputs
(compile-time-value
(map (lambda (name) (map (lambda (name)
(list name (nixpkgs-derivation name))) (list name (nixpkgs-derivation name)))
'("gnutar" "gzip" "bzip2" "xz" "diffutils" "patch" '("gnutar" "gzip" "bzip2" "xz" "diffutils" "patch"
"coreutils" "gnused" "gnugrep" "bash" "coreutils" "gnused" "gnugrep" "bash"
"gcc" "binutils" "gnumake" "glibc"))) "gcc" "binutils" "gnumake" "glibc"))))
(define* (gnu-build store name source inputs (define* (gnu-build store name source inputs
#:key (outputs '("out")) (configure-flags ''()) #:key (outputs '("out")) (configure-flags ''())

View File

@ -45,6 +45,7 @@
nixpkgs-derivation nixpkgs-derivation
define-record-type* define-record-type*
compile-time-value
memoize memoize
gnu-triplet->nix-system gnu-triplet->nix-system
%current-system)) %current-system))
@ -376,8 +377,21 @@ starting from the right of S."
;;; Nixpkgs. ;;; 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 (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) (define (nixpkgs-derivation attribute)
"Return the derivation path of ATTRIBUTE in Nixpkgs." "Return the derivation path of ATTRIBUTE in Nixpkgs."