~ruther/guix-local

c90ddc8f811496e9da9ea1e6832a662bf767d6d9 — Ludovic Courtès 11 years ago 4231f05
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.
2 files changed, 15 insertions(+), 2 deletions(-)

M guix/monads.scm
M tests/monads.scm
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"