diff options
author | Ludovic Courtès <ludo@gnu.org> | 2015-07-07 22:57:54 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-07-08 00:06:45 +0200 |
commit | a8afb9aed320d3d3ce026936cd5fc2bdd65b331b (patch) | |
tree | 00b79e413e97502ab5bf471bbdba2ce17092220f | |
parent | d7facc660394ce5575b554abdb19a70f0a389082 (diff) | |
download | guix-a8afb9aed320d3d3ce026936cd5fc2bdd65b331b.tar.gz |
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.
-rw-r--r-- | guix/store.scm | 6 | ||||
-rw-r--r-- | tests/gexp.scm | 11 |
2 files changed, 16 insertions, 1 deletions
diff --git a/guix/store.scm b/guix/store.scm index 7b13334952..39e5faf6c8 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 32031663f5..5c9a4fc031 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:]]+>$" |