Browse Source

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.
wip-grafts
Ludovic Courtès 10 years ago
parent
commit
900f726734
  1. 11
      guix/build-system/gnu.scm
  2. 16
      guix/utils.scm

11
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 ''())

16
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."

Loading…
Cancel
Save