summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2014-08-17 21:08:06 +0200
committerLudovic Courtès <ludo@gnu.org>2014-08-17 21:08:06 +0200
commitc90ddc8f811496e9da9ea1e6832a662bf767d6d9 (patch)
tree59e5ab505210a6190517292efc2ff49015b55e59
parent4231f05bbc29e4e3deffc9106a5faf14920979d3 (diff)
downloadguix-c90ddc8f811496e9da9ea1e6832a662bf767d6d9.tar.gz
monads: 'package-file' uses '%current-system' at '>>=' time.
* guix/monads.scm (package-file): Leave #:system to #f by default.
* tests/monads.scm ("package-file, default system"): New test.
-rw-r--r--guix/monads.scm3
-rw-r--r--tests/monads.scm14
2 files changed, 15 insertions, 2 deletions
diff --git a/guix/monads.scm b/guix/monads.scm
index 8909312a87..c714941a0c 100644
--- a/guix/monads.scm
+++ b/guix/monads.scm
@@ -379,8 +379,7 @@ permission bits are kept."
 (define* (package-file package
                        #:optional file
                        #:key
-                       (system (%current-system))
-                       (output "out") target)
+                       system (output "out") target)
   "Return as a monadic value the absolute file name of FILE within the
 OUTPUT directory of PACKAGE.  When FILE is omitted, return the name of the
 OUTPUT directory of PACKAGE.  When TARGET is true, use it as a
diff --git a/tests/monads.scm b/tests/monads.scm
index 78a014ea6a..b814b0f7c5 100644
--- a/tests/monads.scm
+++ b/tests/monads.scm
@@ -109,6 +109,20 @@
                       guile)))
     #:guile-for-build (package-derivation %store %bootstrap-guile)))
 
+(test-assert "package-file, default system"
+  ;; The default system should be the one at '>>=' time, not the one at
+  ;; invocation time.  See <http://bugs.gnu.org/18002>.
+  (run-with-store %store
+    (mlet* %store-monad
+        ((system -> (%current-system))
+         (file   (parameterize ((%current-system "foobar64-linux"))
+                   (package-file coreutils "bin/ls")))
+         (cu     (package->derivation coreutils)))
+      (return (string=? file
+                        (string-append (derivation->output-path cu)
+                                       "/bin/ls"))))
+    #:guile-for-build (package-derivation %store %bootstrap-guile)))
+
 (test-assert "package-file + package->cross-derivation"
   (run-with-store %store
     (mlet* %store-monad ((file (package-file coreutils "bin/ls"