[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
01/02: store: 'run-with-store' initializes %CURRENT-TARGET-SYSTEM to #f.
From: |
Ludovic Courtès |
Subject: |
01/02: store: 'run-with-store' initializes %CURRENT-TARGET-SYSTEM to #f. |
Date: |
Tue, 07 Jul 2015 22:09:30 +0000 |
civodul pushed a commit to branch master
in repository guix.
commit a8afb9aed320d3d3ce026936cd5fc2bdd65b331b
Author: Ludovic Courtès <address@hidden>
Date: Tue Jul 7 22:57:54 2015 +0200
store: 'run-with-store' initializes %CURRENT-TARGET-SYSTEM to #f.
* guix/store.scm (run-with-store): Set %CURRENT-TARGET-SYSTEM to #f.
* tests/gexp.scm ("gexp->derivation vs. %current-target-system"): New test.
---
guix/store.scm | 6 +++++-
tests/gexp.scm | 11 +++++++++++
2 files changed, 16 insertions(+), 1 deletions(-)
diff --git a/guix/store.scm b/guix/store.scm
index 7b13334..39e5faf 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -996,8 +996,12 @@ permission bits are kept."
(system (%current-system)))
"Run MVAL, a monadic value in the store monad, in STORE, an open store
connection, and return the result."
+ ;; Initialize the dynamic bindings here to avoid bad surprises. The
+ ;; difficulty lies in the fact that dynamic bindings are resolved at
+ ;; bind-time and not at call time, which can be disconcerting.
(parameterize ((%guile-for-build guile-for-build)
- (%current-system system))
+ (%current-system system)
+ (%current-target-system #f))
(call-with-values (lambda ()
(run-with-state mval store))
(lambda (result store)
diff --git a/tests/gexp.scm b/tests/gexp.scm
index 3203166..5c9a4fc 100644
--- a/tests/gexp.scm
+++ b/tests/gexp.scm
@@ -636,6 +636,17 @@
file)))))
#:guile-for-build (package-derivation %store %bootstrap-guile))))
+(test-assert "gexp->derivation vs. %current-target-system"
+ (let ((mval (gexp->derivation "foo"
+ #~(begin
+ (mkdir #$output)
+ (foo #+gnu-make))
+ #:target #f)))
+ ;; The value of %CURRENT-TARGET-SYSTEM at bind-time should have no
+ ;; influence.
+ (parameterize ((%current-target-system "fooooo"))
+ (derivation? (run-with-store %store mval)))))
+
(test-assert "printer"
(string-match "^#<gexp \\(string-append .*#<package coreutils.*\
\"/bin/uname\"\\) [[:xdigit:]]+>$"