~ruther/guix-local

80963744a242257921917df5a901dc343d3a93db — Ludovic Courtès 6 years ago f52fbf7
store: 'mapm/accumulate-builds' preserves '%current-target-system'.

Fixes <https://bugs.gnu.org/41182>.

* guix/store.scm (mapm/accumulate-builds): Pass #:system and #:target to
'run-with-store'.
* tests/store.scm ("mapm/accumulate-builds, %current-target-system"):
New test.
* tests/guix-pack.sh: Add 'guix pack -d --target' test.
3 files changed, 28 insertions(+), 1 deletions(-)

M guix/store.scm
M tests/guix-pack.sh
M tests/store.scm
M guix/store.scm => guix/store.scm +3 -1
@@ 1899,7 1899,9 @@ coalesce them into a single call."
    (values (map/accumulate-builds store
                                   (lambda (obj)
                                     (run-with-store store
                                       (mproc obj)))
                                       (mproc obj)
                                       #:system (%current-system)
                                       #:target (%current-target-system)))
                                   lst)
            store)))


M tests/guix-pack.sh => tests/guix-pack.sh +8 -0
@@ 40,6 40,14 @@ trap 'chmod -Rf +w "$test_directory"; rm -rf "$test_directory"' EXIT
drv="`guix pack coreutils -d --no-grafts`"
guix gc -R "$drv" | grep "`guix build coreutils -d --no-grafts`"

# Compute the derivation of a cross-compiled pack.  Make sure it refers to the
# cross-compiled package and not to the native package.
drv="`guix pack idutils -d --no-grafts --target=arm-linux-gnueabihf`"
guix gc -R "$drv" | \
    grep "`guix build idutils --target=arm-linux-gnueabihf -d --no-grafts`"
if guix gc -R "$drv" | grep "`guix build idutils -d --no-grafts`";
then false; else true; fi

# Build a tarball with no compression.
guix pack --compression=none --bootstrap guile-bootstrap


M tests/store.scm => tests/store.scm +17 -0
@@ 475,6 475,23 @@
      (run-with-store %store
        (mapm/accumulate-builds built-derivations `((,d1) (,d2)))))))

(test-equal "mapm/accumulate-builds, %current-target-system"
  (make-list 2 '("i586-pc-gnu" "i586-pc-gnu"))
  ;; Both the 'mapm' and 'mapm/accumulate-builds' procedures should see the
  ;; right #:target.
  (run-with-store %store
    (mlet %store-monad ((lst1 (mapm %store-monad
                                    (lambda _
                                      (current-target-system))
                                    '(a b)))
                        (lst2 (mapm/accumulate-builds
                               (lambda _
                                 (current-target-system))
                               '(a b))))
      (return (list lst1 lst2)))
    #:system system
    #:target "i586-pc-gnu"))

(test-assert "topologically-sorted, one item"
  (let* ((a (add-text-to-store %store "a" "a"))
         (b (add-text-to-store %store "b" "b" (list a)))