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 . + (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"