M guix/monads.scm => guix/monads.scm +1 -2
@@ 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
M tests/monads.scm => tests/monads.scm +14 -0
@@ 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"