all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#29363: Single test failure building Guix
@ 2017-11-20 10:08 Rutger Helling
  2017-11-20 15:55 ` Ludovic Courtès
  2017-11-21  0:31 ` Marius Bakke
  0 siblings, 2 replies; 12+ messages in thread
From: Rutger Helling @ 2017-11-20 10:08 UTC (permalink / raw)
  To: 29363

[-- Attachment #1: Type: text/plain, Size: 1285 bytes --]

Hi,

when building Guix with 'guix build guix' I keep running into a single 
test failure. I've attached the test-suite.log.

My kernel:

$ uname -a
Linux guixsd 4.14.0-gnu #1 SMP 1 x86_64 GNU/Linux

This is the guix-daemon I'm building with:

$ guix gc --references 
/gnu/store/mwvmdfksm9iwj1symfiinlikiz56s2nl-guix-0.13.0-9.ff23b47/bin/guix-daemon
/gnu/store/2b22079yrvs59j256z4scccq506csy7c-guile-git-0.0-4.951a32c
/gnu/store/3h31zsqxjjg52da5gp3qmhkh4x8klhah-glibc-2.25
/gnu/store/5jgpy83fga8jjj02m0ncyvgggmbwsfdy-gnutls-3.5.13
/gnu/store/5rk1b2riamhzk8s1hs83mb1i8vdif0vd-gzip-1.8
/gnu/store/6d4ihp7xbdh3a0ffbpm5n45q4v3w0l35-sqlite-3.19.3
/gnu/store/6wyjls0q2c9gjskkplsr1ad09p3d8gzg-gcc-5.4.0-lib
/gnu/store/b1dg82khbvr2abaa346vv7r93ryqrb3j-xz-5.2.2
/gnu/store/bcmf06k2n1pfwqkzpclvvc3w9jdfi71a-guile-json-0.6.0
/gnu/store/f8k940vy9gck66m9r4id5m098w3hxgka-bash-minimal-4.4.12
/gnu/store/mwvmdfksm9iwj1symfiinlikiz56s2nl-guix-0.13.0-9.ff23b47
/gnu/store/navpkpm1jf6zf8zmi54wl5w3b2ddv1sw-zlib-1.2.11
/gnu/store/qfzl5frp52wdz1vbdj958sz35yfl94xi-libgcrypt-1.8.1
/gnu/store/swyipr8smrd5bc72n92sdfxzx0p4cjpi-guile-2.2.2
/gnu/store/wd01nlc7apixl4kyvhpzasxprqymw32s-bzip2-1.0.6
/gnu/store/xfaqdvk060yz7ddc9isk3wkybqmcfj3w-guile-ssh-0.11.2

Does anyone have any idea about what's going wrong?

[-- Attachment #2: test-suite.log --]
[-- Type: text/plain, Size: 441160 bytes --]

=================================
   GNU Guix : ./test-suite.log
=================================

# TOTAL: 746
# PASS:  713
# SKIP:  32
# XFAIL: 0
# FAIL:  1
# XPASS: 0
# ERROR: 0

.. contents:: :depth: 2

SKIP: tests/base32
==================

sh: nix-hash: command not found
test-name: bytevector->base32-string
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/base32.scm:48
source:
+ (test-assert
+   "bytevector->base32-string"
+   (fold (lambda (bv expected result)
+           (and result
+                (string=?
+                  (bytevector->base32-string bv)
+                  expected)))
+         #t
+         (map string->utf8
+              '("" "f" "fo" "foo" "foob" "fooba" "foobar"))
+         '(""
+           "my"
+           "mzxq"
+           "mzxw6"
+           "mzxw6yq"
+           "mzxw6ytb"
+           "mzxw6ytboi")))
actual-value: #t
result: PASS

test-name: base32-string->bytevector
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/base32.scm:65
source:
+ (test-assert
+   "base32-string->bytevector"
+   (every (lambda (bv)
+            (equal?
+              (base32-string->bytevector
+                (bytevector->base32-string bv))
+              bv))
+          (map string->utf8
+               '("" "f" "fo" "foo" "foob" "fooba" "foobar"))))
actual-value: #t
result: PASS

test-name: nix-base32-string->bytevector
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/base32.scm:73
source:
+ (test-assert
+   "nix-base32-string->bytevector"
+   (every (lambda (bv)
+            (equal?
+              (nix-base32-string->bytevector
+                (bytevector->nix-base32-string bv))
+              bv))
+          (map string->utf8
+               '("" "f" "fo" "foo" "foob" "fooba" "foobar"))))
actual-value: #t
result: PASS

test-name: &invalid-base32-character
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/base32.scm:81
source:
+ (test-equal
+   "&invalid-base32-character"
+   #\e
+   (guard (c ((invalid-base32-character? c)
+              (invalid-base32-character-value c)))
+          (nix-base32-string->bytevector
+            (string-append (make-string 51 #\a) "e"))))
expected-value: #\e
actual-value: #\e
result: PASS

test-name: sha256 & bytevector->nix-base32-string
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/base32.scm:92
source:
+ (test-assert
+   "sha256 & bytevector->nix-base32-string"
+   (let ((file (search-path %load-path "tests/test.drv")))
+     (equal?
+       (bytevector->nix-base32-string
+         (sha256
+           (call-with-input-file file get-bytevector-all)))
+       (let* ((c (format
+                   #f
+                   "~a --type sha256 --base32 --flat \"~a\""
+                   %nix-hash
+                   file))
+              (p (open-input-pipe c))
+              (l (read-line p)))
+         (close-pipe p)
+         l))))
result: SKIP


SKIP: tests/cpio
================

random seed for tests: 1511176765
test-name: file->cpio-header + write-cpio-header + read-cpio-header
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/cpio.scm:37
source:
+ (test-assert
+   "file->cpio-header + write-cpio-header + read-cpio-header"
+   (let* ((file (search-path %load-path "guix.scm"))
+          (header (file->cpio-header file)))
+     (call-with-values
+       (lambda () (open-bytevector-output-port))
+       (lambda (port get-bv)
+         (write-cpio-header header port)
+         (let ((port (open-bytevector-input-port (get-bv))))
+           (equal? header (read-cpio-header port)))))))
actual-value: #t
result: PASS

test-name: bit-identical to GNU cpio's output
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/cpio.scm:49
source:
+ (test-assert
+   "bit-identical to GNU cpio's output"
+   (call-with-temporary-output-file
+     (lambda (link _)
+       (delete-file link)
+       (symlink "chbouib" link)
+       (let ((files (cons* "/"
+                           (canonicalize-path
+                             (dirname (search-path %load-path "guix.scm")))
+                           link
+                           (map (compose
+                                  canonicalize-path
+                                  (cut search-path %load-path <>))
+                                '("guix.scm"
+                                  "guix/build/syscalls.scm"
+                                  "guix/packages.scm")))))
+         (call-with-temporary-output-file
+           (lambda (ref-file _)
+             (let ((pipe (open-pipe*
+                           OPEN_WRITE
+                           %cpio-program
+                           "-o"
+                           "-O"
+                           ref-file
+                           "-H"
+                           "newc"
+                           "--null")))
+               (for-each
+                 (lambda (file) (format pipe "~a\x00" file))
+                 files)
+               (and (zero? (close-pipe pipe))
+                    (call-with-temporary-output-file
+                      (lambda (file port)
+                        (write-cpio-archive files port)
+                        (close-port port)
+                        (or (file=? ref-file file)
+                            (throw 'cpio-archives-differ
+                                   files
+                                   ref-file
+                                   file
+                                   (stat:size (stat ref-file))
+                                   (stat:size (stat file))))))))))))))
result: SKIP


SKIP: tests/builders
====================

random seed for tests: 1511176912
test-name: url-fetch
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/builders.scm:66
source:
+ (test-assert
+   "url-fetch"
+   (let* ((url '("http://ftp.gnu.org/gnu/hello/hello-2.8.tar.gz"
+                 "ftp://ftp.gnu.org/gnu/hello/hello-2.8.tar.gz"))
+          (hash (nix-base32-string->bytevector
+                  "0wqd8sjmxfskrflaxywc7gqw7sfawrfvdxd9skxawzfgyy0pzdz6"))
+          (drv (url-fetch*
+                 %store
+                 url
+                 'sha256
+                 hash
+                 #:guile
+                 %bootstrap-guile))
+          (out-path (derivation->output-path drv)))
+     (and (build-derivations %store (list drv))
+          (file-exists? out-path)
+          (valid-path? %store out-path))))
result: SKIP

test-name: url-fetch, file
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/builders.scm:78
source:
+ (test-assert
+   "url-fetch, file"
+   (let* ((file (search-path %load-path "guix.scm"))
+          (hash (call-with-input-file file port-sha256))
+          (out (url-fetch* %store file 'sha256 hash)))
+     (and (file-exists? out) (valid-path? %store out))))
actual-value: #t
result: PASS

test-name: url-fetch, file URI
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/builders.scm:85
source:
+ (test-assert
+   "url-fetch, file URI"
+   (let* ((file (search-path %load-path "guix.scm"))
+          (hash (call-with-input-file file port-sha256))
+          (out (url-fetch*
+                 %store
+                 (string-append
+                   "file://"
+                   (canonicalize-path file))
+                 'sha256
+                 hash)))
+     (and (file-exists? out) (valid-path? %store out))))
actual-value: #t
result: PASS

test-name: gnu-build-system
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/builders.scm:94
source:
+ (test-assert
+   "gnu-build-system"
+   (build-system? gnu-build-system))
actual-value: #t
result: PASS

test-name: gnu-build
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/builders.scm:99
source:
+ (test-assert
+   "gnu-build"
+   (let* ((url "http://ftp.gnu.org/gnu/hello/hello-2.8.tar.gz")
+          (hash (nix-base32-string->bytevector
+                  "0wqd8sjmxfskrflaxywc7gqw7sfawrfvdxd9skxawzfgyy0pzdz6"))
+          (tarball
+            (url-fetch*
+              %store
+              url
+              'sha256
+              hash
+              #:guile
+              %bootstrap-guile))
+          (build (gnu-build
+                   %store
+                   "hello-2.8"
+                   `(("source" ,tarball) ,@%bootstrap-inputs)
+                   #:guile
+                   %bootstrap-guile
+                   #:search-paths
+                   %bootstrap-search-paths))
+          (out (derivation->output-path build)))
+     (and (build-derivations
+            %store
+            (list (pk 'hello-drv build)))
+          (valid-path? %store out)
+          (file-exists? (string-append out "/bin/hello")))))
result: SKIP


SKIP: tests/derivations
=======================

random seed for tests: 1511176943
@ build-started /tmp/guix-tests/store/vcj9833sk577wd7qxzvmgqcfbf9b4sjz-foo.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/vc//j9833sk577wd7qxzvmgqcfbf9b4sjz-foo.drv.bz2
@ build-succeeded /tmp/guix-tests/store/vcj9833sk577wd7qxzvmgqcfbf9b4sjz-foo.drv -
test-name: parse & export
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:87
source:
+ (test-assert
+   "parse & export"
+   (let* ((f (search-path %load-path "tests/test.drv"))
+          (b1 (call-with-input-file f get-bytevector-all))
+          (d1 (read-derivation (open-bytevector-input-port b1)))
+          (b2 (call-with-bytevector-output-port
+                (cut write-derivation d1 <>)))
+          (d2 (read-derivation (open-bytevector-input-port b2))))
+     (and (equal? b1 b2) (equal? d1 d2))))
actual-value: #t
result: PASS

test-name: add-to-store, flat
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:98
source:
+ (test-assert
+   "add-to-store, flat"
+   (let* ((file (search-path
+                  %load-path
+                  "language/tree-il/spec.scm"))
+          (drv (add-to-store
+                 %store
+                 "flat-test"
+                 #f
+                 "sha256"
+                 file)))
+     (and (eq? 'regular (stat:type (stat drv)))
+          (valid-path? %store drv)
+          (equal?
+            (call-with-input-file file get-bytevector-all)
+            (call-with-input-file drv get-bytevector-all)))))
actual-value: #t
result: PASS

test-name: add-to-store, recursive
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:106
source:
+ (test-assert
+   "add-to-store, recursive"
+   (let* ((dir (dirname
+                 (search-path
+                   %load-path
+                   "language/tree-il/spec.scm")))
+          (drv (add-to-store
+                 %store
+                 "dir-tree-test"
+                 #t
+                 "sha256"
+                 dir)))
+     (and (eq? 'directory (stat:type (stat drv)))
+          (valid-path? %store drv)
+          (equal?
+            (directory-contents dir)
+            (directory-contents drv)))))
actual-value: #t
result: PASS

test-name: derivation with no inputs
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:114
source:
+ (test-assert
+   "derivation with no inputs"
+   (let* ((builder
+            (add-text-to-store
+              %store
+              "my-builder.sh"
+              "echo hello, world\n"
+              '()))
+          (drv (derivation
+                 %store
+                 "foo"
+                 %bash
+                 `("-e" ,builder)
+                 #:env-vars
+                 '(("HOME" . "/homeless")))))
+     (and (store-path? (derivation-file-name drv))
+          (valid-path? %store (derivation-file-name drv)))))
actual-value: #t
result: PASS

test-name: build derivation with 1 source
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:124
source:
+ (test-assert
+   "build derivation with 1 source"
+   (let* ((builder
+            (add-text-to-store
+              %store
+              "my-builder.sh"
+              "echo hello, world > \"$out\"\n"
+              '()))
+          (drv (derivation
+                 %store
+                 "foo"
+                 %bash
+                 `(,builder)
+                 #:env-vars
+                 '(("HOME" . "/homeless")
+                   ("zzz" . "Z!")
+                   ("AAA" . "A!"))
+                 #:inputs
+                 `((,%bash) (,builder))))
+          (succeeded?
+            (build-derivations %store (list drv))))
+     (and succeeded?
+          (let ((path (derivation->output-path drv)))
+            (and (valid-path? %store path)
+                 (string=?
+                   (call-with-input-file path read-line)
+                   "hello, world"))))))
actual-value: #t
result: PASS

test-name: derivation with local file as input
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:142
source:
+ (test-assert
+   "derivation with local file as input"
+   (let* ((builder
+            (add-text-to-store
+              %store
+              "my-builder.sh"
+              @ build-started /tmp/guix-tests/store/fjv236z7l209d8zz9z8jxmnw3dfi8lam-derivation-with-input-file.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/fj//v236z7l209d8zz9z8jxmnw3dfi8lam-derivation-with-input-file.drv.bz2
@ build-succeeded /tmp/guix-tests/store/fjv236z7l209d8zz9z8jxmnw3dfi8lam-derivation-with-input-file.drv -
@ build-started /tmp/guix-tests/store/p81vnkbra9z5w45hg0hni5l3yf596ja2-fails.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/p8//1vnkbra9z5w45hg0hni5l3yf596ja2-fails.drv.bz2
builder for `/tmp/guix-tests/store/p81vnkbra9z5w45hg0hni5l3yf596ja2-fails.drv' failed with exit code 1
@ build-failed /tmp/guix-tests/store/p81vnkbra9z5w45hg0hni5l3yf596ja2-fails.drv - 1 builder for `/tmp/guix-tests/store/p81vnkbra9z5w45hg0hni5l3yf596ja2-fails.drv' failed with exit code 1
@ build-started /tmp/guix-tests/store/kn0gx5na8k2nilq6c362bmavywnilkhq-guile-bootstrap-2.0.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/kn//0gx5na8k2nilq6c362bmavywnilkhq-guile-bootstrap-2.0.drv.bz2
unpacking bootstrap Guile to '/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0'...
./
./share/
./share/guile/
./share/guile/2.0/
./share/guile/2.0/system/
./share/guile/2.0/system/xref.scm
./share/guile/2.0/system/foreign.scm
./share/guile/2.0/system/repl/
./share/guile/2.0/system/repl/error-handling.scm
./share/guile/2.0/system/repl/debug.scm
./share/guile/2.0/system/repl/describe.scm
./share/guile/2.0/system/repl/common.scm
./share/guile/2.0/system/repl/command.scm
./share/guile/2.0/system/repl/server.scm
./share/guile/2.0/system/repl/repl.scm
./share/guile/2.0/system/base/
./share/guile/2.0/system/base/lalr.upstream.scm
./share/guile/2.0/system/base/pmatch.scm
./share/guile/2.0/system/base/lalr.scm
./share/guile/2.0/system/base/language.scm
./share/guile/2.0/system/base/syntax.scm
./share/guile/2.0/system/base/compile.scm
./share/guile/2.0/system/base/ck.scm
./share/guile/2.0/system/base/message.scm
./share/guile/2.0/system/base/target.scm
./share/guile/2.0/system/vm/
./share/guile/2.0/system/vm/trace.scm
./share/guile/2.0/system/vm/trap-state.scm
./share/guile/2.0/system/vm/vm.scm
./share/guile/2.0/system/vm/coverage.scm
./share/guile/2.0/system/vm/program.scm
./share/guile/2.0/system/vm/objcode.scm
./share/guile/2.0/system/vm/traps.scm
./share/guile/2.0/system/vm/inspect.scm
./share/guile/2.0/system/vm/instruction.scm
./share/guile/2.0/system/vm/frame.scm
./share/guile/2.0/scripts/
./share/guile/2.0/scripts/scan-api.scm
./share/guile/2.0/scripts/autofrisk.scm
./share/guile/2.0/scripts/snarf-check-and-output-texi.scm
./share/guile/2.0/scripts/read-rfc822.scm
./share/guile/2.0/scripts/read-text-outline.scm
./share/guile/2.0/scripts/help.scm
./share/guile/2.0/scripts/frisk.scm
./share/guile/2.0/scripts/punify.scm
./share/guile/2.0/scripts/lint.scm
./share/guile/2.0/scripts/disassemble.scm
./share/guile/2.0/scripts/summarize-guile-TODO.scm
./share/guile/2.0/scripts/generate-autoload.scm
./share/guile/2.0/scripts/display-commentary.scm
./share/guile/2.0/scripts/compile.scm
./share/guile/2.0/scripts/api-diff.scm
./share/guile/2.0/scripts/use2dot.scm
./share/guile/2.0/scripts/doc-snarf.scm
./share/guile/2.0/scripts/read-scheme-source.scm
./share/guile/2.0/scripts/snarf-guile-m4-docs.scm
./share/guile/2.0/scripts/list.scm
./share/guile/2.0/texinfo/
./share/guile/2.0/texinfo/indexing.scm
./share/guile/2.0/texinfo/html.scm
./share/guile/2.0/texinfo/docbook.scm
./share/guile/2.0/texinfo/serialize.scm
./share/guile/2.0/texinfo/reflection.scm
./share/guile/2.0/texinfo/plain-text.scm
./share/guile/2.0/texinfo/string-utils.scm
./share/guile/2.0/ice-9/
./share/guile/2.0/ice-9/documentation.scm
./share/guile/2.0/ice-9/scm-style-repl.scm
./share/guile/2.0/ice-9/time.scm
./share/guile/2.0/ice-9/format.scm
./share/guile/2.0/ice-9/networking.scm
./share/guile/2.0/ice-9/getopt-long.scm
./share/guile/2.0/ice-9/vlist.scm
./share/guile/2.0/ice-9/psyntax.scm
./share/guile/2.0/ice-9/gap-buffer.scm
./share/guile/2.0/ice-9/and-let-star.scm
./share/guile/2.0/ice-9/posix.scm
./share/guile/2.0/ice-9/ls.scm
./share/guile/2.0/ice-9/syncase.scm
./share/guile/2.0/ice-9/save-stack.scm
./share/guile/2.0/ice-9/stack-catch.scm
./share/guile/2.0/ice-9/futures.scm
./share/guile/2.0/ice-9/debug.scm
./share/guile/2.0/ice-9/pretty-print.scm
./share/guile/2.0/ice-9/mapping.scm
./share/guile/2.0/ice-9/occam-channel.scm
./share/guile/2.0/ice-9/top-repl.scm
./share/guile/2.0/ice-9/boot-9.scm
./share/guile/2.0/ice-9/string-fun.scm
./share/guile/2.0/ice-9/i18n.scm
./share/guile/2.0/ice-9/match.upstream.scm
./share/guile/2.0/ice-9/streams.scm
./share/guile/2.0/ice-9/lineio.scm
./share/guile/2.0/ice-9/threads.scm
./share/guile/2.0/ice-9/weak-vector.scm
./share/guile/2.0/ice-9/history.scm
./share/guile/2.0/ice-9/expect.scm
./share/guile/2.0/ice-9/poll.scm
./share/guile/2.0/ice-9/popen.scm
./share/guile/2.0/ice-9/control.scm
./share/guile/2.0/ice-9/session.scm
./share/guile/2.0/ice-9/ftw.scm
./share/guile/2.0/ice-9/local-eval.scm
./share/guile/2.0/ice-9/receive.scm
./share/guile/2.0/ice-9/safe-r5rs.scm
./share/guile/2.0/ice-9/calling.scm
./share/guile/2.0/ice-9/curried-definitions.scm
./share/guile/2.0/ice-9/eval-string.scm
./share/guile/2.0/ice-9/q.scm
./share/guile/2.0/ice-9/serialize.scm
./share/guile/2.0/ice-9/quasisyntax.scm
./share/guile/2.0/ice-9/slib.scm
./share/guile/2.0/ice-9/hcons.scm
./share/guile/2.0/ice-9/rw.scm
./share/guile/2.0/ice-9/regex.scm
./share/guile/2.0/ice-9/match.scm
./share/guile/2.0/ice-9/buffered-input.scm
./share/guile/2.0/ice-9/iconv.scm
./share/guile/2.0/ice-9/poe.scm
./share/guile/2.0/ice-9/common-list.scm
./share/guile/2.0/ice-9/r5rs.scm
./share/guile/2.0/ice-9/command-line.scm
./share/guile/2.0/ice-9/deprecated.scm
./share/guile/2.0/ice-9/psyntax-pp.scm
./share/guile/2.0/ice-9/null.scm
./share/guile/2.0/ice-9/optargs.scm
./share/guile/2.0/ice-9/rdelim.scm
./share/guile/2.0/ice-9/runq.scm
./share/guile/2.0/ice-9/safe.scm
./share/guile/2.0/ice-9/channel.scm
./share/guile/2.0/ice-9/readline.scm
./share/guile/2.0/ice-9/binary-ports.scm
./share/guile/2.0/ice-9/eval.scm
./share/guile/2.0/ice-9/r4rs.scm
./share/guile/2.0/ice-9/r6rs-libraries.scm
./share/guile/2.0/ice-9/list.scm
./share/guile/2.0/language/
./share/guile/2.0/language/elisp/
./share/guile/2.0/language/elisp/compile-tree-il.scm
./share/guile/2.0/language/elisp/bindings.scm
./share/guile/2.0/language/elisp/runtime.scm
./share/guile/2.0/language/elisp/lexer.scm
./share/guile/2.0/language/elisp/spec.scm
./share/guile/2.0/language/elisp/runtime/
./share/guile/2.0/language/elisp/runtime/macros.scm
./share/guile/2.0/language/elisp/runtime/function-slot.scm
./share/guile/2.0/language/elisp/runtime/subrs.scm
./share/guile/2.0/language/elisp/runtime/value-slot.scm
./share/guile/2.0/language/elisp/parser.scm
./share/guile/2.0/language/assembly/
./share/guile/2.0/language/assembly/compile-bytecode.scm
./share/guile/2.0/language/assembly/disassemble.scm
./share/guile/2.0/language/assembly/spec.scm
./share/guile/2.0/language/assembly/decompile-bytecode.scm
./share/guile/2.0/language/scheme/
./share/guile/2.0/language/scheme/compile-tree-il.scm
./share/guile/2.0/language/scheme/decompile-tree-il.scm
./share/guile/2.0/language/scheme/spec.scm
./share/guile/2.0/language/brainfuck/
./share/guile/2.0/language/brainfuck/compile-tree-il.scm
./share/guile/2.0/language/brainfuck/compile-scheme.scm
./share/guile/2.0/language/brainfuck/spec.scm
./share/guile/2.0/language/brainfuck/parse.scm
./share/guile/2.0/language/objcode/
./share/guile/2.0/language/objcode/spec.scm
./share/guile/2.0/language/assembly.scm
./share/guile/2.0/language/bytecode/
./share/guile/2.0/language/bytecode/spec.scm
./share/guile/2.0/language/glil/
./share/guile/2.0/language/glil/spec.scm
./share/guile/2.0/language/glil/compile-assembly.scm
./share/guile/2.0/language/tree-il/
./share/guile/2.0/language/tree-il/analyze.scm
./share/guile/2.0/language/tree-il/inline.scm
./share/guile/2.0/language/tree-il/debug.scm
./share/guile/2.0/language/tree-il/primitives.scm
./share/guile/2.0/language/tree-il/optimize.scm
./share/guile/2.0/language/tree-il/fix-letrec.scm
./share/guile/2.0/language/tree-il/spec.scm
./share/guile/2.0/language/tree-il/peval.scm
./share/guile/2.0/language/tree-il/compile-glil.scm
./share/guile/2.0/language/tree-il/cse.scm
./share/guile/2.0/language/tree-il/canonicalize.scm
./share/guile/2.0/language/tree-il/effects.scm
./share/guile/2.0/language/ecmascript/
./share/guile/2.0/language/ecmascript/base.scm
./share/guile/2.0/language/ecmascript/compile-tree-il.scm
./share/guile/2.0/language/ecmascript/function.scm
./share/guile/2.0/language/ecmascript/array.scm
./share/guile/2.0/language/ecmascript/tokenize.scm
./share/guile/2.0/language/ecmascript/spec.scm
./share/guile/2.0/language/ecmascript/impl.scm
./share/guile/2.0/language/ecmascript/parse.scm
./share/guile/2.0/language/value/
./share/guile/2.0/language/value/spec.scm
./share/guile/2.0/language/glil.scm
./share/guile/2.0/language/tree-il.scm
./share/guile/2.0/rnrs.scm
./share/guile/2.0/statprof.scm
./share/guile/2.0/web/
./share/guile/2.0/web/client.scm
./share/guile/2.0/web/response.scm
./share/guile/2.0/web/uri.scm
./share/guile/2.0/web/server/
./share/guile/2.0/web/server/http.scm
./share/guile/2.0/web/request.scm
./share/guile/2.0/web/server.scm
./share/guile/2.0/web/http.scm
./share/guile/2.0/oop/
./share/guile/2.0/oop/goops.scm
./share/guile/2.0/oop/goops/
./share/guile/2.0/oop/goops/save.scm
./share/guile/2.0/oop/goops/stklos.scm
./share/guile/2.0/oop/goops/accessors.scm
./share/guile/2.0/oop/goops/describe.scm
./share/guile/2.0/oop/goops/dispatch.scm
./share/guile/2.0/oop/goops/active-slot.scm
./share/guile/2.0/oop/goops/composite-slot.scm
./share/guile/2.0/oop/goops/compile.scm
./share/guile/2.0/oop/goops/internal.scm
./share/guile/2.0/oop/goops/util.scm
./share/guile/2.0/oop/goops/simple.scm
./share/guile/2.0/guile-procedures.txt
./share/guile/2.0/texinfo.scm
./share/guile/2.0/rnrs/
./share/guile/2.0/rnrs/base.scm
./share/guile/2.0/rnrs/records/
./share/guile/2.0/rnrs/records/syntactic.scm
./share/guile/2.0/rnrs/records/inspection.scm
./share/guile/2.0/rnrs/records/procedural.scm
./share/guile/2.0/rnrs/arithmetic/
./share/guile/2.0/rnrs/arithmetic/bitwise.scm
./share/guile/2.0/rnrs/arithmetic/fixnums.scm
./share/guile/2.0/rnrs/arithmetic/flonums.scm
./share/guile/2.0/rnrs/unicode.scm
./share/guile/2.0/rnrs/enums.scm
./share/guile/2.0/rnrs/hashtables.scm
./share/guile/2.0/rnrs/control.scm
./share/guile/2.0/rnrs/syntax-case.scm
./share/guile/2.0/rnrs/sorting.scm
./share/guile/2.0/rnrs/lists.scm
./share/guile/2.0/rnrs/mutable-strings.scm
./share/guile/2.0/rnrs/conditions.scm
./share/guile/2.0/rnrs/r5rs.scm
./share/guile/2.0/rnrs/mutable-pairs.scm
./share/guile/2.0/rnrs/programs.scm
./share/guile/2.0/rnrs/exceptions.scm
./share/guile/2.0/rnrs/eval.scm
./share/guile/2.0/rnrs/files.scm
./share/guile/2.0/rnrs/io/
./share/guile/2.0/rnrs/io/ports.scm
./share/guile/2.0/rnrs/io/simple.scm
./share/guile/2.0/rnrs/bytevectors.scm
./share/guile/2.0/sxml/
./share/guile/2.0/sxml/sxml-match.ss
./share/guile/2.0/sxml/fold.scm
./share/guile/2.0/sxml/ssax.scm
./share/guile/2.0/sxml/apply-templates.scm
./share/guile/2.0/sxml/xpath.scm
./share/guile/2.0/sxml/upstream/
./share/guile/2.0/sxml/upstream/SSAX.scm
./share/guile/2.0/sxml/upstream/assert.scm
./share/guile/2.0/sxml/upstream/SXPath-old.scm
./share/guile/2.0/sxml/upstream/input-parse.scm
./share/guile/2.0/sxml/upstream/SXML-tree-trans.scm
./share/guile/2.0/sxml/transform.scm
./share/guile/2.0/sxml/match.scm
./share/guile/2.0/sxml/simple.scm
./share/guile/2.0/sxml/ssax/
./share/guile/2.0/sxml/ssax/input-parse.scm
./share/guile/2.0/srfi/
./share/guile/2.0/srfi/srfi-88.scm
./share/guile/2.0/srfi/srfi-14.scm
./share/guile/2.0/srfi/srfi-6.scm
./share/guile/2.0/srfi/srfi-67.scm
./share/guile/2.0/srfi/srfi-42/
./share/guile/2.0/srfi/srfi-42/ec.scm
./share/guile/2.0/srfi/srfi-19.scm
./share/guile/2.0/srfi/srfi-31.scm
./share/guile/2.0/srfi/srfi-41.scm
./share/guile/2.0/srfi/srfi-35.scm
./share/guile/2.0/srfi/srfi-34.scm
./share/guile/2.0/srfi/srfi-60.scm
./share/guile/2.0/srfi/srfi-18.scm
./share/guile/2.0/srfi/srfi-37.scm
./share/guile/2.0/srfi/srfi-4/
./share/guile/2.0/srfi/srfi-4/gnu.scm
./share/guile/2.0/srfi/srfi-16.scm
./share/guile/2.0/srfi/srfi-69.scm
./share/guile/2.0/srfi/srfi-17.scm
./share/guile/2.0/srfi/srfi-2.scm
./share/guile/2.0/srfi/srfi-27.scm
./share/guile/2.0/srfi/srfi-26.scm
./share/guile/2.0/srfi/srfi-8.scm
./share/guile/2.0/srfi/srfi-4.scm
./share/guile/2.0/srfi/srfi-11.scm
./share/guile/2.0/srfi/srfi-13.scm
./share/guile/2.0/srfi/srfi-67/
./share/guile/2.0/srfi/srfi-67/compare.scm
./share/guile/2.0/srfi/srfi-45.scm
./share/guile/2.0/srfi/srfi-9.scm
./share/guile/2.0/srfi/srfi-9/
./share/guile/2.0/srfi/srfi-9/gnu.scm
./share/guile/2.0/srfi/srfi-10.scm
./share/guile/2.0/srfi/srfi-42.scm
./share/guile/2.0/srfi/srfi-39.scm
./share/guile/2.0/srfi/srfi-1.scm
./share/guile/2.0/srfi/srfi-38.scm
./share/guile/2.0/srfi/srfi-98.scm
./lib/
./lib/guile/
./lib/guile/2.0/
./lib/guile/2.0/ccache/
./lib/guile/2.0/ccache/system/
./lib/guile/2.0/ccache/system/foreign.go
./lib/guile/2.0/ccache/system/repl/
./lib/guile/2.0/ccache/system/repl/command.go
./lib/guile/2.0/ccache/system/repl/error-handling.go
./lib/guile/2.0/ccache/system/repl/repl.go
./lib/guile/2.0/ccache/system/repl/debug.go
./lib/guile/2.0/ccache/system/repl/server.go
./lib/guile/2.0/ccache/system/repl/common.go
./lib/guile/2.0/ccache/system/xref.go
./lib/guile/2.0/ccache/system/base/
./lib/guile/2.0/ccache/system/base/ck.go
./lib/guile/2.0/ccache/system/base/lalr.go
./lib/guile/2.0/ccache/system/base/pmatch.go
./lib/guile/2.0/ccache/system/base/message.go
./lib/guile/2.0/ccache/system/base/syntax.go
./lib/guile/2.0/ccache/system/base/language.go
./lib/guile/2.0/ccache/system/base/target.go
./lib/guile/2.0/ccache/system/base/compile.go
./lib/guile/2.0/ccache/system/vm/
./lib/guile/2.0/ccache/system/vm/traps.go
./lib/guile/2.0/ccache/system/vm/frame.go
./lib/guile/2.0/ccache/system/vm/objcode.go
./lib/guile/2.0/ccache/system/vm/program.go
./lib/guile/2.0/ccache/system/vm/instruction.go
./lib/guile/2.0/ccache/system/vm/coverage.go
./lib/guile/2.0/ccache/system/vm/vm.go
./lib/guile/2.0/ccache/system/vm/trap-state.go
./lib/guile/2.0/ccache/system/vm/inspect.go
./lib/guile/2.0/ccache/system/vm/trace.go
./lib/guile/2.0/ccache/scripts/
./lib/guile/2.0/ccache/scripts/scan-api.go
./lib/guile/2.0/ccache/scripts/use2dot.go
./lib/guile/2.0/ccache/scripts/autofrisk.go
./lib/guile/2.0/ccache/scripts/api-diff.go
./lib/guile/2.0/ccache/scripts/read-text-outline.go
./lib/guile/2.0/ccache/scripts/punify.go
./lib/guile/2.0/ccache/scripts/snarf-guile-m4-docs.go
./lib/guile/2.0/ccache/scripts/read-scheme-source.go
./lib/guile/2.0/ccache/scripts/frisk.go
./lib/guile/2.0/ccache/scripts/summarize-guile-TODO.go
./lib/guile/2.0/ccache/scripts/lint.go
./lib/guile/2.0/ccache/scripts/display-commentary.go
./lib/guile/2.0/ccache/scripts/disassemble.go
./lib/guile/2.0/ccache/scripts/generate-autoload.go
./lib/guile/2.0/ccache/scripts/snarf-check-and-output-texi.go
./lib/guile/2.0/ccache/scripts/read-rfc822.go
./lib/guile/2.0/ccache/scripts/doc-snarf.go
./lib/guile/2.0/ccache/scripts/compile.go
./lib/guile/2.0/ccache/scripts/help.go
./lib/guile/2.0/ccache/scripts/list.go
./lib/guile/2.0/ccache/texinfo/
./lib/guile/2.0/ccache/texinfo/docbook.go
./lib/guile/2.0/ccache/texinfo/serialize.go
./lib/guile/2.0/ccache/texinfo/html.go
./lib/guile/2.0/ccache/texinfo/reflection.go
./lib/guile/2.0/ccache/texinfo/indexing.go
./lib/guile/2.0/ccache/texinfo/plain-text.go
./lib/guile/2.0/ccache/texinfo/string-utils.go
./lib/guile/2.0/ccache/ice-9/
./lib/guile/2.0/ccache/ice-9/r4rs.go
./lib/guile/2.0/ccache/ice-9/poll.go
./lib/guile/2.0/ccache/ice-9/syncase.go
./lib/guile/2.0/ccache/ice-9/common-list.go
./lib/guile/2.0/ccache/ice-9/stack-catch.go
./lib/guile/2.0/ccache/ice-9/control.go
./lib/guile/2.0/ccache/ice-9/binary-ports.go
./lib/guile/2.0/ccache/ice-9/regex.go
./lib/guile/2.0/ccache/ice-9/safe.go
./lib/guile/2.0/ccache/ice-9/buffered-input.go
./lib/guile/2.0/ccache/ice-9/boot-9.go
./lib/guile/2.0/ccache/ice-9/and-let-star.go
./lib/guile/2.0/ccache/ice-9/expect.go
./lib/guile/2.0/ccache/ice-9/gap-buffer.go
./lib/guile/2.0/ccache/ice-9/pretty-print.go
./lib/guile/2.0/ccache/ice-9/time.go
./lib/guile/2.0/ccache/ice-9/serialize.go
./lib/guile/2.0/ccache/ice-9/debug.go
./lib/guile/2.0/ccache/ice-9/rw.go
./lib/guile/2.0/ccache/ice-9/command-line.go
./lib/guile/2.0/ccache/ice-9/networking.go
./lib/guile/2.0/ccache/ice-9/posix.go
./lib/guile/2.0/ccache/ice-9/psyntax-pp.go
./lib/guile/2.0/ccache/ice-9/format.go
./lib/guile/2.0/ccache/ice-9/optargs.go
./lib/guile/2.0/ccache/ice-9/history.go
./lib/guile/2.0/ccache/ice-9/vlist.go
./lib/guile/2.0/ccache/ice-9/threads.go
./lib/guile/2.0/ccache/ice-9/safe-r5rs.go
./lib/guile/2.0/ccache/ice-9/streams.go
./lib/guile/2.0/ccache/ice-9/readline.go
./lib/guile/2.0/ccache/ice-9/slib.go
./lib/guile/2.0/ccache/ice-9/scm-style-repl.go
./lib/guile/2.0/ccache/ice-9/session.go
./lib/guile/2.0/ccache/ice-9/top-repl.go
./lib/guile/2.0/ccache/ice-9/channel.go
./lib/guile/2.0/ccache/ice-9/q.go
./lib/guile/2.0/ccache/ice-9/string-fun.go
./lib/guile/2.0/ccache/ice-9/r5rs.go
./lib/guile/2.0/ccache/ice-9/calling.go
./lib/guile/2.0/ccache/ice-9/futures.go
./lib/guile/2.0/ccache/ice-9/null.go
./lib/guile/2.0/ccache/ice-9/occam-channel.go
./lib/guile/2.0/ccache/ice-9/eval.go
./lib/guile/2.0/ccache/ice-9/receive.go
./lib/guile/2.0/ccache/ice-9/ftw.go
./lib/guile/2.0/ccache/ice-9/runq.go
./lib/guile/2.0/ccache/ice-9/rdelim.go
./lib/guile/2.0/ccache/ice-9/save-stack.go
./lib/guile/2.0/ccache/ice-9/local-eval.go
./lib/guile/2.0/ccache/ice-9/getopt-long.go
./lib/guile/2.0/ccache/ice-9/ls.go
./lib/guile/2.0/ccache/ice-9/lineio.go
./lib/guile/2.0/ccache/ice-9/i18n.go
./lib/guile/2.0/ccache/ice-9/deprecated.go
./lib/guile/2.0/ccache/ice-9/hcons.go
./lib/guile/2.0/ccache/ice-9/popen.go
./lib/guile/2.0/ccache/ice-9/curried-definitions.go
./lib/guile/2.0/ccache/ice-9/eval-string.go
./lib/guile/2.0/ccache/ice-9/match.go
./lib/guile/2.0/ccache/ice-9/weak-vector.go
./lib/guile/2.0/ccache/ice-9/poe.go
./lib/guile/2.0/ccache/ice-9/mapping.go
./lib/guile/2.0/ccache/ice-9/list.go
./lib/guile/2.0/ccache/ice-9/documentation.go
./lib/guile/2.0/ccache/ice-9/iconv.go
./lib/guile/2.0/ccache/language/
./lib/guile/2.0/ccache/language/assembly.go
./lib/guile/2.0/ccache/language/elisp/
./lib/guile/2.0/ccache/language/elisp/compile-tree-il.go
./lib/guile/2.0/ccache/language/elisp/spec.go
./lib/guile/2.0/ccache/language/elisp/parser.go
./lib/guile/2.0/ccache/language/elisp/runtime.go
./lib/guile/2.0/ccache/language/elisp/bindings.go
./lib/guile/2.0/ccache/language/elisp/lexer.go
./lib/guile/2.0/ccache/language/elisp/runtime/
./lib/guile/2.0/ccache/language/elisp/runtime/value-slot.go
./lib/guile/2.0/ccache/language/elisp/runtime/function-slot.go
./lib/guile/2.0/ccache/language/elisp/runtime/subrs.go
./lib/guile/2.0/ccache/language/elisp/runtime/macros.go
./lib/guile/2.0/ccache/language/assembly/
./lib/guile/2.0/ccache/language/assembly/decompile-bytecode.go
./lib/guile/2.0/ccache/language/assembly/spec.go
./lib/guile/2.0/ccache/language/assembly/compile-bytecode.go
./lib/guile/2.0/ccache/language/assembly/disassemble.go
./lib/guile/2.0/ccache/language/tree-il.go
./lib/guile/2.0/ccache/language/glil.go
./lib/guile/2.0/ccache/language/scheme/
./lib/guile/2.0/ccache/language/scheme/compile-tree-il.go
./lib/guile/2.0/ccache/language/scheme/spec.go
./lib/guile/2.0/ccache/language/scheme/decompile-tree-il.go
./lib/guile/2.0/ccache/language/brainfuck/
./lib/guile/2.0/ccache/language/brainfuck/compile-tree-il.go
./lib/guile/2.0/ccache/language/brainfuck/spec.go
./lib/guile/2.0/ccache/language/brainfuck/parse.go
./lib/guile/2.0/ccache/language/brainfuck/compile-scheme.go
./lib/guile/2.0/ccache/language/objcode/
./lib/guile/2.0/ccache/language/objcode/spec.go
./lib/guile/2.0/ccache/language/bytecode/
./lib/guile/2.0/ccache/language/bytecode/spec.go
./lib/guile/2.0/ccache/language/glil/
./lib/guile/2.0/ccache/language/glil/compile-assembly.go
./lib/guile/2.0/ccache/language/glil/spec.go
./lib/guile/2.0/ccache/language/tree-il/
./lib/guile/2.0/ccache/language/tree-il/debug.go
./lib/guile/2.0/ccache/language/tree-il/compile-glil.go
./lib/guile/2.0/ccache/language/tree-il/optimize.go
./lib/guile/2.0/ccache/language/tree-il/spec.go
./lib/guile/2.0/ccache/language/tree-il/canonicalize.go
./lib/guile/2.0/ccache/language/tree-il/inline.go
./lib/guile/2.0/ccache/language/tree-il/analyze.go
./lib/guile/2.0/ccache/language/tree-il/peval.go
./lib/guile/2.0/ccache/language/tree-il/cse.go
./lib/guile/2.0/ccache/language/tree-il/fix-letrec.go
./lib/guile/2.0/ccache/language/tree-il/effects.go
./lib/guile/2.0/ccache/language/tree-il/primitives.go
./lib/guile/2.0/ccache/language/ecmascript/
./lib/guile/2.0/ccache/language/ecmascript/compile-tree-il.go
./lib/guile/2.0/ccache/language/ecmascript/spec.go
./lib/guile/2.0/ccache/language/ecmascript/parse.go
./lib/guile/2.0/ccache/language/ecmascript/tokenize.go
./lib/guile/2.0/ccache/language/ecmascript/array.go
./lib/guile/2.0/ccache/language/ecmascript/impl.go
./lib/guile/2.0/ccache/language/ecmascript/function.go
./lib/guile/2.0/ccache/language/ecmascript/base.go
./lib/guile/2.0/ccache/language/value/
./lib/guile/2.0/ccache/language/value/spec.go
./lib/guile/2.0/ccache/web/
./lib/guile/2.0/ccache/web/http.go
./lib/guile/2.0/ccache/web/server/
./lib/guile/2.0/ccache/web/server/http.go
./lib/guile/2.0/ccache/web/client.go
./lib/guile/2.0/ccache/web/request.go
./lib/guile/2.0/ccache/web/server.go
./lib/guile/2.0/ccache/web/uri.go
./lib/guile/2.0/ccache/web/response.go
./lib/guile/2.0/ccache/oop/
./lib/guile/2.0/ccache/oop/goops.go
./lib/guile/2.0/ccache/oop/goops/
./lib/guile/2.0/ccache/oop/goops/composite-slot.go
./lib/guile/2.0/ccache/oop/goops/internal.go
./lib/guile/2.0/ccache/oop/goops/stklos.go
./lib/guile/2.0/ccache/oop/goops/save.go
./lib/guile/2.0/ccache/oop/goops/dispatch.go
./lib/guile/2.0/ccache/oop/goops/util.go
./lib/guile/2.0/ccache/oop/goops/active-slot.go
./lib/guile/2.0/ccache/oop/goops/simple.go
./lib/guile/2.0/ccache/oop/goops/describe.go
./lib/guile/2.0/ccache/oop/goops/compile.go
./lib/guile/2.0/ccache/oop/goops/accessors.go
./lib/guile/2.0/ccache/rnrs/
./lib/guile/2.0/ccache/rnrs/mutable-pairs.go
./lib/guile/2.0/ccache/rnrs/control.go
./lib/guile/2.0/ccache/rnrs/records/
./lib/guile/2.0/ccache/rnrs/records/procedural.go
./lib/guile/2.0/ccache/rnrs/records/syntactic.go
./lib/guile/2.0/ccache/rnrs/records/inspection.go
./lib/guile/2.0/ccache/rnrs/arithmetic/
./lib/guile/2.0/ccache/rnrs/arithmetic/fixnums.go
./lib/guile/2.0/ccache/rnrs/arithmetic/bitwise.go
./lib/guile/2.0/ccache/rnrs/arithmetic/flonums.go
./lib/guile/2.0/ccache/rnrs/enums.go
./lib/guile/2.0/ccache/rnrs/programs.go
./lib/guile/2.0/ccache/rnrs/exceptions.go
./lib/guile/2.0/ccache/rnrs/files.go
./lib/guile/2.0/ccache/rnrs/syntax-case.go
./lib/guile/2.0/ccache/rnrs/lists.go
./lib/guile/2.0/ccache/rnrs/mutable-strings.go
./lib/guile/2.0/ccache/rnrs/unicode.go
./lib/guile/2.0/ccache/rnrs/r5rs.go
./lib/guile/2.0/ccache/rnrs/hashtables.go
./lib/guile/2.0/ccache/rnrs/eval.go
./lib/guile/2.0/ccache/rnrs/conditions.go
./lib/guile/2.0/ccache/rnrs/bytevectors.go
./lib/guile/2.0/ccache/rnrs/sorting.go
./lib/guile/2.0/ccache/rnrs/base.go
./lib/guile/2.0/ccache/rnrs/io/
./lib/guile/2.0/ccache/rnrs/io/ports.go
./lib/guile/2.0/ccache/rnrs/io/simple.go
./lib/guile/2.0/ccache/sxml/
./lib/guile/2.0/ccache/sxml/transform.go
./lib/guile/2.0/ccache/sxml/ssax.go
./lib/guile/2.0/ccache/sxml/simple.go
./lib/guile/2.0/ccache/sxml/apply-templates.go
./lib/guile/2.0/ccache/sxml/xpath.go
./lib/guile/2.0/ccache/sxml/match.go
./lib/guile/2.0/ccache/sxml/fold.go
./lib/guile/2.0/ccache/sxml/ssax/
./lib/guile/2.0/ccache/sxml/ssax/input-parse.go
./lib/guile/2.0/ccache/rnrs.go
./lib/guile/2.0/ccache/srfi/
./lib/guile/2.0/ccache/srfi/srfi-4.go
./lib/guile/2.0/ccache/srfi/srfi-14.go
./lib/guile/2.0/ccache/srfi/srfi-26.go
./lib/guile/2.0/ccache/srfi/srfi-17.go
./lib/guile/2.0/ccache/srfi/srfi-27.go
./lib/guile/2.0/ccache/srfi/srfi-38.go
./lib/guile/2.0/ccache/srfi/srfi-34.go
./lib/guile/2.0/ccache/srfi/srfi-13.go
./lib/guile/2.0/ccache/srfi/srfi-41.go
./lib/guile/2.0/ccache/srfi/srfi-19.go
./lib/guile/2.0/ccache/srfi/srfi-67.go
./lib/guile/2.0/ccache/srfi/srfi-9.go
./lib/guile/2.0/ccache/srfi/srfi-2.go
./lib/guile/2.0/ccache/srfi/srfi-4/
./lib/guile/2.0/ccache/srfi/srfi-4/gnu.go
./lib/guile/2.0/ccache/srfi/srfi-60.go
./lib/guile/2.0/ccache/srfi/srfi-11.go
./lib/guile/2.0/ccache/srfi/srfi-69.go
./lib/guile/2.0/ccache/srfi/srfi-6.go
./lib/guile/2.0/ccache/srfi/srfi-37.go
./lib/guile/2.0/ccache/srfi/srfi-39.go
./lib/guile/2.0/ccache/srfi/srfi-1.go
./lib/guile/2.0/ccache/srfi/srfi-8.go
./lib/guile/2.0/ccache/srfi/srfi-9/
./lib/guile/2.0/ccache/srfi/srfi-9/gnu.go
./lib/guile/2.0/ccache/srfi/srfi-45.go
./lib/guile/2.0/ccache/srfi/srfi-42.go
./lib/guile/2.0/ccache/srfi/srfi-16.go
./lib/guile/2.0/ccache/srfi/srfi-31.go
./lib/guile/2.0/ccache/srfi/srfi-18.go
./lib/guile/2.0/ccache/srfi/srfi-88.go
./lib/guile/2.0/ccache/srfi/srfi-10.go
./lib/guile/2.0/ccache/srfi/srfi-35.go
./lib/guile/2.0/ccache/srfi/srfi-98.go
./lib/guile/2.0/ccache/texinfo.go
./lib/guile/2.0/ccache/statprof.go
./bin/
./bin/guile
guile (GNU Guile) 2.0.9
Copyright (C) 2013 Free Software Foundation, Inc.

License LGPLv3+: GNU LGPL 3 or later <http://gnu.org/licenses/lgpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
@ build-succeeded /tmp/guix-tests/store/kn0gx5na8k2nilq6c362bmavywnilkhq-guile-bootstrap-2.0.drv -
@ build-started /tmp/guix-tests/store/5fz6s5yzqvl7rm7sqwhrrci11i9ndb5c-sleep-then-succeed.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/5f//z6s5yzqvl7rm7sqwhrrci11i9ndb5c-sleep-then-succeed.drv.bz2
@ build-succeeded /tmp/guix-tests/store/5fz6s5yzqvl7rm7sqwhrrci11i9ndb5c-sleep-then-succeed.drv -
@ build-started /tmp/guix-tests/store/nzs8yyjwcl3b3pw7yrwvshq7km0slqqg-bar.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/nz//s8yyjwcl3b3pw7yrwvshq7km0slqqg-bar.drv.bz2
@ build-succeeded /tmp/guix-tests/store/nzs8yyjwcl3b3pw7yrwvshq7km0slqqg-bar.drv -
@ build-started /tmp/guix-tests/store/7amfgi1b8y64ckydz2w6sl125ajdzh6w-foo.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/7a//mfgi1b8y64ckydz2w6sl125ajdzh6w-foo.drv.bz2
@ build-succeeded /tmp/guix-tests/store/7amfgi1b8y64ckydz2w6sl125ajdzh6w-foo.drv -
"(while read line ; do echo \"$line\" ; done) < $in > $out"
+              '()))
+          (input (search-path %load-path "ice-9/boot-9.scm"))
+          (input*
+            (add-to-store
+              %store
+              (basename input)
+              #t
+              "sha256"
+              input))
+          (drv (derivation
+                 %store
+                 "derivation-with-input-file"
+                 %bash
+                 `(,builder)
+                 #:env-vars
+                 `(("in" unquote input*))
+                 #:inputs
+                 `((,%bash) (,builder) (,input)))))
+     (and (build-derivations %store (list drv))
+          (valid-path?
+            %store
+            (derivation->output-path drv)))))
actual-value: #t
result: PASS

test-name: derivation fails but keep going
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:165
source:
+ (test-assert
+   "derivation fails but keep going"
+   (with-store
+     store
+     (let* ((d1 (derivation
+                  %store
+                  "fails"
+                  %bash
+                  `("-c" "false")
+                  #:inputs
+                  `((,%bash))))
+            (d2 (build-expression->derivation
+                  %store
+                  "sleep-then-succeed"
+                  `(begin ,(random-text) (sleep 2) (mkdir %output)))))
+       (set-build-options
+         %store
+         #:use-substitutes?
+         #f
+         #:keep-going?
+         #t)
+       (guard (c ((nix-protocol-error? c)
+                  (and (= 100 (nix-protocol-error-status c))
+                       (string-contains
+                         (nix-protocol-error-message c)
+                         (derivation-file-name d1))
+                       (not (valid-path? %store (derivation->output-path d1)))
+                       (valid-path? %store (derivation->output-path d2)))))
+              (build-derivations %store (list d1 d2))
+              #f))))
actual-value: #t
result: PASS

test-name: identical files are deduplicated
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:192
source:
+ (test-assert
+   "identical files are deduplicated"
+   (let* ((build1
+            (add-text-to-store
+              %store
+              "one.sh"
+              "echo hello, world > \"$out\"\n"
+              '()))
+          (build2
+            (add-text-to-store
+              %store
+              "two.sh"
+              "# Hey!\necho hello, world > \"$out\"\n"
+              '()))
+          (drv1 (derivation
+                  %store
+                  "foo"
+                  %bash
+                  `(,build1)
+                  #:inputs
+                  `((,%bash) (,build1))))
+          (drv2 (derivation
+                  %store
+                  "bar"
+                  %bash
+                  `(,build2)
+                  #:inputs
+                  `((,%bash) (,build2)))))
+     (and (build-derivations %store (list drv1 drv2))
+          (let ((file1 (derivation->output-path drv1))
+                (file2 (derivation->output-path drv2)))
+            (and (valid-path? %store file1)
+                 (valid-path? %store file2)
+                 (string=?
+                   (call-with-input-file file1 get-string-all)
+                   "hello, world\n")
+                 (= (stat:ino (lstat file1))
+                    (stat:ino (lstat file2))))))))
actual-value: #t
result: PASS

test-name: built-in-builders
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:214
source:
+ (test-equal
+   "built-in-builders"
+   '("download")
+   (built-in-builders %store))
expected-value: ("download")
actual-value: ("download")
result: PASS

test-name: unknown built-in builder
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:218
source:
+ (test-assert
+   "unknown built-in builder"
+   (let ((drv (derivation
+                %store
+                "ohoh"
+                "builtin:does-not-exist"
+         @ build-started /tmp/guix-tests/store/96bncx0a55ryyvb2i6z8i6rycxwlpwhg-ohoh.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/96//bncx0a55ryyvb2i6z8i6rycxwlpwhg-ohoh.drv.bz2
error: unsupported builtin function 'does-not-exist'
builder for `/tmp/guix-tests/store/96bncx0a55ryyvb2i6z8i6rycxwlpwhg-ohoh.drv' failed with exit code 1
@ build-failed /tmp/guix-tests/store/96bncx0a55ryyvb2i6z8i6rycxwlpwhg-ohoh.drv - 1 builder for `/tmp/guix-tests/store/96bncx0a55ryyvb2i6z8i6rycxwlpwhg-ohoh.drv' failed with exit code 1
@ build-started /tmp/guix-tests/store/a4s556ss3gldx6d241b04fcmry09a63k-world.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/a4//s556ss3gldx6d241b04fcmry09a63k-world.drv.bz2

Starting download of /tmp/guix-tests/store/527r43p02z2b2fm78d9x1qcqvk6zn9ix-world
From http://localhost:10500/foo/bar...
\r^[[K bar  63B                               0B/s 00:00 [                    ]   0.0%\r^[[K bar  63B                           380KiB/s 00:00 [####################] 100.0%\r^[[K bar  63B                           233KiB/s 00:00 [####################] 100.0%
@ build-succeeded /tmp/guix-tests/store/a4s556ss3gldx6d241b04fcmry09a63k-world.drv -
@ build-started /tmp/guix-tests/store/749a49raski851qzr114y2c8spvmdhbw-world.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/74//9a49raski851qzr114y2c8spvmdhbw-world.drv.bz2

Starting download of /tmp/guix-tests/store/2byzl1xvjnjssb4dqxgj59wgp2wgvac5-world
From http://localhost:10500/foo/bar...
\r^[[K bar  13B                               0B/s 00:00 [                    ]   0.0%\r^[[K bar  13B                            82KiB/s 00:00 [####################] 100.0%\r^[[K bar  13B                            46KiB/s 00:00 [####################] 100.0%
sha256 hash mismatch for output path `/tmp/guix-tests/store/2byzl1xvjnjssb4dqxgj59wgp2wgvac5-world'
  expected: 1wxgh5ri0789mjlkwp7pz6fdjjydcvfrlz5l3082lz4qji6dvlcn
  actual:   0a7pd3rizm1qb3kz1ad1wzrijrhwsnq3lj7qprc86zp6a6r5drk8
@ build-failed /tmp/guix-tests/store/749a49raski851qzr114y2c8spvmdhbw-world.drv - 1 sha256 hash mismatch for output path `/tmp/guix-tests/store/2byzl1xvjnjssb4dqxgj59wgp2wgvac5-world'
  expected: 1wxgh5ri0789mjlkwp7pz6fdjjydcvfrlz5l3082lz4qji6dvlcn
  actual:   0a7pd3rizm1qb3kz1ad1wzrijrhwsnq3lj7qprc86zp6a6r5drk8
@ build-started /tmp/guix-tests/store/phmd9p9syg1r3wqj2l33z9nin4wylvrx-will-never-be-found.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/ph//md9p9syg1r3wqj2l33z9nin4wylvrx-will-never-be-found.drv.bz2

Starting download of /tmp/guix-tests/store/77lf1ym6z8rb9r9vrr1f2nymadgcrsdk-will-never-be-found
From http://localhost:10500/foo/bar...
ERROR: download failed "http://localhost:10500/foo/bar" 404 "Such is life"
failed to download "/tmp/guix-tests/store/77lf1ym6z8rb9r9vrr1f2nymadgcrsdk-will-never-be-found" from "http://localhost:10500/foo/bar"
builder for `/tmp/guix-tests/store/phmd9p9syg1r3wqj2l33z9nin4wylvrx-will-never-be-found.drv' failed to produce output path `/tmp/guix-tests/store/77lf1ym6z8rb9r9vrr1f2nymadgcrsdk-will-never-be-found'
@ build-failed /tmp/guix-tests/store/phmd9p9syg1r3wqj2l33z9nin4wylvrx-will-never-be-found.drv - 1 builder for `/tmp/guix-tests/store/phmd9p9syg1r3wqj2l33z9nin4wylvrx-will-never-be-found.drv' failed to produce output path `/tmp/guix-tests/store/77lf1ym6z8rb9r9vrr1f2nymadgcrsdk-will-never-be-found'
@ build-started /tmp/guix-tests/store/5hqvbsh3kc0mgh41rda902fk0vqjcq01-world.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/5h//qvbsh3kc0mgh41rda902fk0vqjcq01-world.drv.bz2
guix perform-download: error: /tmp/guix-tests/store/5hqvbsh3kc0mgh41rda902fk0vqjcq01-world.drv is not a fixed-output derivation
builder for `/tmp/guix-tests/store/5hqvbsh3kc0mgh41rda902fk0vqjcq01-world.drv' failed with exit code 1
@ build-failed /tmp/guix-tests/store/5hqvbsh3kc0mgh41rda902fk0vqjcq01-world.drv - 1 builder for `/tmp/guix-tests/store/5hqvbsh3kc0mgh41rda902fk0vqjcq01-world.drv' failed with exit code 1
       '())))
+     (guard (c ((nix-protocol-error? c)
+                (string-contains
+                  (nix-protocol-error-message c)
+                  "failed")))
+            (build-derivations %store (list drv))
+            #f)))
actual-value: 75
result: PASS

test-name: 'download' built-in builder
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:227
source:
+ (test-assert
+   "'download' built-in builder"
+   (let ((text (random-text)))
+     (with-http-server
+       200
+       text
+       (let* ((drv (derivation
+                     %store
+                     "world"
+                     "builtin:download"
+                     '()
+                     #:env-vars
+                     `(("url" unquote (object->string (%local-url))))
+                     #:hash-algo
+                     'sha256
+                     #:hash
+                     (sha256 (string->utf8 text)))))
+         (and (build-derivations %store (list drv))
+              (string=?
+                (call-with-input-file
+                  (derivation->output-path drv)
+                  get-string-all)
+                text))))))
actual-value: #t
result: PASS

test-name: 'download' built-in builder, invalid hash
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:243
source:
+ (test-assert
+   "'download' built-in builder, invalid hash"
+   (with-http-server
+     200
+     "hello, world!"
+     (let* ((drv (derivation
+                   %store
+                   "world"
+                   "builtin:download"
+                   '()
+                   #:env-vars
+                   `(("url" unquote (object->string (%local-url))))
+                   #:hash-algo
+                   'sha256
+                   #:hash
+                   (sha256 (random-bytevector 100)))))
+       (guard (c ((nix-protocol-error? c)
+                  (string-contains
+                    (nix-protocol-error-message c)
+                    "failed")))
+              (build-derivations %store (list drv))
+              #f))))
actual-value: 76
result: PASS

test-name: 'download' built-in builder, not found
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:258
source:
+ (test-assert
+   "'download' built-in builder, not found"
+   (with-http-server
+     404
+     "not found"
+     (let* ((drv (derivation
+                   %store
+                   "will-never-be-found"
+                   "builtin:download"
+                   '()
+                   #:env-vars
+                   `(("url" unquote (object->string (%local-url))))
+                   #:hash-algo
+                   'sha256
+                   #:hash
+                   (sha256 (random-bytevector 100)))))
+       (guard (c ((nix-protocol-error? c)
+                  (string-contains
+                    (nix-protocol-error-message (pk c))
+                    "failed")))
+              (build-derivations %store (list drv))
+              #f))))

;;; (#<condition &nix-protocol-error [message: "build of `/tmp/guix-tests/store/phmd9p9syg1r3wqj2l33z9nin4wylvrx-will-never-be-found.drv' failed" status: 1] 2436b70>)
actual-value: 90
result: PASS

test-name: 'download' built-in builder, not fixed-output
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:271
source:
+ (test-assert
+   "'download' built-in builder, not fixed-output"
+   (let* ((source (add-text-to-store %store "hello" "hi!"))
+          (url (string-append "file://" source))
+          (drv (derivation
+                 %store
+                 "world"
+                 "builtin:download"
+                 '()
+                 #:env-vars
+                 `(("url" unquote (object->string url))))))
+     (guard (c ((nix-protocol-error? c)
+                (string-contains
+                  (nix-protocol-error-message c)
+                  "failed")))
+            (build-derivations %store (list drv))
+            #f)))
actual-value: 76
result: PASS

test-name: @ build-started /tmp/guix-tests/store/q7wqn3h7wa49d4r6lgl6knqvh37sgx5r-world.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/q7//wqn3h7wa49d4r6lgl6knqvh37sgx5r-world.drv.bz2

Starting download of /tmp/guix-tests/store/x2s0lp5y860hccpxlrwy1bnnr48j89z9-world
From http://localhost:10500/foo/bar...
\r^[[K bar  64B                               0B/s 00:00 [                    ]   0.0%\r^[[K bar  64B                           398KiB/s 00:00 [####################] 100.0%\r^[[K bar  64B                           228KiB/s 00:00 [####################] 100.0%
@ build-succeeded /tmp/guix-tests/store/q7wqn3h7wa49d4r6lgl6knqvh37sgx5r-world.drv -
@ build-started /tmp/guix-tests/store/q7wqn3h7wa49d4r6lgl6knqvh37sgx5r-world.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/q7//wqn3h7wa49d4r6lgl6knqvh37sgx5r-world.drv.bz2

Starting download of /tmp/guix-tests/store/0636dm0c3f6m74ivka7rfp754v6i8blx-world
From http://localhost:10500/foo/bar...
\r^[[K bar  64B                               0B/s 00:00 [                    ]   0.0%\r^[[K bar  64B                           357KiB/s 00:00 [####################] 100.0%\r^[[K bar  64B                           218KiB/s 00:00 [####################] 100.0%
warning: rewriting hashes in `/tmp/guix-tests/store/x2s0lp5y860hccpxlrwy1bnnr48j89z9-world'; cross fingers
'download' built-in builder, check mode
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:284
source:
+ (test-assert
+   "'download' built-in builder, check mode"
+   (let* ((text (random-text))
+          (drv (derivation
+                 %store
+                 "world"
+                 "builtin:download"
+                 '()
+                 #:env-vars
+                 `(("url" unquote (object->string (%local-url))))
+                 #:hash-algo
+                 'sha256
+                 #:hash
+                 (sha256 (string->utf8 text)))))
+     (and (with-http-server
+            200
+            text
+            (build-derivations %store (list drv)))
+          (with-http-server
+            200
+            text
+            (build-derivations
+              %store
+              (list drv)
+              (build-mode check)))
+          (string=?
+            (call-with-input-file
+              (derivation->output-path drv)
+              get-string-all)
+            text))))
actual-value: #t
result: PASS

test-name: derivation-name
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:303
source:
+ (test-equal
+   "derivation-name"
+   "foo-0.0"
+   (let ((drv (derivation %store "foo-0.0" %bash '())))
+     (derivation-name drv)))
expected-value: "foo-0.0"
actual-value: "foo-0.0"
result: PASS

test-name: derivation-output-names
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:308
source:
+ (test-equal
+   "derivation-output-names"
+   '(("out") ("bar" "chbouib"))
+   (let ((drv1 (derivation %store "foo-0.0" %bash '()))
+         (drv2 (derivation
+                 %store
+                 "foo-0.0"
+                 %bash
+                 '()
+                 #:outputs
+                 '("bar" "chbouib"))))
+     (list (derivation-output-names drv1)
+           (derivation-output-names drv2))))
expected-value: (("out") ("bar" "chbouib"))
actual-value: (("out") ("bar" "chbouib"))
result: PASS

test-name: offloadable-derivation?
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:316
source:
+ (test-assert
+   "offloadable-derivation?"
+   (and (offloadable-derivation?
+          (derivation %store "foo" %bash '()))
+        (offloadable-derivation?
+          (derivation
+            %store
+            "foo"
+            %bash
+            '()
+            #:substitutable?
+            #f))
+        (not (offloadable-derivation?
+               (derivation
+                 %store
+                 "foo"
+                 %bash
+                 '()
+                 #:local-build?
+                 #t)))))
actual-value: #t
result: PASS

test-name: substitutable-derivation?
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:325
source:
+ (test-assert
+   "substitutable-derivation?"
+   (and (substitutable-derivation?
+          (derivation %store "foo" %bash '()))
+        (substitutable-derivation?
+          (derivation
+            %store
+            "foo"
+            %bash
+            '()
+            #:local-build?
+            #t))
+        (not (substitutable-derivation?
+               (derivation
+                 %store
+                 "foo"
+                 %bash
+                 '()
+                 #:substitutable?
+                 #f)))))
actual-value: #t
result: PASS

test-name: fixed-output-derivation?
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:334
source:
+ (test-assert
+   "fixed-output-derivation?"
+   (let* ((builder
+            (add-text-to-store
+              %store
+              "my-fixed-builder.sh"
+              "echo -n hello > $out"
+              '()))
+          (hash (sha256 (string->utf8 "hello")))
+          (drv (derivation
+                 %store
+                 "fixed"
+                 %bash
+                 `(,builder)
+                 #:inputs
+                 `((,builder))
+                 #:hash
+                 hash
+                 @ build-started /tmp/guix-tests/store/k4nhzjjfk1acbcpsvm2yhxkj5jvqm59l-fixed.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/k4//nhzjjfk1acbcpsvm2yhxkj5jvqm59l-fixed.drv.bz2
@ build-succeeded /tmp/guix-tests/store/k4nhzjjfk1acbcpsvm2yhxkj5jvqm59l-fixed.drv -
@ build-started /tmp/guix-tests/store/b85qz6zrg22iilj4wcvja2w69vvzp9hy-fixed-rec.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/b8//5qz6zrg22iilj4wcvja2w69vvzp9hy-fixed-rec.drv.bz2
@ build-succeeded /tmp/guix-tests/store/b85qz6zrg22iilj4wcvja2w69vvzp9hy-fixed-rec.drv -
#:hash-algo
+                 'sha256)))
+     (fixed-output-derivation? drv)))
actual-value: #t
result: PASS

test-name: fixed-output derivation
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:344
source:
+ (test-assert
+   "fixed-output derivation"
+   (let* ((builder
+            (add-text-to-store
+              %store
+              "my-fixed-builder.sh"
+              "echo -n hello > $out"
+              '()))
+          (hash (sha256 (string->utf8 "hello")))
+          (drv (derivation
+                 %store
+                 "fixed"
+                 %bash
+                 `(,builder)
+                 #:inputs
+                 `((,builder))
+                 #:hash
+                 hash
+                 #:hash-algo
+                 'sha256))
+          (succeeded?
+            (build-derivations %store (list drv))))
+     (and succeeded?
+          (let ((p (derivation->output-path drv)))
+            (and (equal?
+                   (string->utf8 "hello")
+                   (call-with-input-file p get-bytevector-all))
+                 (bytevector? (query-path-hash %store p)))))))
actual-value: #t
result: PASS

test-name: fixed-output derivation: output paths are equal
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:359
source:
+ (test-assert
+   "fixed-output derivation: output paths are equal"
+   (let* ((builder1
+            (add-text-to-store
+              %store
+              "fixed-builder1.sh"
+              "echo -n hello > $out"
+              '()))
+          (builder2
+            (add-text-to-store
+              %store
+              "fixed-builder2.sh"
+              "echo hey; echo -n hello > $out"
+              '()))
+          (hash (sha256 (string->utf8 "hello")))
+          (drv1 (derivation
+                  %store
+                  "fixed"
+                  %bash
+                  `(,builder1)
+                  #:hash
+                  hash
+                  #:hash-algo
+                  'sha256))
+          (drv2 (derivation
+                  %store
+                  "fixed"
+                  %bash
+                  `(,builder2)
+                  #:hash
+                  hash
+                  #:hash-algo
+                  'sha256))
+          (succeeded?
+            (build-derivations %store (list drv1 drv2))))
+     (and succeeded?
+          (equal?
+            (derivation->output-path drv1)
+            (derivation->output-path drv2)))))
actual-value: #t
result: PASS

test-name: fixed-output derivation, recursive
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:376
source:
+ (test-assert
+   "fixed-output derivation, recursive"
+   (let* ((builder
+            (add-text-to-store
+              %store
+              "my-fixed-builder.sh"
+              "echo -n hello > $out"
+              '()))
+          (hash (sha256 (string->utf8 "hello")))
+          (drv (derivation
+                 %store
+                 "fixed-rec"
+                 %bash
+                 `(,builder)
+                 #:inputs
+                 `((,builder))
+                 #:hash
+                 (base32
+                   "0sg9f58l1jj88w6pdrfdpj5x9b1zrwszk84j81zvby36q9whhhqa")
+                 #:hash-algo
+                 'sha256
+                 #:recursive?
+                 #t))
+          (succeeded?
+            (build-derivations %store (list drv))))
+     (and succeeded?
+          (let ((p (derivation->output-path drv)))
+            (and (equal?
+                   (string->utf8 "hello")
+                   (call-with-input-file p get-bytevector-all))
+                 (bytevector? (query-path-hash %store p)))))))
actual-value: #t
result: PASS

test-name: derivation with a fixed-output input
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:393
source:
+ (test-assert
+   "derivation with a fixed-output input"
+   (let* ((builder1
+            (add-text-to-store
+              %store
+              "fixed-builder1.sh"
+ @ build-started /tmp/guix-tests/store/2q3q6qs3wvi5d5v807lgn76ab0q4341v-final.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/2q//3q6qs3wvi5d5v807lgn76ab0q4341v-final.drv.bz2
/tmp/guix-tests/store/7bdcga4xc915pgzf524xhjk677521whr-fixed
@ build-succeeded /tmp/guix-tests/store/2q3q6qs3wvi5d5v807lgn76ab0q4341v-final.drv -
@ build-started /tmp/guix-tests/store/jgsbqbf10dnfyjmyjsphx715znbn8rhv-fixed.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/jg//sbqbf10dnfyjmyjsphx715znbn8rhv-fixed.drv.bz2
@ build-succeeded /tmp/guix-tests/store/jgsbqbf10dnfyjmyjsphx715znbn8rhv-fixed.drv -
             "echo -n hello > $out"
+              '()))
+          (builder2
+            (add-text-to-store
+              %store
+              "fixed-builder2.sh"
+              "echo hey; echo -n hello > $out"
+              '()))
+          (hash (sha256 (string->utf8 "hello")))
+          (fixed1
+            (derivation
+              %store
+              "fixed"
+              %bash
+              `(,builder1)
+              #:hash
+              hash
+              #:hash-algo
+              'sha256))
+          (fixed2
+            (derivation
+              %store
+              "fixed"
+              %bash
+              `(,builder2)
+              #:hash
+              hash
+              #:hash-algo
+              'sha256))
+          (fixed-out (derivation->output-path fixed1))
+          (builder3
+            (add-text-to-store
+              %store
+              "final-builder.sh"
+              "echo $in ; (read -u 3 c; echo $c) 3< $in > $out"
+              '()))
+          (final1
+            (derivation
+              %store
+              "final"
+              %bash
+              `(,builder3)
+              #:env-vars
+              `(("in" unquote fixed-out))
+              #:inputs
+              `((,%bash) (,builder3) (,fixed1))))
+          (final2
+            (derivation
+              %store
+              "final"
+              %bash
+              `(,builder3)
+              #:env-vars
+              `(("in" unquote fixed-out))
+              #:inputs
+              `((,%bash) (,builder3) (,fixed2))))
+          (succeeded?
+            (build-derivations %store (list final1 final2))))
+     (and succeeded?
+          (equal?
+            (derivation->output-path final1)
+            (derivation->output-path final2)))))
actual-value: #t
result: PASS

test-name: multiple-output derivation
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:427
source:
+ (test-assert
+   "multiple-output derivation"
+   (let* ((builder
+            (add-text-to-store
+              %store
+              "my-fixed-builder.sh"
+              "echo one > $out ; echo two > $second"
+              '()))
+          (drv (derivation
+                 %store
+                 "fixed"
+                 %bash
+                 `(,builder)
+                 #:env-vars
+                 '(("HOME" . "/homeless")
+                   ("zzz" . "Z!")
+                   ("AAA" . "A!"))
+                 #:inputs
+                 `((,%bash) (,builder))
+                 #:outputs
+                 '("out" "second")))
+          (succeeded?
+            (build-derivations %store (list drv))))
+     (and succeeded?
+          (let ((one (derivation->output-path drv "out"))
+                (two (derivation->output-path drv "second")))
+            (and (lset= equal?
+                        (derivation->output-paths drv)
+                        `(("out" unquote one) ("second" unquote two)))
+                 (eq? 'one (call-with-input-file one read))
+                 (eq? 'two (call-with-input-file two read)))))))
actual-value: #t
result: PASS

test-name: multiple-output derivation, non-alphabetic order
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:448
source:
+ (test-assert
+   "multiple-output derivation, non-alphabetic order"
+   (let* ((builder
+            (add-text-to-store
+              %store
+              "my-fixed-builder.sh"
+              "echo one > $out ; echo two > $AAA"
+              '()))
+          (drv (derivation
+                 %store
+                 "fixed"
+                 %bash
+                 `(,builder)
+                 #:inputs
+                 `((,%bash) (,builder))
+                 #:outputs
+                 '("out" "AAA")))
+          (succeeded?
+            (build-derivations %store (list drv))))
+     (and succeeded?
+          (let ((one (derivation->output-path drv "out"))
+                (two (derivation->output-path drv "AAA")))
+            (and (eq? 'one (call-with-input-file one read))
+         @ build-started /tmp/guix-tests/store/1s96ljyrlllvp5b91s56i5hdy2chhyw2-fixed.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/1s//96ljyrlllvp5b91s56i5hdy2chhyw2-fixed.drv.bz2
@ build-succeeded /tmp/guix-tests/store/1s96ljyrlllvp5b91s56i5hdy2chhyw2-fixed.drv -
        (eq? 'two (call-with-input-file two read)))))))
actual-value: #t
result: PASS

test-name: read-derivation vs. derivation
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:465
source:
+ (test-assert
+   "read-derivation vs. derivation"
+   (let* ((sources
+            (unfold
+              (cut >= <> 10)
+              (lambda (n)
+                (add-text-to-store
+                  %store
+                  (format #f "input~a" n)
+                  (random-text)))
+              #{1+}#
+              0))
+          (inputs
+            (map (lambda (file)
+                   (derivation
+                     %store
+                     "derivation-input"
+                     %bash
+                     '()
+                     #:inputs
+                     `((,%bash) (,file))))
+                 sources))
+          (builder
+            (add-text-to-store
+              %store
+              "builder.sh"
+              "echo one > $one ; echo two > $two"
+              '()))
+          (drv (derivation
+                 %store
+                 "derivation"
+                 %bash
+                 `(,builder)
+                 #:inputs
+                 `((,%bash)
+                   (,builder)
+                   ,@(map list (append sources inputs)))
+                 #:outputs
+                 '("two" "one")))
+          (drv* (call-with-input-file
+                  (derivation-file-name drv)
+                  read-derivation)))
+     (equal? drv* drv)))
actual-value: #t
result: PASS

test-name: multiple-output derivation, derivation-path->output-path
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:492
source:
+ (test-assert
+   "multiple-output derivation, derivation-path->output-path"
+   (let* ((builder
+            (add-text-to-store
+              %store
+              "builder.sh"
+              "echo one > $out ; echo two > $second"
+              '()))
+          (drv (derivation
+                 %store
+                 "multiple"
+                 %bash
+                 `(,builder)
+                 #:outputs
+                 '("out" "second")))
+          (drv-file (derivation-file-name drv))
+          (one (derivation->output-path drv "out"))
+          (two (derivation->output-path drv "second"))
+          (first (derivation-path->output-path drv-file "out"))
+          (second
+            (derivation-path->output-path drv-file "second")))
+     (and (not (string=? one two))
+          (string-suffix? "-second" two)
+          (string=? first one)
+          (string=? second two))))
actual-value: #t
result: PASS

test-name: user of multiple-output derivation
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:509
source:
+ (test-assert
+   "user of multiple-output derivation"
+   (let* ((builder1
+            (add-text-to-store
+              %store
+              "my-mo-builder.sh"
+              "echo one > $out ; echo two > $two"
+              '()))
+          (mdrv (derivation
+                  %store
+                  "multiple-output"
+                  %bash
+                  `(,builder1)
+                  #:inputs
+                  `((,%bash) (,builder1))
+                  #:outputs
+                  '("out" "two")))
+          (builder2
+            (add-text-to-store
+              %store
+              "my-mo-user-builder.sh"
+              "read x < $one;\n                                         read y < $two;\n                                         echo \"($x $y)\" > $out"
+              '()))
+          (udrv (derivation
+                  %store
+                  "multiple-output-user"
+                  %bash
+                  `(,builder2)
+                  #:env-vars
+                  `(("one"
+                     unquote
+                     (derivation->output-path mdrv "out"))
+                    ("two"
+                     unquote
+                     (derivation->output-path mdrv "two")))
+                  #:inputs
+                  @ build-started /tmp/guix-tests/store/iryf8h5akyy02qd3dd9ps1ka026cyanz-multiple-output.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/ir//yf8h5akyy02qd3dd9ps1ka026cyanz-multiple-output.drv.bz2
@ build-succeeded /tmp/guix-tests/store/iryf8h5akyy02qd3dd9ps1ka026cyanz-multiple-output.drv -
@ build-started /tmp/guix-tests/store/d1iq16cxzglxwmv478pk9viic0vm0ca2-multiple-output-user.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/d1//iq16cxzglxwmv478pk9viic0vm0ca2-multiple-output-user.drv.bz2
@ build-succeeded /tmp/guix-tests/store/d1iq16cxzglxwmv478pk9viic0vm0ca2-multiple-output-user.drv -
@ build-started /tmp/guix-tests/store/mbi7gj0nlckkz5xchza6rl5vwsnybh73-closure-graphs.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/mb//i7gj0nlckkz5xchza6rl5vwsnybh73-closure-graphs.drv.bz2
@ build-succeeded /tmp/guix-tests/store/mbi7gj0nlckkz5xchza6rl5vwsnybh73-closure-graphs.drv -
@ build-started /tmp/guix-tests/store/q4wh93j1i84snrx51al231wnj4g5i99b-allowed.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/q4//wh93j1i84snrx51al231wnj4g5i99b-allowed.drv.bz2
@ build-succeeded /tmp/guix-tests/store/q4wh93j1i84snrx51al231wnj4g5i99b-allowed.drv -
`((,%bash) (,builder2) (,mdrv) (,mdrv "two")))))
+     (and (build-derivations %store (list (pk 'udrv udrv)))
+          (let ((p (derivation->output-path udrv)))
+            (and (valid-path? %store p)
+                 (equal? '(one two) (call-with-input-file p read)))))))

;;; (udrv #<derivation /tmp/guix-tests/store/d1iq16cxzglxwmv478pk9viic0vm0ca2-multiple-output-user.drv => /tmp/guix-tests/store/01sib6yydjyifqm8is82l8q4xr6g84lx-multiple-output-user 299b910>)
actual-value: #t
result: PASS

test-name: derivation with #:references-graphs
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:542
source:
+ (test-assert
+   "derivation with #:references-graphs"
+   (let* ((input1
+            (add-text-to-store
+              %store
+              "foo"
+              "hello"
+              (list %bash)))
+          (input2
+            (add-text-to-store
+              %store
+              "bar"
+              (number->string (random 7777))
+              (list input1)))
+          (builder
+            (add-text-to-store
+              %store
+              "build-graph"
+              (format
+                #f
+                "\n~a $out\n (while read l ; do echo $l ; done) < bash > $out/bash\n (while read l ; do echo $l ; done) < input1 > $out/input1\n (while read l ; do echo $l ; done) < input2 > $out/input2"
+                %mkdir)
+              (list %mkdir)))
+          (drv (derivation
+                 %store
+                 "closure-graphs"
+                 %bash
+                 `(,builder)
+                 #:references-graphs
+                 `(("bash" unquote %bash)
+                   ("input1" unquote input1)
+                   ("input2" unquote input2))
+                 #:inputs
+                 `((,%bash) (,builder))))
+          (out (derivation->output-path drv)))
+     (define (deps path . deps)
+       (let ((count (length deps)))
+         (string-append
+           path
+           "\n\n"
+           (number->string count)
+           "\n"
+           (string-join (sort deps string<?) "\n")
+           (if (zero? count) "" "\n"))))
+     (and (build-derivations %store (list drv))
+          (equal?
+            (directory-contents out get-string-all)
+            `(("/bash" unquote (string-append %bash "\n\n0\n"))
+              ("/input1"
+               unquote
+               (if (string>? input1 %bash)
+                 (string-append (deps %bash) (deps input1 %bash))
+                 (string-append (deps input1 %bash) (deps %bash))))
+              ("/input2"
+               unquote
+               (string-concatenate
+                 (map cdr
+                      (sort (map (lambda (p d) (cons p (apply deps p d)))
+                                 (list %bash input1 input2)
+                                 (list '() (list %bash) (list input1)))
+                            (lambda (x y)
+                              (match x
+                                     ((p1 . _)
+                                      (match y
+                                             ((p2 . _)
+                                              (string<? p1 p2)))))))))))))))
actual-value: #t
result: PASS

test-name: derivation #:allowed-references, ok
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:592
source:
+ (test-assert
+   "derivation #:allowed-references, ok"
+   (let ((drv (derivation
+                %store
+                "allowed"
+                %bash
+                '("-c" "echo hello > $out")
+                #:inputs
+                `((,%bash))
+                #:allowed-references
+                '())))
+     (build-derivations %store (list drv))))
actual-value: #t
result: PASS

test-name: derivation #:allowed-references, not allowed
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:599
source:
+ (test-assert
+   "derivation #:allowed-references, not allowed"
+   (let* ((txt (add-text-to-store %store "foo" "Hello, world."))
+          (drv (derivation
+                 %store
@ build-started /tmp/guix-tests/store/nxjmh1ipl69ak2x01igkqr2m0qg312bs-disallowed.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/nx//jmh1ipl69ak2x01igkqr2m0qg312bs-disallowed.drv.bz2
output (`/tmp/guix-tests/store/sjsz32mf9z3nwz33v72l68x0l3m4gdy0-disallowed') is not allowed to refer to path `/tmp/guix-tests/store/bdx3lhq3793i8lz6fvldrp917ba52v1v-foo'
@ build-failed /tmp/guix-tests/store/nxjmh1ipl69ak2x01igkqr2m0qg312bs-disallowed.drv - 1 output (`/tmp/guix-tests/store/sjsz32mf9z3nwz33v72l68x0l3m4gdy0-disallowed') is not allowed to refer to path `/tmp/guix-tests/store/bdx3lhq3793i8lz6fvldrp917ba52v1v-foo'
@ build-started /tmp/guix-tests/store/gn8l3dbhnpjd4xnaq16jnigicb2yqv68-allowed.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/gn//8l3dbhnpjd4xnaq16jnigicb2yqv68-allowed.drv.bz2
@ build-succeeded /tmp/guix-tests/store/gn8l3dbhnpjd4xnaq16jnigicb2yqv68-allowed.drv -
@ build-started /tmp/guix-tests/store/wi2xv7yipw4nx5xls95bygbj7dl62ml8-disallowed.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/wi//2xv7yipw4nx5xls95bygbj7dl62ml8-disallowed.drv.bz2
output (`/tmp/guix-tests/store/x16606f0yf78viwdwhzcgvqcm8p8m1zf-disallowed') is not allowed to refer to path `/tmp/guix-tests/store/x16606f0yf78viwdwhzcgvqcm8p8m1zf-disallowed'
@ build-failed /tmp/guix-tests/store/wi2xv7yipw4nx5xls95bygbj7dl62ml8-disallowed.drv - 1 output (`/tmp/guix-tests/store/x16606f0yf78viwdwhzcgvqcm8p8m1zf-disallowed') is not allowed to refer to path `/tmp/guix-tests/store/x16606f0yf78viwdwhzcgvqcm8p8m1zf-disallowed'
@ build-started /tmp/guix-tests/store/vbnwanpq295lszpzd9x5rw8gyvzdai6f-disallowed.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/vb//nwanpq295lszpzd9x5rw8gyvzdai6f-disallowed.drv.bz2
@ build-succeeded /tmp/guix-tests/store/vbnwanpq295lszpzd9x5rw8gyvzdai6f-disallowed.drv -
@ build-started /tmp/guix-tests/store/cbw7ax1vdz8i453gibbky564xs1iggmr-disdisallowed.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/cb//w7ax1vdz8i453gibbky564xs1iggmr-disdisallowed.drv.bz2
output (`/tmp/guix-tests/store/lnay1n74vhpqndqwd4r7k439xw98kd2a-disdisallowed') is not allowed to refer to path `/tmp/guix-tests/store/bdx3lhq3793i8lz6fvldrp917ba52v1v-foo'
@ build-failed /tmp/guix-tests/store/cbw7ax1vdz8i453gibbky564xs1iggmr-disdisallowed.drv - 1 output (`/tmp/guix-tests/store/lnay1n74vhpqndqwd4r7k439xw98kd2a-disdisallowed') is not allowed to refer to path `/tmp/guix-tests/store/bdx3lhq3793i8lz6fvldrp917ba52v1v-foo'
@ build-started /tmp/guix-tests/store/m6xfqmf17li67lvb3lhr8dcpby19xqaa-leaked-env-vars.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/m6//xfqmf17li67lvb3lhr8dcpby19xqaa-leaked-env-vars.drv.bz2
@ build-succeeded /tmp/guix-tests/store/m6xfqmf17li67lvb3lhr8dcpby19xqaa-leaked-env-vars.drv -
+                 "disallowed"
+                 %bash
+                 `("-c" ,(string-append "echo " txt "> $out"))
+                 #:inputs
+                 `((,%bash) (,txt))
+                 #:allowed-references
+                 '())))
+     (guard (c ((nix-protocol-error? c) #t))
+            (build-derivations %store (list drv))
+            #f)))
actual-value: #t
result: PASS

test-name: derivation #:allowed-references, self allowed
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:611
source:
+ (test-assert
+   "derivation #:allowed-references, self allowed"
+   (let ((drv (derivation
+                %store
+                "allowed"
+                %bash
+                '("-c" "echo $out > $out")
+                #:inputs
+                `((,%bash))
+                #:allowed-references
+                '("out"))))
+     (build-derivations %store (list drv))))
actual-value: #t
result: PASS

test-name: derivation #:allowed-references, self not allowed
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:618
source:
+ (test-assert
+   "derivation #:allowed-references, self not allowed"
+   (let ((drv (derivation
+                %store
+                "disallowed"
+                %bash
+                `("-c" ,"echo $out > $out")
+                #:inputs
+                `((,%bash))
+                #:allowed-references
+                '())))
+     (guard (c ((nix-protocol-error? c) #t))
+            (build-derivations %store (list drv))
+            #f)))
actual-value: #t
result: PASS

test-name: derivation #:disallowed-references, ok
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:629
source:
+ (test-assert
+   "derivation #:disallowed-references, ok"
+   (let ((drv (derivation
+                %store
+                "disallowed"
+                %bash
+                '("-c" "echo hello > $out")
+                #:inputs
+                `((,%bash))
+                #:disallowed-references
+                '("out"))))
+     (build-derivations %store (list drv))))
actual-value: #t
result: PASS

test-name: derivation #:disallowed-references, not ok
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:636
source:
+ (test-assert
+   "derivation #:disallowed-references, not ok"
+   (let* ((txt (add-text-to-store %store "foo" "Hello, world."))
+          (drv (derivation
+                 %store
+                 "disdisallowed"
+                 %bash
+                 `("-c" ,(string-append "echo " txt "> $out"))
+                 #:inputs
+                 `((,%bash) (,txt))
+                 #:disallowed-references
+                 (list txt))))
+     (guard (c ((nix-protocol-error? c) #t))
+            (build-derivations %store (list drv))
+            #f)))
actual-value: #t
result: PASS

test-name: derivation #:leaked-env-vars
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:651
source:
+ (test-equal
+   "derivation #:leaked-env-vars"
+   (getenv "NIX_STATE_DIR")
+   (let* ((value (getenv "NIX_STATE_DIR"))
+          (drv (derivation
+                 %store
+                 "leaked-env-vars"
+                 %bash
+                 '("-c" "echo -n $NIX_STATE_DIR > $out")
+                 #:hash
+                 (sha256 (string->utf8 value))
+                 #:hash-algo
+                 'sha256
+                 #:inputs
+                 `((,%bash))
+                 #:leaked-env-vars
+                 '("NIX_STATE_DIR"))))
+     (and (build-derivations %store (list drv))
+          (call-with-input-file
+            (derivation->output-path drv)
+            get-string-all))))
expected-value: "/tmp/guix-tests/var/13286"
actual-value: "/tmp/guix-tests/var/13286"
result: PASS

test-name: build derivation with coreutils
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:672
source:
+ (test-assert
+   "build derivation with coreutils"
+   (let* ((builder
+            (add-text-to-store
+              %store
+              "build-with-coreutils.sh"
+              "echo $PATH ; mkdir --version ; mkdir $out ; touch $out/good"
+              '()))
+          (drv (derivation
+                 %store
+                 "foo"
+                 %bash
+                 `(,builder)
+                 #:env-vars
+                 `(("PATH"
+                    unquote
+                    (string-append
+                      (derivation->output-path %coreutils)
+                      "/bin")))
+                 #:inputs
+                 `((,builder) (,%coreutils))))
+          (succeeded?
+            (build-derivations %store (list drv))))
+     (and succeeded?
+          (let ((p (derivation->output-path drv)))
+            (and (valid-path? %store p)
+                 (file-exists? (string-append p "/good")))))))
result: SKIP

test-name: build-expression->derivation and invalid module name
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:695
source:
+ (test-equal
+   "build-expression->derivation and invalid module name"
+   '(file-search-error
+      "guix/module/that/does/not/exist.scm")
+   (guard (c ((file-search-error? c)
+              (list 'file-search-error
+                    (file-search-error-file-name c))))
+          (build-expression->derivation
+            %store
+            "foo"
+            #t
+            #:modules
+            '((guix module that does not exist)))))
expected-value: (file-search-error "guix/module/that/does/not/exist.scm")
actual-value: (file-search-error "guix/module/that/does/not/exist.scm")
result: PASS

test-name: build-expression->derivation and builder encoding
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:704
source:
+ (test-equal
+   "build-expression->derivation and builder encoding"
+   '("UTF-8" #t)
+   (let* ((exp '(λ (α) (+ α 1)))
+          (drv (build-expression->derivation %store "foo" exp)))
+     (match (derivation-builder-arguments drv)
+            ((... builder)
+             (with-fluids
+               ((%default-port-encoding "UTF-8"))
+               (call-with-input-file
+                 builder
+                 (lambda (port)
+                   (list (port-encoding port)
+                         (->bool
+                           (string-contains
+                             (get-string-all port)
+                             "(λ (α) (+ α 1))"))))))))))
expected-value: ("UTF-8" #t)
actual-value: ("UTF-8" #t)
result: PASS

test-name: build-expression->derivation and derivation-prerequisites
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:718
source:
+ (test-assert
+   "build-expression->derivation and derivation-prerequisites"
+   (let ((drv (build-expression->derivation %store "fail" #f)))
+     (any (match-lambda
+            (($ <derivation-input> path)
+             (string=?
+               path
+               (derivation-file-name (%guile-for-build)))))
+          (derivation-prerequisites drv))))
actual-value: #t
result: PASS

test-name: derivation-prerequisites and valid-derivation-input?
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:725
source:
+ (test-assert
+   "derivation-prerequisites and valid-derivation-input?"
+   (let* ((a (build-expression->derivation
+               %store
+               "a"
+               '(mkdir %output)))
+          (b (build-expression->derivation
+               %store
+               "b"
+               `(list ,(random-text))))
+          (c (build-expression->derivation
+               %store
+               "c"
+               `(mkdir %output)
+               #:inputs
+               `(("a" ,a) ("b" ,b)))))
+     (build-derivations
+       %store
+       (list a
+             (package-derivation %store %bootstrap-guile)))
+     (match (derivation-prerequisites
+              c
+              (cut valid-derivation-input? %store <>))
+            ((($ <derivation-input> file ("out")))
+             (string=? file (derivation-file-name b)))
+ @ build-started /tmp/guix-tests/store/9d7mw11w6hmhnzq7ns8fl91plvyyimpj-a.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/9d//7mw11w6hmhnzq7ns8fl91plvyyimpj-a.drv.bz2
@ build-succeeded /tmp/guix-tests/store/9d7mw11w6hmhnzq7ns8fl91plvyyimpj-a.drv -
@ build-started /tmp/guix-tests/store/siz27i7vk0g1xngsx049p9vrvss9c712-goo.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/si//z27i7vk0g1xngsx049p9vrvss9c712-goo.drv.bz2
@ build-succeeded /tmp/guix-tests/store/siz27i7vk0g1xngsx049p9vrvss9c712-goo.drv -
substitute: warning: authentication and authorization of substitutes disabled!
substitute: guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
@ build-started /tmp/guix-tests/store/qfl2559affw2jnz43j8c6dx0rjngqns3-silent.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/qf//l2559affw2jnz43j8c6dx0rjngqns3-silent.drv.bz2
building of `/tmp/guix-tests/store/qfl2559affw2jnz43j8c6dx0rjngqns3-silent.drv' timed out after 1 seconds of silence
@ build-failed /tmp/guix-tests/store/qfl2559affw2jnz43j8c6dx0rjngqns3-silent.drv - timeout
killing process 13693
substitute: warning: authentication and authorization of substitutes disabled!
substitute: guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
@ build-started /tmp/guix-tests/store/6d3dbcj98inv78d5abwp41fbis15kvy6-slow.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/6d//3dbcj98inv78d5abwp41fbis15kvy6-slow.drv.bz2
building of `/tmp/guix-tests/store/6d3dbcj98inv78d5abwp41fbis15kvy6-slow.drv' timed out after 1 seconds
@ build-failed /tmp/guix-tests/store/6d3dbcj98inv78d5abwp41fbis15kvy6-slow.drv - timeout
killing process 13715
           (x (pk 'fail x #f)))))
actual-value: #t
result: PASS

test-name: build-expression->derivation without inputs
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:743
source:
+ (test-assert
+   "build-expression->derivation without inputs"
+   (let* ((builder
+            '(begin
+               (mkdir %output)
+               (call-with-output-file
+                 (string-append %output "/test")
+                 (lambda (p) (display '(hello guix) p)))))
+          (drv (build-expression->derivation
+                 %store
+                 "goo"
+                 builder))
+          (succeeded?
+            (build-derivations %store (list drv))))
+     (and succeeded?
+          (let ((p (derivation->output-path drv)))
+            (equal?
+              '(hello guix)
+              (call-with-input-file
+                (string-append p "/test")
+                read))))))
actual-value: #t
result: PASS

test-name: build-expression->derivation and max-silent-time
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:756
source:
+ (test-assert
+   "build-expression->derivation and max-silent-time"
+   (let* ((store (let ((s (open-connection)))
+                   (set-build-options s #:max-silent-time 1)
+                   s))
+          (builder '(begin (sleep 100) (mkdir %output) #t))
+          (drv (build-expression->derivation
+                 store
+                 "silent"
+                 builder))
+          (out-path (derivation->output-path drv)))
+     (guard (c ((nix-protocol-error? c)
+                (and (string-contains
+                       (nix-protocol-error-message c)
+                       "failed")
+                     (not (valid-path? store out-path)))))
+            (build-derivations store (list drv))
+            #f)))
actual-value: #t
result: PASS

test-name: build-expression->derivation and timeout
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:770
source:
+ (test-assert
+   "build-expression->derivation and timeout"
+   (let* ((store (let ((s (open-connection)))
+                   (set-build-options s #:timeout 1)
+                   s))
+          (builder '(begin (sleep 100) (mkdir %output) #t))
+          (drv (build-expression->derivation
+                 store
+                 "slow"
+                 builder))
+          (out-path (derivation->output-path drv)))
+     (guard (c ((nix-protocol-error? c)
+                (and (string-contains
+                       (nix-protocol-error-message c)
+                       "failed")
+                     (not (valid-path? store out-path)))))
+            (build-derivations store (list drv))
+            #f)))
actual-value: #t
result: PASS

test-name: build-expression->derivation and derivation-prerequisites-to-build
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:784
source:
+ (test-assert
+   "build-expression->derivation and derivation-prerequisites-to-build"
+   (let ((drv (build-expression->derivation %store "fail" #f)))
+     (null? (derivation-prerequisites-to-build %store drv))))
actual-value: #t
result: PASS

test-name: derivation-prerequisites-to-build when outputs already present
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:790
source:
+ (test-assert
+   "derivation-prerequisites-to-build when outputs already present"
+   (let* ((builder '(begin (mkdir %output) #t))
+          (input-drv
+            (build-expression->derivation
+              %store
+              "input"
+              builder))
+          (input-path
+            (derivation-output-path
+              (assoc-ref (derivation-outputs input-drv) "out")))
+          (drv (build-expression->derivation
+                 %store
+                 "something"
+                 builder
+                 #:inputs
+                 `(("i" ,input-drv))))
+          (output (derivation->output-path drv)))
+     (when (valid-path? %store input-path)
+           @ build-started /tmp/guix-tests/store/cbc4v7vanc01h71qnngr0k35kvvvik9v-input.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/cb//c4v7vanc01h71qnngr0k35kvvvik9v-input.drv.bz2
@ build-succeeded /tmp/guix-tests/store/cbc4v7vanc01h71qnngr0k35kvvvik9v-input.drv -
@ build-started /tmp/guix-tests/store/5ykgrvz6nsm8rz51hww0wfb7kj83s5x7-something.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/5y//kgrvz6nsm8rz51hww0wfb7kj83s5x7-something.drv.bz2
@ build-succeeded /tmp/guix-tests/store/5ykgrvz6nsm8rz51hww0wfb7kj83s5x7-something.drv -
finding garbage collector roots...
removing stale temporary roots file `/tmp/guix-tests/var/13286/temproots/13308'
deleting unused links...
substitute: warning: authentication and authorization of substitutes disabled!
substitute: guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
substitute: warning: authentication and authorization of substitutes disabled!
substitute: guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
(delete-paths %store (list input-path)))
+     (when (valid-path? %store output)
+           (delete-paths %store (list output)))
+     (and (equal?
+            (map derivation-input-path
+                 (derivation-prerequisites-to-build %store drv))
+            (list (derivation-file-name input-drv)))
+          (build-derivations %store (list drv))
+          (delete-paths %store (list input-path))
+          (not (valid-path? %store input-path))
+          (null? (derivation-prerequisites-to-build %store drv)))))
actual-value: #t
result: PASS

test-name: derivation-prerequisites-to-build and substitutes
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:819
source:
+ (test-assert
+   "derivation-prerequisites-to-build and substitutes"
+   (let* ((store (open-connection))
+          (drv (build-expression->derivation
+                 store
+                 "prereq-subst"
+                 (random 1000)))
+          (output (derivation->output-path drv)))
+     (set-build-options
+       store
+       #:use-substitutes?
+       #t
+       #:substitute-urls
+       (%test-substitute-urls))
+     (with-derivation-narinfo
+       drv
+       (let-values
+         (((build download)
+           (derivation-prerequisites-to-build store drv))
+          ((build* download*)
+           (derivation-prerequisites-to-build
+             store
+             drv
+             #:substitutable-info
+             (const #f))))
+         (and (null? build)
+              (equal?
+                (map substitutable-path download)
+                (list output))
+              (null? download*)
+              (null? build*))))))
actual-value: #t
result: PASS

test-name: derivation-prerequisites-to-build and substitutes, non-substitutable build
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:841
source:
+ (test-assert
+   "derivation-prerequisites-to-build and substitutes, non-substitutable build"
+   (let* ((store (open-connection))
+          (drv (build-expression->derivation
+                 store
+                 "prereq-no-subst"
+                 (random 1000)
+                 #:substitutable?
+                 #f))
+          (output (derivation->output-path drv)))
+     (set-build-options
+       store
+       #:use-substitutes?
+       #t
+       #:substitute-urls
+       (%test-substitute-urls))
+     (with-derivation-narinfo
+       drv
+       (let-values
+         (((build download)
+           (derivation-prerequisites-to-build store drv)))
+         (and (null? download)
+              (match build
+                     (((? derivation-input? input))
+                      (string=?
+                        (derivation-input-path input)
+                        (derivation-file-name drv)))))))))
actual-value: #t
result: PASS

test-name: derivation-prerequisites-to-build and substitutes, local build
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:863
source:
+ (test-assert
+   "derivation-prerequisites-to-build and substitutes, local build"
+   (with-store
+     store
+     (let* ((drv (build-expression->derivation
+                   store
+                   "prereq-subst-local"
+                   (random 1000)
+                   #:local-build?
+                   #t))
+            (output (derivation->output-path drv)))
+       (set-build-options
+         store
+         #:use-substitutes?
+         #t
+         #:substitute-urls
+         (%test-substitute-urls))
+       (with-derivation-narinfo
+         drv
+         (let-values
+           (((build download)
+             (derivation-prerequisites-to-build store drv)))
+           (and (null? build)
+                (match download
+                       (((= substitutable-path item))
+                        (string=? item (derivation->output-path drv))))))))))
actual-value: #t
result: PASS

test-name: derivation-prerequisites-to-build in 'check' mode
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:885
source:
+ (substitute: warning: authentication and authorization of substitutes disabled!
substitute: guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
building path(s) `/tmp/guix-tests/store/7fyw8c5lqz2pa9yydi8pfy46aydvbjkm-dep'
building path(s) `/tmp/guix-tests/store/g4g1n7nhlramh29475dywifpwzqx5f0x-to-check'
finding garbage collector roots...
removing stale temporary roots file `/tmp/guix-tests/var/13286/temproots/13760'
deleting `/tmp/guix-tests/store/7fyw8c5lqz2pa9yydi8pfy46aydvbjkm-dep'
deleting `/tmp/guix-tests/store/trash'
deleting unused links...
note: currently hard linking saves 0.14 MiB
@ build-started /tmp/guix-tests/store/kvz3csrwpha43pk3mvhwsrzw2yz5qviv-fail.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/kv//z3csrwpha43pk3mvhwsrzw2yz5qviv-fail.drv.bz2
builder for `/tmp/guix-tests/store/kvz3csrwpha43pk3mvhwsrzw2yz5qviv-fail.drv' failed with exit code 1
@ build-failed /tmp/guix-tests/store/kvz3csrwpha43pk3mvhwsrzw2yz5qviv-fail.drv - 1 builder for `/tmp/guix-tests/store/kvz3csrwpha43pk3mvhwsrzw2yz5qviv-fail.drv' failed with exit code 1
test-assert
+   "derivation-prerequisites-to-build in 'check' mode"
+   (with-store
+     store
+     (let* ((dep (build-expression->derivation
+                   store
+                   "dep"
+                   `(begin ,(random-text) (mkdir %output))))
+            (drv (build-expression->derivation
+                   store
+                   "to-check"
+                   '(mkdir %output)
+                   #:inputs
+                   `(("dep" ,dep)))))
+       (build-derivations store (list drv))
+       (delete-paths
+         store
+         (list (derivation->output-path dep)))
+       (and (null? (derivation-prerequisites-to-build store drv))
+            (match (derivation-prerequisites-to-build
+                     store
+                     drv
+                     #:mode
+                     (build-mode check))
+                   ((input)
+                    (string=?
+                      (derivation-input-path input)
+                      (derivation-file-name dep))))))))
actual-value: #t
result: PASS

test-name: substitution-oracle and #:substitute? #f
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:905
source:
+ (test-assert
+   "substitution-oracle and #:substitute? #f"
+   (with-store
+     store
+     (let* ((dep (build-expression->derivation
+                   store
+                   "dep"
+                   `(begin ,(random-text) (mkdir %output))))
+            (drv (build-expression->derivation
+                   store
+                   "not-subst"
+                   `(begin ,(random-text) (mkdir %output))
+                   #:substitutable?
+                   #f
+                   #:inputs
+                   `(("dep" ,dep))))
+            (query #f))
+       (define (record-substitutable-path-query store paths)
+         (when query (error "already called!" query))
+         (set! query paths)
+         '())
+       (mock ((guix store)
+              substitutable-path-info
+              record-substitutable-path-query)
+             (let ((pred (substitution-oracle store (list drv))))
+               (pred (derivation->output-path drv))))
+       (equal?
+         (pk 'query query)
+         (list (derivation->output-path dep))))))

;;; (query ("/tmp/guix-tests/store/mdma7fqxi11p48m4zh3zvdf63b6adgp5-dep"))
actual-value: #t
result: PASS

test-name: build-expression->derivation with expression returning #f
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:934
source:
+ (test-assert
+   "build-expression->derivation with expression returning #f"
+   (let* ((builder '(begin (mkdir %output) #f))
+          (drv (build-expression->derivation
+                 %store
+                 "fail"
+                 builder))
+          (out-path (derivation->output-path drv)))
+     (guard (c ((nix-protocol-error? c)
+                (and (string-match
+                       "build .* failed"
+                       (nix-protocol-error-message c))
+                     (not (valid-path? %store out-path)))))
+            (build-derivations %store (list drv))
+            #f)))
actual-value: #t
result: PASS

test-name: build-expression->derivation with two outputs
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:949
source:
+ (test-assert
+   "build-expression->derivation with two outputs"
+   (let* ((builder
+            '(begin
+               (call-with-output-file
+                 (assoc-ref %outputs "out")
+                 (lambda (p) (display '(hello) p)))
+               (call-with-output-file
+                 (assoc-ref %outputs "second")
+                 (lambda (p) (display '(world) p)))))
+          (drv (build-expression->derivation
+                 %store
+                 "double"
+                 builder
+                 #:outputs
+                 '("out" "second")))
+          (succeeded?
+            (build-derivations %store (list drv))))
+     (and succeeded?
+          (let ((one (derivation->output-path drv))
+                @ build-started /tmp/guix-tests/store/v3d6ak4h46illn6yqkid6fsid3i749yy-double.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/v3//d6ak4h46illn6yqkid6fsid3i749yy-double.drv.bz2
@ build-succeeded /tmp/guix-tests/store/v3d6ak4h46illn6yqkid6fsid3i749yy-double.drv -
@ build-started /tmp/guix-tests/store/kgv4vhnck8n97ragpd33cdvfpifzmmq5-module-import.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/kg//v4vhnck8n97ragpd33cdvfpifzmmq5-module-import.drv.bz2
@ build-succeeded /tmp/guix-tests/store/kgv4vhnck8n97ragpd33cdvfpifzmmq5-module-import.drv -
@ build-started /tmp/guix-tests/store/jrinwx604040avwnza9k60vs267vdl7n-module-import-compiled.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/jr//inwx604040avwnza9k60vs267vdl7n-module-import-compiled.drv.bz2
@ build-succeeded /tmp/guix-tests/store/jrinwx604040avwnza9k60vs267vdl7n-module-import-compiled.drv -
@ build-started /tmp/guix-tests/store/ckb6f405qgjl1spgx1jnk6jpfil49iq0-test-with-modules.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/ck//b6f405qgjl1spgx1jnk6jpfil49iq0-test-with-modules.drv.bz2
@ build-succeeded /tmp/guix-tests/store/ckb6f405qgjl1spgx1jnk6jpfil49iq0-test-with-modules.drv -
(two (derivation->output-path drv "second")))
+            (and (equal? '(hello) (call-with-input-file one read))
+                 (equal? '(world) (call-with-input-file two read)))))))
actual-value: #t
result: PASS

test-name: build-expression->derivation with one input
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:968
source:
+ (test-assert
+   "build-expression->derivation with one input"
+   (let* ((builder
+            '(call-with-output-file
+               %output
+               (lambda (p)
+                 (let ((cu (assoc-ref %build-inputs "cu")))
+                   (close 1)
+                   (dup2 (port->fdes p) 1)
+                   (execl (string-append cu "/bin/uname")
+                          "uname"
+                          "-a")))))
+          (drv (build-expression->derivation
+                 %store
+                 "uname"
+                 builder
+                 #:inputs
+                 `(("cu" ,%coreutils))))
+          (succeeded?
+            (build-derivations %store (list drv))))
+     (and succeeded?
+          (let ((p (derivation->output-path drv)))
+            (string-contains
+              (call-with-input-file p read-line)
+              "GNU")))))
result: SKIP

test-name: build-expression->derivation with modules
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:984
source:
+ (test-assert
+   "build-expression->derivation with modules"
+   (let* ((builder
+            `(begin
+               (use-modules (guix build utils))
+               (let ((out (assoc-ref %outputs "out")))
+                 (mkdir-p (string-append out "/guile/guix/nix"))
+                 #t)))
+          (drv (build-expression->derivation
+                 %store
+                 "test-with-modules"
+                 builder
+                 #:modules
+                 '((guix build utils)))))
+     (and (build-derivations %store (list drv))
+          (let* ((p (derivation->output-path drv))
+                 (s (stat (string-append p "/guile/guix/nix"))))
+            (eq? (stat:type s) 'directory)))))
actual-value: #t
result: PASS

test-name: build-expression->derivation: same fixed-output path
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:999
source:
+ (test-assert
+   "build-expression->derivation: same fixed-output path"
+   (let* ((builder1
+            '(call-with-output-file
+               %output
+               (lambda (p) (write "hello" p))))
+          (builder2
+            '(call-with-output-file
+               (pk 'difference-here! %output)
+               (lambda (p) (write "hello" p))))
+          (hash (sha256 (string->utf8 "hello")))
+          (input1
+            (build-expression->derivation
+              %store
+              "fixed"
+              builder1
+              #:hash
+              hash
+              #:hash-algo
+              'sha256))
+          (input2
+            (build-expression->derivation
+              %store
+              "fixed"
+              builder2
+              #:hash
+              hash
+              #:hash-algo
+              'sha256))
+          (succeeded?
+            (build-derivations %store (list input1 input2))))
+     (and succeeded?
+          (not (string=?
+                 (derivation-file-name input1)
+                 (derivation-file-name input2)))
+          (string=?
+            (derivation->output-path input1)
+            (derivation->output-path input2)))))
actual-value: #t
result: PASS

test-name: build-expression->derivation with a fixed-output input
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:1020
source:
+ (test-assert
+   "build-expression->derivation with a fixed-output input"
+   (let* ((builder1
+            '(call-with-output-file
+               %output
+               (lambda (p) (write "hello" p))))
+          (builder2
+            '(call-with-output-file
+               (pk 'difference-here! %output)
+               (lambda (p) (write "hello" p))))
+ @ build-started /tmp/guix-tests/store/8dkhnfprkjn6p5hh6abjbvhcypif1djn-final.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/8d//khnfprkjn6p5hh6abjbvhcypif1djn-final.drv.bz2
@ build-succeeded /tmp/guix-tests/store/8dkhnfprkjn6p5hh6abjbvhcypif1djn-final.drv -
@ build-started /tmp/guix-tests/store/q9ml6iwz4b8jffgd6l3jkllm0lm9g7aw-fixed-rec.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/q9//ml6iwz4b8jffgd6l3jkllm0lm9g7aw-fixed-rec.drv.bz2
@ build-succeeded /tmp/guix-tests/store/q9ml6iwz4b8jffgd6l3jkllm0lm9g7aw-fixed-rec.drv -
         (hash (sha256 (string->utf8 "hello")))
+          (input1
+            (build-expression->derivation
+              %store
+              "fixed"
+              builder1
+              #:hash
+              hash
+              #:hash-algo
+              'sha256))
+          (input2
+            (build-expression->derivation
+              %store
+              "fixed"
+              builder2
+              #:hash
+              hash
+              #:hash-algo
+              'sha256))
+          (builder3
+            '(let ((input (assoc-ref %build-inputs "input")))
+               (call-with-output-file
+                 %output
+                 (lambda (out)
+                   (format #f "My input is ~a.~%" input)))))
+          (final1
+            (build-expression->derivation
+              %store
+              "final"
+              builder3
+              #:inputs
+              `(("input" ,input1))))
+          (final2
+            (build-expression->derivation
+              %store
+              "final"
+              builder3
+              #:inputs
+              `(("input" ,input2)))))
+     (and (string=?
+            (derivation->output-path final1)
+            (derivation->output-path final2))
+          (string=?
+            (derivation->output-path final1)
+            (derivation-path->output-path
+              (derivation-file-name final1)))
+          (build-derivations %store (list final1 final2)))))
actual-value: #t
result: PASS

test-name: build-expression->derivation produces recursive fixed-output
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:1051
source:
+ (test-assert
+   "build-expression->derivation produces recursive fixed-output"
+   (let* ((builder
+            '(begin
+               (use-modules (srfi srfi-26))
+               (mkdir %output)
+               (chdir %output)
+               (call-with-output-file
+                 "exe"
+                 (cut display "executable" <>))
+               (chmod "exe" 511)
+               (symlink "exe" "symlink")
+               (mkdir "subdir")))
+          (drv (build-expression->derivation
+                 %store
+                 "fixed-rec"
+                 builder
+                 #:hash-algo
+                 'sha256
+                 #:hash
+                 (base32
+                   "10k1lw41wyrjf9mxydi0is5nkpynlsvgslinics4ppir13g7d74p")
+                 #:recursive?
+                 #t)))
+     (and (build-derivations %store (list drv))
+          (let* ((dir (derivation->output-path drv))
+                 (exe (string-append dir "/exe"))
+                 (link (string-append dir "/symlink"))
+                 (subdir (string-append dir "/subdir")))
+            (and (executable-file? exe)
+                 (string=?
+                   "executable"
+                   (call-with-input-file exe get-string-all))
+                 (string=? "exe" (readlink link))
+                 (file-is-directory? subdir))))))
actual-value: #t
result: PASS

test-name: build-expression->derivation uses recursive fixed-output
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:1077
source:
+ (test-assert
+   "build-expression->derivation uses recursive fixed-output"
+   (let* ((builder
+            '(call-with-output-file
+               %output
+               (lambda (port) (display "hello" port))))
+          (fixed (build-expression->derivation
+                   %store
+                   "small-fixed-rec"
+                   builder
+                   #:hash-algo
+                   'sha256
+                   #:hash
+                   (base32
+                     "0sg9f58l1jj88w6pdrfdpj5x9b1zrwszk84j81zvby36q9whhhqa")
+                   #:recursive?
+                   #t))
+          (in (derivation->output-path fixed))
+          (builder
+            `(begin
+               (mkdir %output)
+               (chdir %output)
+               (symlink ,in "symlink")))
+          (drv (build-expression->derivation
+                 %store
+         @ build-started /tmp/guix-tests/store/9a2z4zz7sraa065z4fa12g9sg6mlhkj5-small-fixed-rec.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/9a//2z4zz7sraa065z4fa12g9sg6mlhkj5-small-fixed-rec.drv.bz2
@ build-succeeded /tmp/guix-tests/store/9a2z4zz7sraa065z4fa12g9sg6mlhkj5-small-fixed-rec.drv -
@ build-started /tmp/guix-tests/store/aakag457jih22azd1mkhcvnlnv9115ky-fixed-rec-user.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/aa//kag457jih22azd1mkhcvnlnv9115ky-fixed-rec-user.drv.bz2
@ build-succeeded /tmp/guix-tests/store/aakag457jih22azd1mkhcvnlnv9115ky-fixed-rec-user.drv -
@ build-started /tmp/guix-tests/store/33xr95dfil5qna3dxlzlzyvrlw9nycn0-references-graphs.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/33//xr95dfil5qna3dxlzlzyvrlw9nycn0-references-graphs.drv.bz2
@ build-succeeded /tmp/guix-tests/store/33xr95dfil5qna3dxlzlzyvrlw9nycn0-references-graphs.drv -
@ build-started /tmp/guix-tests/store/ajqc0l1rbgd83hdid7ain2wr0wiwvvh4-original-drv2.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/aj//qc0l1rbgd83hdid7ain2wr0wiwvvh4-original-drv2.drv.bz2
@ build-succeeded /tmp/guix-tests/store/ajqc0l1rbgd83hdid7ain2wr0wiwvvh4-original-drv2.drv -
@ build-started /tmp/guix-tests/store/vks5g20fjlmi5daip35rrd34869fnql9-drv-to-remap.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/vk//s5g20fjlmi5daip35rrd34869fnql9-drv-to-remap.drv.bz2
@ build-succeeded /tmp/guix-tests/store/vks5g20fjlmi5daip35rrd34869fnql9-drv-to-remap.drv -
        "fixed-rec-user"
+                 builder
+                 #:inputs
+                 `(("fixed" ,fixed)))))
+     (and (build-derivations %store (list drv))
+          (let ((out (derivation->output-path drv)))
+            (string=?
+              (readlink (string-append out "/symlink"))
+              in)))))
actual-value: #t
result: PASS

test-name: build-expression->derivation with #:references-graphs
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:1099
source:
+ (test-assert
+   "build-expression->derivation with #:references-graphs"
+   (let* ((input (add-text-to-store
+                   %store
+                   "foo"
+                   "hello"
+                   (list %bash %mkdir)))
+          (builder '(copy-file "input" %output))
+          (drv (build-expression->derivation
+                 %store
+                 "references-graphs"
+                 builder
+                 #:references-graphs
+                 `(("input" unquote input))))
+          (out (derivation->output-path drv)))
+     (define (deps path . deps)
+       (let ((count (length deps)))
+         (string-append
+           path
+           "\n\n"
+           (number->string count)
+           "\n"
+           (string-join (sort deps string<?) "\n")
+           (if (zero? count) "" "\n"))))
+     (and (build-derivations %store (list drv))
+          (equal?
+            (call-with-input-file out get-string-all)
+            (string-concatenate
+              (map cdr
+                   (sort (map (lambda (p d) (cons p (apply deps p d)))
+                              (list input %bash %mkdir)
+                              (list (list %bash %mkdir) '() '()))
+                         (lambda (x y)
+                           (match x
+                                  ((p1 . _)
+                                   (match y
+                                          ((p2 . _)
+                                           (string<? p1 p2)))))))))))))
actual-value: #t
result: PASS

test-name: map-derivation
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:1130
source:
+ (test-equal
+   "map-derivation"
+   "hello"
+   (let* ((joke (package-derivation %store guile-1.8))
+          (good (package-derivation %store %bootstrap-guile))
+          (drv1 (build-expression->derivation
+                  %store
+                  "original-drv1"
+                  #f
+                  #:guile-for-build
+                  joke))
+          (drv2 (build-expression->derivation
+                  %store
+                  "original-drv2"
+                  '(call-with-output-file
+                     %output
+                     (lambda (p) (display "hello" p)))))
+          (drv3 (build-expression->derivation
+                  %store
+                  "drv-to-remap"
+                  '(let ((in (assoc-ref %build-inputs "in")))
+                     (copy-file in %output))
+                  #:inputs
+                  `(("in" ,drv1))
+                  #:guile-for-build
+                  joke))
+          (drv4 (map-derivation
+                  %store
+                  drv3
+                  `((,drv1 unquote drv2) (,joke unquote good))))
+          (out (derivation->output-path drv4)))
+     (and (build-derivations
+            %store
+            (list (pk 'remapped drv4)))
+          (call-with-input-file out get-string-all))))

;;; (remapped #<derivation /tmp/guix-tests/store/vks5g20fjlmi5daip35rrd34869fnql9-drv-to-remap.drv => /tmp/guix-tests/store/f8prvykpaplzl0gw9qykipviq3vil9ws-drv-to-remap 2cdd0f0>)
expected-value: "hello"
actual-value: "hello"
result: PASS

test-name: map-derivation, sources
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/derivations.scm:1153
source:
+ (test-equal
+   "map-derivation, sources"
+   "hello"
+   (let* ((script1
+            (add-text-to-store %store "fail.sh" "exit 1"))
+          (script2
+            (add-text-to-store
+              %store
+              "hi.sh"
+              @ build-started /tmp/guix-tests/store/3b1r9qvgpcami02g66iqgnbfm3xxsx95-drv-to-remap.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/3b//1r9qvgpcami02g66iqgnbfm3xxsx95-drv-to-remap.drv.bz2
@ build-succeeded /tmp/guix-tests/store/3b1r9qvgpcami02g66iqgnbfm3xxsx95-drv-to-remap.drv -
"echo -n hello > $out"))
+          (bash-full
+            (package-derivation
+              %store
+              (@ (gnu packages bash) bash)))
+          (drv1 (derivation
+                  %store
+                  "drv-to-remap"
+                  (derivation->output-path bash-full)
+                  `("-e" ,script1)
+                  #:inputs
+                  `((,bash-full) (,script1))))
+          (drv2 (map-derivation
+                  %store
+                  drv1
+                  `((,bash-full unquote %bash)
+                    (,script1 unquote script2))))
+          (out (derivation->output-path drv2)))
+     (and (build-derivations
+            %store
+            (list (pk 'remapped* drv2)))
+          (call-with-input-file out get-string-all))))

;;; (remapped* #<derivation /tmp/guix-tests/store/3b1r9qvgpcami02g66iqgnbfm3xxsx95-drv-to-remap.drv => /tmp/guix-tests/store/d16rf6zch2w23cn1v1gm8r3w12pc7y2m-drv-to-remap 2931140>)
expected-value: "hello"
actual-value: "hello"
result: PASS


SKIP: tests/packages
====================

test-name: printer with location
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:69
source:
+ (test-assert
+   "printer with location"
+   (string-match
+     "^#<package foo@0 foo.scm:42 [[:xdigit:]]+>$"
+     (with-output-to-string
+       (lambda ()
+         (write (dummy-package
+                  "foo"
+                  (location (make-location "foo.scm" 42 7))))))))
actual-value: #("#<package foo@0 foo.scm:42 1b496c0>" (0 . 35))
result: PASS

test-name: printer without location
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:77
source:
+ (test-assert
+   "printer without location"
+   (string-match
+     "^#<package foo@0 [[:xdigit:]]+>$"
+     (with-output-to-string
+       (lambda ()
+         (write (dummy-package "foo" (location #f)))))))
actual-value: #("#<package foo@0 1b49540>" (0 . 24))
result: PASS

test-name: hidden-package
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:84
source:
+ (test-assert
+   "hidden-package"
+   (and (hidden-package?
+          (hidden-package (dummy-package "foo")))
+        (not (hidden-package? (dummy-package "foo")))))
actual-value: #t
result: PASS

test-name: package-superseded
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:88
source:
+ (test-assert
+   "package-superseded"
+   (let* ((new (dummy-package "bar"))
+          (old (deprecated-package "foo" new)))
+     (and (eq? (package-superseded old) new)
+          (mock ((gnu packages)
+                 find-best-packages-by-name
+                 (const (list old)))
+                (specification->package "foo")
+                (and (eq? new (specification->package "foo"))
+                     (eq? new (specification->package+output "foo")))))))
actual-value: #t
result: PASS

test-name: transaction-upgrade-entry, zero upgrades
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:97
source:
+ (test-assert
+   "transaction-upgrade-entry, zero upgrades"
+   (let* ((old (dummy-package "foo" (version "1")))
+          (tx (mock ((gnu packages)
+                     find-newest-available-packages
+                     (const vlist-null))
+                    ((@@ (guix scripts package)
+                         transaction-upgrade-entry)
+                     (manifest-entry
+                       (inherit (package->manifest-entry old))
+                       (item (string-append
+                               (%store-prefix)
+                               "/"
+                               (make-string 32 #\e)
+                               "-foo-1")))
+                     (manifest-transaction)))))
+     (manifest-transaction-null? tx)))
actual-value: #t
result: PASS

test-name: transaction-upgrade-entry, one upgrade
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:109
source:
+ (test-assert
+   "transaction-upgrade-entry, one upgrade"
+   (let* ((old (dummy-package "foo" (version "1")))
+          (new (dummy-package "foo" (version "2")))
+          (tx (mock ((gnu packages)
+                     find-newest-available-packages
+                     (const (vhash-cons "foo" (list "2" new) vlist-null)))
+                    ((@@ (guix scripts package)
+                         transaction-upgrade-entry)
+                     (manifest-entry
+                       (inherit (package->manifest-entry old))
+                       (item (string-append
+                               (%store-prefix)
+                               "/"
+                               (make-string 32 #\e)
+                               "-foo-1")))
+                     (manifest-transaction)))))
+     (and (match (manifest-transaction-install tx)
+                 ((($ <manifest-entry> "foo" "2" "out" item))
+                  (eq? item new)))
+          (null? (manifest-transaction-remove tx)))))
actual-value: #t
result: PASS

test-name: transaction-upgrade-entry, superseded package
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:125
source:
+ (test-assert
+   "transaction-upgrade-entry, superseded package"
+   (let* ((old (dummy-package "foo" (version "1")))
+          (new (dummy-package "bar" (version "2")))
+          (dep (deprecated-package "foo" new))
+          (tx (mock ((gnu packages)
+                     find-newest-available-packages
+                     (const (vhash-cons "foo" (list "2" dep) vlist-null)))
+                    ((@@ (guix scripts package)
+                         transaction-upgrade-entry)
+                     (manifest-entry
+                       (inherit (package->manifest-entry old))
+                       (item (string-append
+                               (%store-prefix)
+                               "/"
+                               (make-string 32 #\e)
+                               "-foo-1")))
+                     (manifest-transaction)))))
+     (and (match (manifest-transaction-install tx)
+                 ((($ <manifest-entry> "bar" "2" "out" item))
+                  (eq? item new)))
+          (match (manifest-transaction-remove tx)
+                 (((? manifest-pattern? pattern))
+                  (and (string=? (manifest-pattern-name pattern) "foo")
+                       (string=? (manifest-pattern-version pattern) "1")
+                       (string=?
+                         (manifest-pattern-output pattern)
+                         "out")))))))
actual-value: #t
result: PASS

test-name: package-field-location
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:146
source:
+ (test-assert
+   "package-field-location"
+   (let ()
+     (define (goto port line column)
+       (unless
+         (and (= (port-column port) (- column 1))
+              (= (port-line port) (- line 1)))
+         (unless
+           (eof-object? (get-char port))
+           (goto port line column))))
+     (define read-at
+       (match-lambda
+         (($ <location> file line column)
+          (call-with-input-file
+            (search-path %load-path file)
+            (lambda (port)
+              (goto port line column)
+              (read port))))))
+     (and (member
+            (read-at
+              (package-field-location %bootstrap-guile 'name))
+            (let ((name (package-name %bootstrap-guile)))
+              (list name `(name ,name))))
+          (member
+            (read-at
+              (package-field-location
+                %bootstrap-guile
+                'version))
+            (let ((version (package-version %bootstrap-guile)))
+              (list version `(version ,version))))
+          (not (package-field-location
+                 %bootstrap-guile
+                 'does-not-exist)))))
actual-value: #t
result: PASS

test-name: package-field-location, relative file name
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:173
source:
+ (test-equal
+   "package-field-location, relative file name"
+   (location-file
+     (package-location %bootstrap-guile))
+   (with-fluids
+     ((%file-port-name-canonicalization 'absolute))
+     (location-file
+       (package-field-location
+         %bootstrap-guile
+         'version))))
expected-value: "gnu/packages/bootstrap.scm"
actual-value: "gnu/packages/bootstrap.scm"
result: PASS

test-name: package-transitive-inputs
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:178
source:
+ (test-assert
+   "package-transitive-inputs"
+   (let* ((a (dummy-package "a"))
+          (b (dummy-package
+               "b"
+               (propagated-inputs `(("a" ,a)))))
+          (c (dummy-package "c" (inputs `(("a" ,a)))))
+          (d (dummy-package
+               "d"
+               (propagated-inputs `(("x" "something.drv")))))
+          (e (dummy-package
+               "e"
+               (inputs `(("b" ,b) ("c" ,c) ("d" ,d))))))
+     (and (null? (package-transitive-inputs a))
+          (equal?
+            `(("a" ,a))
+            (package-transitive-inputs b))
+          (equal?
+            `(("a" ,a))
+            (package-transitive-inputs c))
+          (equal?
+            (package-propagated-inputs d)
+            (package-transitive-inputs d))
+          (equal?
+            `(("b" ,b)
+              ("c" ,c)
+              ("d" ,d)
+              ("a" ,a)
+              ("x" "something.drv"))
+            (pk 'x (package-transitive-inputs e))))))

;;; (x (("b" #<package b@0 /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:180 1e9a3c0>) ("c" #<package c@0 /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:182 1e9a240>) ("d" #<package d@0 /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:184 1e9a0c0>) ("a" #<package a@0 /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:179 1e9a540>) ("x" "something.drv")))
actual-value: #t
result: PASS

test-name: package-transitive-inputs, no duplicates
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:197
source:
+ (test-assert
+   "package-transitive-inputs, no duplicates"
+   (let* ((a (dummy-package "a"))
+          (b (dummy-package
+               "b"
+               (inputs `(("a+" ,a)))
+               (native-inputs `(("a*" ,a)))
+               (propagated-inputs `(("a" ,a)))))
+          (c (dummy-package
+               "c"
+               (propagated-inputs `(("b" ,b)))))
+          (d (dummy-package "d" (inputs `(("a" ,a) ("c" ,c)))))
+          (e (dummy-package "e" (inputs `(("b" ,b) ("c" ,c))))))
+     (and (null? (package-transitive-inputs a))
+          (equal?
+            `(("a*" ,a) ("a+" ,a) ("a" ,a))
+            (package-transitive-inputs b))
+          (equal?
+            `(("b" ,b) ("a" ,a))
+            (package-transitive-inputs c))
+          (equal?
+            `(("a" ,a) ("c" ,c) ("b" ,b))
+            (package-transitive-inputs d))
+          (equal?
+            `(("b" ,b) ("c" ,c) ("a" ,a))
+            (package-transitive-inputs e)))))
actual-value: #t
result: PASS

test-name: package-transitive-supported-systems
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:219
source:
+ (test-equal
+   "package-transitive-supported-systems"
+   '(("x" "y" "z") ("x" "y") ("y") ("y") ("y"))
+   (let* ((a (dummy-package
+               "a"
+               (build-system trivial-build-system)
+               (supported-systems '("x" "y" "z"))))
+          (b (dummy-package
+               "b"
+               (build-system trivial-build-system)
+               (supported-systems '("x" "y"))
+               (inputs `(("a" ,a)))))
+          (c (dummy-package
+               "c"
+               (build-system trivial-build-system)
+               (supported-systems '("y" "z"))
+               (inputs `(("b" ,b)))))
+          (d (dummy-package
+               "d"
+               (build-system trivial-build-system)
+               (supported-systems '("x" "y" "z"))
+               (inputs `(("b" ,b) ("c" ,c)))))
+          (e (dummy-package
+               "e"
+               (build-system trivial-build-system)
+               (supported-systems '("x" "y" "z"))
+               (inputs `(("d" ,d))))))
+     (list (package-transitive-supported-systems a)
+           (package-transitive-supported-systems b)
+           (package-transitive-supported-systems c)
+           (package-transitive-supported-systems d)
+           (package-transitive-supported-systems e))))
expected-value: (("x" "y" "z") ("x" "y") ("y") ("y") ("y"))
actual-value: (("x" "y" "z") ("x" "y") ("y") ("y") ("y"))
result: PASS

test-name: origin-actual-file-name
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:252
source:
+ (test-equal
+   "origin-actual-file-name"
+   "foo-1.tar.gz"
+   (let ((o (dummy-origin
+              (uri "http://www.example.com/foo-1.tar.gz"))))
+     (origin-actual-file-name o)))
expected-value: "foo-1.tar.gz"
actual-value: "foo-1.tar.gz"
result: PASS

test-name: origin-actual-file-name, file-name
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:257
source:
+ (test-equal
+   "origin-actual-file-name, file-name"
+   "foo-1.tar.gz"
+   (let ((o (dummy-origin
+              (uri "http://www.example.com/tarball")
+              (file-name "foo-1.tar.gz"))))
+     (origin-actual-file-name o)))
expected-value: "foo-1.tar.gz"
actual-value: "foo-1.tar.gz"
result: PASS

test-name: package-direct-sources, no source
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:274
source:
+ (test-assert
+   "package-direct-sources, no source"
+   (null? (package-direct-sources a)))
actual-value: #t
result: PASS

test-name: package-direct-sources, #f source
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:276
source:
+ (test-equal
+   "package-direct-sources, #f source"
+   (list i)
+   (package-direct-sources b))
expected-value: (#<origin "http://www.example.com" xx35467pxx35467pxx35467pxx35467pxx35467pxx35467pxx3q () 2092780>)
actual-value: (#<origin "http://www.example.com" xx35467pxx35467pxx35467pxx35467pxx35467pxx35467pxx3q () 2092780>)
result: PASS

test-name: package-direct-sources, not input source
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:279
source:
+ (test-equal
+   "package-direct-sources, not input source"
+   (list u)
+   (package-direct-sources d))
expected-value: (#<origin "http://www.example.com" xx35467pxx35467pxx35467pxx35467pxx35467pxx35467pxx3q () 2092840>)
actual-value: (#<origin "http://www.example.com" xx35467pxx35467pxx35467pxx35467pxx35467pxx35467pxx3q () 2092840>)
result: PASS

test-name: package-direct-sources
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:282
source:
+ (test-assert
+   "package-direct-sources"
+   (let ((s (package-direct-sources c)))
+     (and (= (length (pk 's-sources s)) 2)
+          (member o s)
+          (member i s))))

;;; (s-sources (#<origin "http://www.example.com" xx35467pxx35467pxx35467pxx35467pxx35467pxx35467pxx3q () 2092900> #<origin "http://www.example.com" xx35467pxx35467pxx35467pxx35467pxx35467pxx35467pxx3q () 2092780>))
actual-value: (#<origin "http://www.example.com" xx35467pxx35467pxx35467pxx35467pxx35467pxx35467pxx3q () 2092780>)
result: PASS

test-name: package-transitive-sources
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:287
source:
+ (test-assert
+   "package-transitive-sources"
+   (let ((s (package-transitive-sources d)))
+     (and (= (length (pk 'd-sources s)) 3)
+          (member o s)
+          (member i s)
+          (member u s))))

;;; (d-sources (#<origin "http://www.example.com" xx35467pxx35467pxx35467pxx35467pxx35467pxx35467pxx3q () 2092840> #<origin "http://www.example.com" xx35467pxx35467pxx35467pxx35467pxx35467pxx35467pxx3q () 2092900> #<origin "http://www.example.com" xx35467pxx35467pxx35467pxx35467pxx35467pxx35467pxx3q () 2092780>))
actual-value: (#<origin "http://www.example.com" xx35467pxx35467pxx35467pxx35467pxx35467pxx35467pxx3q () 2092840> #<origin "http://www.example.com" xx35467pxx35467pxx35467pxx35467pxx35467pxx35467pxx3q () 2092900> #<origin "http://www.example.com" xx35467pxx35467pxx35467pxx35467pxx35467pxx35467pxx3q () 2092780>)
result: PASS

test-name: transitive-input-references
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:294
source:
+ (test-assert
+   "transitive-input-references"
+   (let* ((a (dummy-package "a"))
+          (b (dummy-package "b"))
+          (c (dummy-package
+               "c"
+               (inputs `(("a" ,a)))
+               (propagated-inputs `(("boo" ,b)))))
+          (d (dummy-package "d" (inputs `(("c*" ,c)))))
+          (keys (map (match-lambda (('assoc-ref 'l key) key))
+                     (pk 'refs
+                         (transitive-input-references
+                           'l
+                           (package-inputs d))))))
+     (and (= (length keys) 2)
+          (member "c*" keys)
+          (member "boo" keys))))

;;; (refs ((assoc-ref l "c*") (assoc-ref l "boo")))
actual-value: ("boo")
result: PASS

test-name: package-transitive-supported-systems, implicit inputs
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:311
source:
+ (test-equal
+   "package-transitive-supported-systems, implicit inputs"
+   %supported-systems
+   (let ((p (dummy-package
+              "foo"
+              (build-system gnu-build-system)
+              (supported-systems
+                `("does-not-exist" "foobar" ,@%supported-systems)))))
+     (package-transitive-supported-systems p)))
expected-value: ("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux" "mips64el-linux")
actual-value: ("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux" "mips64el-linux")
result: PASS

test-name: supported-package?
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:322
source:
+ (test-assert
+   "supported-package?"
+   (let ((p (dummy-package
+              "foo"
+              (build-system gnu-build-system)
+              (supported-systems
+                '("x86_64-linux" "does-not-exist")))))
+     (and (supported-package? p "x86_64-linux")
+          (not (supported-package? p "does-not-exist"))
+          (not (supported-package? p "i686-linux")))))
actual-value: #t
result: PASS

test-name: package-source-derivation, file
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:332
source:
+ (test-assert
+   "package-source-derivation, file"
+   (let* ((file (search-path %load-path "guix.scm"))
+          (package
+            (package
+              (inherit (dummy-package "p"))
+              (source file)))
+          (source
+            (package-source-derivation
+              %store
+              (package-source package))))
+     (and (store-path? source)
+          (valid-path? %store source)
+          (equal?
+            (call-with-input-file source get-bytevector-all)
+            (call-with-input-file file get-bytevector-all)))))
actual-value: #t
result: PASS

test-name: package-source-derivation, store path
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:343
source:
+ (test-assert
+   "package-source-derivation, store path"
+   (let* ((file (add-to-store
+                  %store
+                  "guix.scm"
+                  #t
+                  "sha256"
+                  (search-path %load-path "guix.scm")))
+          (package
+            (package
+              (inherit (dummy-package "p"))
+              (source file)))
+          (source
+            (package-source-derivation
+              %store
+              (package-source package))))
+     (string=? file source)))
actual-value: #t
result: PASS

test-name: package-source-derivation, indirect store path
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:352
source:
+ (test-assert
+   "package-source-derivation, indirect store path"
+   (let* ((dir (add-to-store
+                 %store
+                 "guix-build"
+                 #t
+                 "sha256"
+                 (dirname
+                   (search-path %load-path "guix/build/utils.scm"))))
+          (package
+            (package
+              (inherit (dummy-package "p"))
+              (source (string-append dir "/utils.scm"))))
+          (source
+            (package-source-derivation
+              %store
+              (package-source package))))
+     (and (direct-store-path? source)
+          (string-suffix? "utils.scm" source))))
actual-value: #t
result: PASS

test-name: package-source-derivation, local-file
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:363
source:
+ (test-assert
+   "package-source-derivation, local-file"
+   (let* ((file (local-file "../guix/base32.scm"))
+          (package
+            (package
+              (inherit (dummy-package "p"))
+              (source file)))
+          (source
+            (package-source-derivation
+              %store
+              (package-source package))))
+     (and (store-path? source)
+          (string-suffix? "base32.scm" source)
+          (valid-path? %store source)
+          (equal?
+            (call-with-input-file source get-bytevector-all)
+            (call-with-input-file
+              (search-path %load-path "guix/base32.scm")
+              get-bytevector-all)))))
actual-value: #t
result: PASS

test-name: package-source-derivation, snippet
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:378
source:
+ (test-equal
+   "package-source-derivation, snippet"
+   "OK"
+   (let* ((file (search-bootstrap-binary
+                  (match (%current-system)
+                         ("armhf-linux" "guile-2.0.11.tar.xz")
+                         ("aarch64-linux" "guile-2.0.14.tar.xz")
+                         (_ "guile-2.0.9.tar.xz"))
+                  (%current-system)))
+          (sha256 (call-with-input-file file port-sha256))
+          (fetch (lambda* (url hash-algo hash #:optional name #:key system)
+                   (pk 'fetch url hash-algo hash name system)
+                   (interned-file url)))
+          (source
+            (bootstrap-origin
+              (origin
+                (method fetch)
+                (uri file)
+                (sha256 sha256)
+                (patch-inputs
+                  `(("tar" ,%bootstrap-coreutils&co)
+                    ("xz" ,%bootstrap-coreutils&co)
+                    ("patch" ,%bootstrap-coreutils&co)))
+                (patch-guile %bootstrap-guile)
+                (modules '((guix build utils)))
+                (snippet
+                  '(begin
+                     (chmod "." 511)
+                     (symlink "guile" "guile-rocks")
+                     (copy-recursively
+                       "../share/guile/2.0/scripts"
+                       "scripts")
+                     (chmod ".." 511))))))
+          (package
+            (package
+              (inherit (dummy-package "with-snippet"))
+              (source source)
+              (build-system trivial-build-system)
+              (inputs
+                `(("tar"
+                   ,(search-bootstrap-binary "tar" (%current-system)))
+                  ("xz"
+                   ,(search-bootstrap-binary "xz" (%current-system)))))
+              (arguments
+                `(#:guile
+                  ,%bootstrap-guile
+                  #:builder
+                  (let ((tar (assoc-ref %build-inputs "tar"))
+                        (xz (assoc-ref %build-inputs "xz"))
+                        (source (assoc-ref %build-inputs "source")))
+                    (and (zero? (system*
+                                  tar
+                                  "xvf"
+                                  source
+                                  "--use-compress-program"
+                                  xz))
+                         (string=? "guile" (readlink "bin/guile-rocks"))
+                         (file-exists? "bin/scripts/compile.scm")
+                         (let ((out (assoc-ref %outputs "out")))
+                           (call-with-output-file
+                             out
+                             (lambda (p) (display "OK" p))))))))))
+          (drv (package-derivation %store package))
+          (out (derivation->output-path drv)))
+     (and (build-derivations
+            %store
+            (list (pk 'snippet-drv drv)))
+          (call-with-input-file out get-string-all))))
result: SKIP

test-name: return value
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:442
source:
+ (test-assert
+   "return value"
+   (let ((drv (package-derivation %store (dummy-package "p"))))
+     (and (derivation? drv)
+          (file-exists? (derivation-file-name drv)))))
actual-value: #t
result: PASS

test-name: package-output
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:447
source:
+ (test-assert
+   "package-output"
+   (let* ((package (dummy-package "p"))
+          (drv (package-derivation %store package)))
+     (and (derivation? drv)
+          (string=?
+ random seed for tests: 1511174506
package 'foo' has been superseded by 'bar'
package 'foo' has been superseded by 'bar'
package 'foo' has been superseded by 'bar'
warning: package 'foo' no longer exists
package 'foo' has been superseded by 'bar'
@ build-started /tmp/guix-tests/store/hvyvgjygf729vfvbpl2k3dqvsiwx59cw-trivial-0.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/hv//yvgjygf729vfvbpl2k3dqvsiwx59cw-trivial-0.drv.bz2
@ build-succeeded /tmp/guix-tests/store/hvyvgjygf729vfvbpl2k3dqvsiwx59cw-trivial-0.drv -
           (derivation->output-path drv)
+            (package-output %store package "out")))))
actual-value: #t
result: PASS

test-name: patch not found yields a run-time error
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:454
source:
+ (test-assert
+   "patch not found yields a run-time error"
+   (guard (c ((condition-has-type? c &message)
+              (and (string-contains
+                     (condition-message c)
+                     "does-not-exist.patch")
+                   (string-contains
+                     (condition-message c)
+                     "not found"))))
+          (let ((p (package
+                     (inherit (dummy-package "p"))
+                     (source
+                       (origin
+                         (method (const #f))
+                         (uri "http://whatever")
+                         (patches
+                           (list (search-patch "does-not-exist.patch")))
+                         (sha256
+                           (base32
+                             "0amn0bbwqvsvvsh6drfwz20ydc2czk374lzw5kksbh6bf78k4ks4")))))))
+            (package-derivation %store p)
+            #f)))
actual-value: 28
result: PASS

test-name: &package-input-error
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:474
source:
+ (test-equal
+   "&package-input-error"
+   (list dummy (current-module))
+   (guard (c ((package-input-error? c)
+              (list (package-error-package c)
+                    (package-error-invalid-input c))))
+          (package-derivation %store dummy)))
expected-value: (#<package foo@0 /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:473 1eee6c0> #<directory (test-packages) 822320>)
actual-value: (#<package foo@0 /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:473 1eee6c0> #<directory (test-packages) 822320>)
result: PASS

test-name: reference to non-existent output
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:481
source:
+ (test-assert
+   "reference to non-existent output"
+   (parameterize
+     ((%graft? #f))
+     (let* ((dep (dummy-package "dep"))
+            (p (dummy-package
+                 "p"
+                 (inputs `(("dep" ,dep "non-existent"))))))
+       (guard (c ((derivation-missing-output-error? c)
+                  (and (string=?
+                         (derivation-missing-output c)
+                         "non-existent")
+                       (equal?
+                         (package-derivation %store dep)
+                         (derivation-error-derivation c)))))
+              (package-derivation %store p)))))
actual-value: #t
result: PASS

test-name: trivial
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:493
source:
+ (test-assert
+   "trivial"
+   (let* ((p (package
+               (inherit (dummy-package "trivial"))
+               (build-system trivial-build-system)
+               (source #f)
+               (arguments
+                 `(#:guile
+                   ,%bootstrap-guile
+                   #:builder
+                   (begin
+                     (mkdir %output)
+                     (call-with-output-file
+                       (string-append %output "/test")
+                       (lambda (p) (display '(hello guix) p))))))))
+          (d (package-derivation %store p)))
+     (and (build-derivations %store (list d))
+          (let ((p (pk 'drv d (derivation->output-path d))))
+            (equal?
+              '(hello guix)
+              (call-with-input-file
+                (string-append p "/test")
+                read))))))

;;; (drv #<derivation /tmp/guix-tests/store/hvyvgjygf729vfvbpl2k3dqvsiwx59cw-trivial-0.drv => /tmp/guix-tests/store/3pp7cs8ycxg16yldqd62lrk306ck1g72-trivial-0 2884eb0> "/tmp/guix-tests/store/3pp7cs8ycxg16yldqd62lrk306ck1g72-trivial-0")
actual-value: #t
result: PASS

test-name: trivial with local file as input
location: @ build-started /tmp/guix-tests/store/a6yjh360wy274bw6v69b7i4ybgznhc72-trivial-with-input-file-0.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/a6//yjh360wy274bw6v69b7i4ybgznhc72-trivial-with-input-file-0.drv.bz2
@ build-succeeded /tmp/guix-tests/store/a6yjh360wy274bw6v69b7i4ybgznhc72-trivial-with-input-file-0.drv -
@ build-started /tmp/guix-tests/store/62hvlyvzl8zdm919i5f51clhvy5a5yab-trivial-with-source-0.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/62//hvlyvzl8zdm919i5f51clhvy5a5yab-trivial-with-source-0.drv.bz2
@ build-succeeded /tmp/guix-tests/store/62hvlyvzl8zdm919i5f51clhvy5a5yab-trivial-with-source-0.drv -
@ build-started /tmp/guix-tests/store/jmw8n1jv0clislyswj0gnc7mm52q0kjv-trivial-system-dependent-input-0.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/jm//w8n1jv0clislyswj0gnc7mm52q0kjv-trivial-system-dependent-input-0.drv.bz2
@ build-succeeded /tmp/guix-tests/store/jmw8n1jv0clislyswj0gnc7mm52q0kjv-trivial-system-dependent-input-0.drv -
/tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:511
source:
+ (test-assert
+   "trivial with local file as input"
+   (let* ((i (search-path %load-path "ice-9/boot-9.scm"))
+          (p (package
+               (inherit
+                 (dummy-package "trivial-with-input-file"))
+               (build-system trivial-build-system)
+               (source #f)
+               (arguments
+                 `(#:guile
+                   ,%bootstrap-guile
+                   #:builder
+                   (copy-file
+                     (assoc-ref %build-inputs "input")
+                     %output)))
+               (inputs `(("input" ,i)))))
+          (d (package-derivation %store p)))
+     (and (build-derivations %store (list d))
+          (let ((p (pk 'drv d (derivation->output-path d))))
+            (equal?
+              (call-with-input-file p get-bytevector-all)
+              (call-with-input-file i get-bytevector-all))))))

;;; (drv #<derivation /tmp/guix-tests/store/a6yjh360wy274bw6v69b7i4ybgznhc72-trivial-with-input-file-0.drv => /tmp/guix-tests/store/ig6yxsjih7q2g4zmlplm1psjz5yprqad-trivial-with-input-file-0 2884d70> "/tmp/guix-tests/store/ig6yxsjih7q2g4zmlplm1psjz5yprqad-trivial-with-input-file-0")
actual-value: #t
result: PASS

test-name: trivial with source
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:527
source:
+ (test-assert
+   "trivial with source"
+   (let* ((i (search-path %load-path "ice-9/boot-9.scm"))
+          (p (package
+               (inherit (dummy-package "trivial-with-source"))
+               (build-system trivial-build-system)
+               (source i)
+               (arguments
+                 `(#:guile
+                   ,%bootstrap-guile
+                   #:builder
+                   (copy-file
+                     (assoc-ref %build-inputs "source")
+                     %output)))))
+          (d (package-derivation %store p)))
+     (and (build-derivations %store (list d))
+          (let ((p (derivation->output-path d)))
+            (equal?
+              (call-with-input-file p get-bytevector-all)
+              (call-with-input-file i get-bytevector-all))))))
actual-value: #t
result: PASS

test-name: trivial with system-dependent input
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:542
source:
+ (test-assert
+   "trivial with system-dependent input"
+   (let* ((p (package
+               (inherit
+                 (dummy-package "trivial-system-dependent-input"))
+               (build-system trivial-build-system)
+               (source #f)
+               (arguments
+                 `(#:guile
+                   ,%bootstrap-guile
+                   #:builder
+                   (let ((out (assoc-ref %outputs "out"))
+                         (bash (assoc-ref %build-inputs "bash")))
+                     (zero? (system*
+                              bash
+                              "-c"
+                              (format #f "echo hello > ~a" out))))))
+               (inputs
+                 `(("bash"
+                    ,(search-bootstrap-binary
+                       "bash"
+                       (%current-system)))))))
+          (d (package-derivation %store p)))
+     (and (build-derivations %store (list d))
+          (let ((p (pk 'drv d (derivation->output-path d))))
+            (eq? 'hello (call-with-input-file p read))))))

;;; (drv #<derivation /tmp/guix-tests/store/jmw8n1jv0clislyswj0gnc7mm52q0kjv-trivial-system-dependent-input-0.drv => /tmp/guix-tests/store/8pqmam9mmnpd071ya49hv33dnp8p24f5-trivial-system-dependent-input-0 2884af0> "/tmp/guix-tests/store/8pqmam9mmnpd071ya49hv33dnp8p24f5-trivial-system-dependent-input-0")
actual-value: #t
result: PASS

test-name: search paths
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:560
source:
+ (test-assert
+   "search paths"
+   (let* ((p (make-prompt-tag "return-search-paths"))
+          (s (build-system
+               (name 'raw)
+               (description
+                 "Raw build system with direct store access")
+               (lower (lambda* (name
+                                #:key
+                                source
+                                inputs
+                                system
+                                target
+                                #:allow-other-keys)
+                        (bag (name name)
+                             (system system)
+                             (target target)
+                             (build-inputs inputs)
+                             (build (lambda* (store
+                                              name
+                                              inputs
+                                              #:key
+                                              outputs
+                                              system
+                                              search-paths)
+                                      search-paths)))))))
+          (x (list (search-path-specification
+                     (variable "GUILE_LOAD_PATH")
+                     (files '("share/guile/site/2.0")))
+                   (search-path-specification
+                     (variable "GUILE_LOAD_COMPILED_PATH")
+                     (files '("share/guile/site/2.0")))))
+          (a (package
+               (inherit (dummy-package "guile"))
+               (build-system s)
+               (native-search-paths x)))
+          (b (package
+               (inherit (dummy-package "guile-foo"))
+               (build-system s)
+               (inputs `(("guile" ,a)))))
+          (c (package
+               (inherit (dummy-package "guile-bar"))
+               (build-system s)
+               (inputs `(("guile" ,a) ("guile-foo" ,b))))))
+     (let-syntax ((collect
+                    (syntax-rules ()
+                      ((_ body ...)
+                       (call-with-prompt
+                         p
+                         (lambda () body ...)
+                         (lambda (k search-paths) search-paths))))))
+       (and (null? (collect (package-derivation %store a)))
+            (equal?
+              x
+              (collect (package-derivation %store b)))
+            (equal?
+              x
+              (collect (package-derivation %store c)))))))
actual-value: #t
result: PASS

test-name: package-transitive-native-search-paths
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:602
source:
+ (test-assert
+   "package-transitive-native-search-paths"
+   (let* ((sp (lambda (name)
+                (list (search-path-specification
+                        (variable name)
+                        (files '("foo/bar"))))))
+          (p0 (dummy-package
+                "p0"
+                (native-search-paths (sp "PATH0"))))
+          (p1 (dummy-package
+                "p1"
+                (native-search-paths (sp "PATH1"))))
+          (p2 (dummy-package
+                "p2"
+                (native-search-paths (sp "PATH2"))
+                (inputs `(("p0" ,p0)))
+                (propagated-inputs `(("p1" ,p1)))))
+          (p3 (dummy-package
+                "p3"
+                (native-search-paths (sp "PATH3"))
+                (native-inputs `(("p0" ,p0)))
+                (propagated-inputs `(("p2" ,p2))))))
+     (lset= string=?
+            '("PATH1" "PATH2" "PATH3")
+            (map search-path-specification-variable
+                 (package-transitive-native-search-paths p3)))))
actual-value: #t
result: PASS

test-name: package-cross-derivation
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:622
source:
+ (test-assert
+   "package-cross-derivation"
+   (let ((drv (package-cross-derivation
+                %store
+                (dummy-package "p")
+                "mips64el-linux-gnu")))
+     (and (derivation? drv)
+          (file-exists? (derivation-file-name drv)))))
actual-value: #t
result: PASS

test-name: package-cross-derivation, trivial-build-system
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:628
source:
+ (test-assert
+   "package-cross-derivation, trivial-build-system"
+   (let ((p (package
+              (inherit (dummy-package "p"))
+              (build-system trivial-build-system)
+              (arguments '(#:builder (exit 1))))))
+     (let ((drv (package-cross-derivation
+                  %store
+                  p
+                  "mips64el-linux-gnu")))
+       (derivation? drv))))
actual-value: #t
result: PASS

test-name: package-cross-derivation, no cross builder
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:635
source:
+ (test-assert
+   "package-cross-derivation, no cross builder"
+   (let* ((b (build-system
+               (inherit trivial-build-system)
+               (lower (const #f))))
+          (p (package
+               (inherit (dummy-package "p"))
+               (build-system b))))
+     (guard (c ((package-cross-build-system-error? c)
+                (eq? (package-error-package c) p)))
+            (package-cross-derivation
+              %store
+              p
+              "mips64el-linux-gnu")
+            #f)))
actual-value: #t
result: PASS

test-name: package-grafts, indirect grafts
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:663
source:
+ (test-assert
+   "package-grafts, indirect grafts"
+   (let* ((new (dummy-package
+                 "dep"
+                 (arguments '(#:implicit-inputs? #f))))
+          (dep (package (inherit new) (version "0.0")))
+          (dep* (package (inherit dep) (replacement new)))
+          (dummy (dummy-package
+                   "dummy"
+                   (arguments '(#:implicit-inputs? #f))
+                   (inputs `(("dep" ,dep*))))))
+     (equal?
+       (package-grafts %store dummy)
+       (list (graft (origin (package-derivation %store dep))
+                    (replacement (package-derivation %store new)))))))
actual-value: #t
result: PASS

test-name: package-grafts, indirect grafts, propagated inputs
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:696
source:
+ (test-assert
+   "package-grafts, indirect grafts, propagated inputs"
+   (let* ((new (dummy-package
+                 "dep"
+                 (arguments '(#:implicit-inputs? #f))))
+          (dep (package (inherit new) (version "0.0")))
+          (dep* (package (inherit dep) (replacement new)))
+          (prop (dummy-package
+                  "propagated"
+                  (propagated-inputs `(("dep" ,dep*)))
+                  (arguments '(#:implicit-inputs? #f))))
+          (dummy (dummy-package
+                   "dummy"
+                   (arguments '(#:implicit-inputs? #f))
+                   (inputs `(("prop" ,prop))))))
+     (equal?
+       (package-grafts %store dummy)
+       (list (graft (origin (package-derivation %store dep))
+                    (replacement (package-derivation %store new)))))))
actual-value: #t
result: PASS

test-name: package-grafts, same replacement twice
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:712
source:
+ (test-assert
+   "package-grafts, same replacement twice"
+   (let* ((new (dummy-package
+                 "dep"
+                 (version "1")
+                 (arguments '(#:implicit-inputs? #f))))
+          (dep (package
+                 (inherit new)
+                 (version "0")
+                 (replacement new)))
+          (p1 (dummy-package
+                "intermediate1"
+                (arguments '(#:implicit-inputs? #f))
+                (inputs `(("dep" ,dep)))))
+          (p2 (dummy-package
+                "intermediate2"
+                (arguments '(#:implicit-inputs? #f))
+                (inputs `(("dep" ,(package (inherit dep)))))))
+          (p3 (dummy-package
+                "final"
+                (arguments '(#:implicit-inputs? #f))
+                (inputs `(("p1" ,p1) ("p2" ,p2))))))
+     (equal?
+       (package-grafts %store p3)
+       (list (graft (origin
+ @ build-started /tmp/guix-tests/store/4fy6qbf23zv784brzwpkkrmwpnmbp2gr-p1-0.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/4f//y6qbf23zv784brzwpkkrmwpnmbp2gr-p1-0.drv.bz2
@ build-succeeded /tmp/guix-tests/store/4fy6qbf23zv784brzwpkkrmwpnmbp2gr-p1-0.drv -
@ build-started /tmp/guix-tests/store/107g7qq7946g9vvbp8vqcpx98xjb79df-P2-0.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/10//7g7qq7946g9vvbp8vqcpx98xjb79df-P2-0.drv.bz2
@ build-succeeded /tmp/guix-tests/store/107g7qq7946g9vvbp8vqcpx98xjb79df-P2-0.drv -
                     (package-derivation
+                        %store
+                        (package (inherit dep) (replacement #f))))
+                    (replacement (package-derivation %store new)))))))
actual-value: #t
result: PASS

test-name: replacement also grafted
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:736
source:
+ (test-assert
+   "replacement also grafted"
+   (let* ((p1r (dummy-package
+                 "P1"
+                 (build-system trivial-build-system)
+                 (arguments
+                   `(#:guile
+                     ,%bootstrap-guile
+                     #:builder
+                     (let ((out (assoc-ref %outputs "out")))
+                       (mkdir out)
+                       (call-with-output-file
+                         (string-append out "/replacement")
+                         (const #t)))))))
+          (p1 (package
+                (inherit p1r)
+                (name "p1")
+                (replacement p1r)
+                (arguments
+                  `(#:guile
+                    ,%bootstrap-guile
+                    #:builder
+                    (mkdir (assoc-ref %outputs "out"))))))
+          (p2r (dummy-package
+                 "P2"
+                 (build-system trivial-build-system)
+                 (inputs `(("p1" ,p1)))
+                 (arguments
+                   `(#:guile
+                     ,%bootstrap-guile
+                     #:builder
+                     (let ((out (assoc-ref %outputs "out")))
+                       (mkdir out)
+                       (chdir out)
+                       (symlink (assoc-ref %build-inputs "p1") "p1")
+                       (call-with-output-file
+                         (string-append out "/replacement")
+                         (const #t)))))))
+          (p2 (package
+                (inherit p2r)
+                (name "p2")
+                (replacement p2r)
+                (arguments
+                  `(#:guile
+                    ,%bootstrap-guile
+                    #:builder
+                    (let ((out (assoc-ref %outputs "out")))
+                      (mkdir out)
+                      (chdir out)
+                      (symlink (assoc-ref %build-inputs "p1") "p1"))))))
+          (p3 (dummy-package
+                "p3"
+                (build-system trivial-build-system)
+                (inputs `(("p2" ,p2)))
+                (arguments
+                  `(#:guile
+                    ,%bootstrap-guile
+                    #:builder
+                    (let ((out (assoc-ref %outputs "out")))
+                      (mkdir out)
+                      (chdir out)
+                      (symlink (assoc-ref %build-inputs "p2") "p2")))))))
+     (lset= equal?
+            (package-grafts %store p3)
+            (list (graft (origin
+                           (package-derivation %store p1 #:graft? #f))
+                         (replacement (package-derivation %store p1r)))
+                  (graft (origin
+                           (package-derivation %store p2 #:graft? #f))
+                         (replacement
+                           (package-derivation %store p2r #:graft? #t)))))))
actual-value: #t
result: PASS

test-name: package->bag
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:829
source:
+ (test-equal
+   "package->bag"
+   `("foo86-hurd"
+     #f
+     (,(package-source gnu-make))
+     (,(canonical-package glibc))
+     (,(canonical-package coreutils)))
+   (let ((bag (package->bag gnu-make "foo86-hurd")))
+     (list (bag-system bag)
+           (bag-target bag)
+           (assoc-ref (bag-build-inputs bag) "source")
+           (assoc-ref (bag-build-inputs bag) "libc")
+           (assoc-ref (bag-build-inputs bag) "coreutils"))))
expected-value: ("foo86-hurd" #f (#<origin "mirror://gnu/make/make-4.2.1.tar.bz2" 23rgfpzwag2c2ky6j34dcabj4hopeaedyvcgws32uzyid7p7yweq ("/tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/gnu/packages/patches/make-impure-dirs.patch") 1b46f00>) (#<package glibc@2.25 gnu/packages/commencement.scm:635 11639c0>) (#<package coreutils@8.27 gnu/packages/bootstrap.scm:147 692540>))
actual-value: ("foo86-hurd" #f (#<origin "mirror://gnu/make/make-4.2.1.tar.bz2" 23rgfpzwag2c2ky6j34dcabj4hopeaedyvcgws32uzyid7p7yweq ("/tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/gnu/packages/patches/make-impure-dirs.patch") 1b46f00>) (#<package glibc@2.25 gnu/packages/commencement.scm:635 11639c0>) (#<package coreutils@8.27 gnu/packages/bootstrap.scm:147 692540>))
result: PASS

test-name: package->bag, cross-compilation
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:838
source:
+ (test-equal
+   "package->bag, cross-compilation"
+   `(,(%current-system)
+     "foo86-hurd"
+     (,(package-source gnu-make))
+     (,(canonical-package glibc))
+     (,(canonical-package coreutils)))
+   (let ((bag (package->bag
+                gnu-make
+                (%current-system)
+                "foo86-hurd")))
+     (list (bag-system bag)
+           (bag-target bag)
+           (assoc-ref (bag-build-inputs bag) "source")
+           (assoc-ref (bag-build-inputs bag) "libc")
+           (assoc-ref (bag-build-inputs bag) "coreutils"))))
expected-value: ("x86_64-linux" "foo86-hurd" (#<origin "mirror://gnu/make/make-4.2.1.tar.bz2" 23rgfpzwag2c2ky6j34dcabj4hopeaedyvcgws32uzyid7p7yweq ("/tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/gnu/packages/patches/make-impure-dirs.patch") 1b46f00>) (#<package glibc@2.25 gnu/packages/commencement.scm:635 11639c0>) (#<package coreutils@8.27 gnu/packages/bootstrap.scm:147 692540>))
actual-value: ("x86_64-linux" "foo86-hurd" (#<origin "mirror://gnu/make/make-4.2.1.tar.bz2" 23rgfpzwag2c2ky6j34dcabj4hopeaedyvcgws32uzyid7p7yweq ("/tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/gnu/packages/patches/make-impure-dirs.patch") 1b46f00>) (#<package glibc@2.25 gnu/packages/commencement.scm:635 11639c0>) (#<package coreutils@8.27 gnu/packages/bootstrap.scm:147 692540>))
result: PASS

test-name: package->bag, propagated inputs
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:848
source:
+ (test-assert
+   "package->bag, propagated inputs"
+   (let* ((dep (dummy-package "dep"))
+          (prop (dummy-package
+                  "prop"
+                  (propagated-inputs `(("dep" ,dep)))))
+          (dummy (dummy-package
+                   "dummy"
+                   (inputs `(("prop" ,prop)))))
+          (inputs
+            (bag-transitive-inputs
+              (package->bag dummy #:graft? #f))))
+     (match (assoc "dep" inputs)
+            (("dep" package) (eq? package dep)))))
actual-value: #t
result: PASS

test-name: bag->derivation
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:859
source:
+ (test-assert
+   "bag->derivation"
+   (parameterize
+     ((%graft? #f))
+     (let ((bag (package->bag gnu-make))
+           (drv (package-derivation %store gnu-make)))
+       (parameterize
+         ((%current-system "foox86-hurd"))
+         (equal? drv (bag->derivation %store bag))))))
actual-value: #t
result: PASS

test-name: bag->derivation, cross-compilation
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:866
source:
+ (test-assert
+   "bag->derivation, cross-compilation"
+   (parameterize
+     ((%graft? #f))
+     (let* ((target "mips64el-linux-gnu")
+            (bag (package->bag gnu-make (%current-system) target))
+            (drv (package-cross-derivation %store gnu-make target)))
+       (parameterize
+         ((%current-system "foox86-hurd")
+          (%current-target-system "foo64-linux-gnu"))
+         (equal? drv (bag->derivation %store bag))))))
actual-value: #t
result: PASS

test-name: GNU Make, bootstrap
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:877
source:
+ (test-assert
+   "GNU Make, bootstrap"
+   (let ((gnu-make
+           (@@ (gnu packages commencement) gnu-make-boot0)))
+     (and (package? gnu-make)
+          (or (location? (package-location gnu-make))
+              (not (package-location gnu-make)))
+          (let* ((drv (package-derivation %store gnu-make))
+                 (out (derivation->output-path drv)))
+            (and (build-derivations %store (list drv))
+                 (file-exists? (string-append out "/bin/make")))))))
result: SKIP

test-name: package-mapping
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:889
source:
+ (test-equal
+   "package-mapping"
+   42
+   (let* ((dep (dummy-package
+                 "chbouib"
+                 (native-inputs `(("x" ,grep)))))
+          (p0 (dummy-package
+                "example"
+                (inputs
+                  `(("foo" ,coreutils) ("bar" ,grep) ("baz" ,dep)))))
+          (transform
+            (lambda (p) (package (inherit p) (source 42))))
+          (rewrite (package-mapping transform))
+          (p1 (rewrite p0)))
+     (and (eq? p1 (rewrite p0))
+          (eqv? 42 (package-source p1))
+          (match (package-inputs p1)
+                 ((("foo" dep1) ("bar" dep2) ("baz" dep3))
+                  (and (eq? dep1 (rewrite coreutils))
+                       (eq? dep2 (rewrite grep))
+                       (eq? dep3 (rewrite dep))
+                       (eqv? 42
+                             (package-source dep1)
+                             (package-source dep2)
+                             (package-source dep3))
+                       (match (package-native-inputs dep3)
+                              ((("x" dep))
+                               (and (eq? dep (rewrite grep))
+                                    (package-source dep))))))))))
expected-value: 42
actual-value: 42
result: PASS

test-name: package-input-rewriting
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:916
source:
+ (test-assert
+   "package-input-rewriting"
+   (let* ((dep (dummy-package
+                 "chbouib"
+                 (native-inputs `(("x" ,grep)))))
+          (p0 (dummy-package
+                "example"
+                (inputs
+                  `(("foo" ,coreutils) ("bar" ,grep) ("baz" ,dep)))))
+          (rewrite
+            (package-input-rewriting
+              `((,coreutils unquote sed)
+                (,grep unquote findutils))
+              (cut string-append "r-" <>)))
+          (p1 (rewrite p0))
+          (p2 (rewrite p0)))
+     (and (not (eq? p1 p0))
+          (eq? p1 p2)
+          (string=? "r-example" (package-name p1))
+          (match (package-inputs p1)
+                 ((("foo" dep1) ("bar" dep2) ("baz" dep3))
+                  (and (eq? dep1 sed)
+                       (eq? dep2 findutils)
+                       (string=? (package-name dep3) "r-chbouib")
+                       (eq? dep3 (rewrite dep))
+                       (match (package-native-inputs dep3)
+                              ((("x" dep)) (eq? dep findutils)))))))))
actual-value: #t
result: PASS

test-name: fold-packages
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:941
source:
+ (test-eq
+   "fold-packages"
+   hello
+   (fold-packages
+     (lambda (p r)
+       (if (string=? (package-name p) "hello") p r))
+     #f))
expected-value: #<package hello@2.10 gnu/packages/base.scm:62 1b40a80>
actual-value: #<package hello@2.10 gnu/packages/base.scm:62 1b40a80>
result: PASS

test-name: fold-packages, hidden package
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:948
source:
+ (test-assert
+   "fold-packages, hidden package"
+   (match (fold-packages
+            (lambda (p r)
+              (if (and (string=? (package-name p) "guile")
+                       (string-prefix? "2.0" (package-version p)))
+                (cons p r)
+                r))
+            '())
+          @ build-started /tmp/guix-tests/store/dm1329nz3dhq2fqvklcawzcc8xkyiamj-foo-0.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/dm//1329nz3dhq2fqvklcawzcc8xkyiamj-foo-0.drv.bz2
@ build-succeeded /tmp/guix-tests/store/dm1329nz3dhq2fqvklcawzcc8xkyiamj-foo-0.drv -
@ build-started /tmp/guix-tests/store/r2cwc0ymafj3fih71ddlpvv48ibh3r5f-libxml2-0.0.0.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/r2//cwc0ymafj3fih71ddlpvv48ibh3r5f-libxml2-0.0.0.drv.bz2
@ build-succeeded /tmp/guix-tests/store/r2cwc0ymafj3fih71ddlpvv48ibh3r5f-libxml2-0.0.0.drv -
@ build-started /tmp/guix-tests/store/hx6w0g84mbbmcplwrc70w79qx0qdwas8-module-import.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/hx//6w0g84mbbmcplwrc70w79qx0qdwas8-module-import.drv.bz2
@ build-succeeded /tmp/guix-tests/store/hx6w0g84mbbmcplwrc70w79qx0qdwas8-module-import.drv -
@ build-started /tmp/guix-tests/store/cyf87ym6l8ydb7mi35si0fjspr7hj63n-module-import-compiled.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/cy//f87ym6l8ydb7mi35si0fjspr7hj63n-module-import-compiled.drv.bz2
@ build-succeeded /tmp/guix-tests/store/cyf87ym6l8ydb7mi35si0fjspr7hj63n-module-import-compiled.drv -
@ build-started /tmp/guix-tests/store/4asjjfqrfmb8xjf635xcvpd3qdq9q8m1-profile.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/4a//sjjfqrfmb8xjf635xcvpd3qdq9q8m1-profile.drv.bz2
@ build-succeeded /tmp/guix-tests/store/4asjjfqrfmb8xjf635xcvpd3qdq9q8m1-profile.drv -
((one) (eq? one guile-2.0))))
actual-value: #t
result: PASS

test-name: find-packages-by-name
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:962
source:
+ (test-assert
+   "find-packages-by-name"
+   (match (find-packages-by-name "hello")
+          (((? (cut eq? hello <>))) #t)
+          (wrong (pk 'find-packages-by-name wrong #f))))
actual-value: #t
result: PASS

test-name: find-packages-by-name with version
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:967
source:
+ (test-assert
+   "find-packages-by-name with version"
+   (match (find-packages-by-name
+            "hello"
+            (package-version hello))
+          (((? (cut eq? hello <>))) #t)
+          (wrong (pk 'find-packages-by-name wrong #f))))
actual-value: #t
result: PASS

test-name: --search-paths with pattern
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:972
source:
+ (test-assert
+   "--search-paths with pattern"
+   (let* ((p1 (package
+                (name "foo")
+                (version "0")
+                (source #f)
+                (build-system trivial-build-system)
+                (arguments
+                  `(#:guile
+                    ,%bootstrap-guile
+                    #:modules
+                    ((guix build utils))
+                    #:builder
+                    (begin
+                      (use-modules (guix build utils))
+                      (let ((out (assoc-ref %outputs "out")))
+                        (mkdir-p (string-append out "/xml/bar/baz"))
+                        (call-with-output-file
+                          (string-append out "/xml/bar/baz/catalog.xml")
+                          (lambda (port) (display "xml? wat?!" port)))))))
+                (synopsis #f)
+                (description #f)
+                (home-page #f)
+                (license #f)))
+          (p2 (package
+                (name "libxml2")
+                (version "0.0.0")
+                (source #f)
+                (build-system trivial-build-system)
+                (arguments
+                  `(#:guile
+                    ,%bootstrap-guile
+                    #:builder
+                    (mkdir (assoc-ref %outputs "out"))))
+                (native-search-paths
+                  (package-native-search-paths libxml2))
+                (synopsis #f)
+                (description #f)
+                (home-page #f)
+                (license #f)))
+          (prof (run-with-store
+                  %store
+                  (profile-derivation
+                    (manifest
+                      (map package->manifest-entry (list p1 p2)))
+                    #:hooks
+                    '()
+                    #:locales?
+                    #f)
+                  #:guile-for-build
+                  (%guile-for-build))))
+     (build-derivations %store (list prof))
+     (string-match
+       (format
+         #f
+         "^export XML_CATALOG_FILES=\"~a/xml/+bar/baz/catalog\\.xml\"\n"
+         (regexp-quote (derivation->output-path prof)))
+       (with-output-to-string
+         (lambda ()
+           (guix-package
+             "-p"
+             (derivation->output-path prof)
+             "--search-paths"))))))
actual-value: #("export XML_CATALOG_FILES=\"/tmp/guix-tests/store/7s5cskvn92vbkdf4xbqjcbn53vhiqppg-profile/xml/bar/baz/catalog.xml\"\n" (0 . 114))
result: PASS

test-name: --search-paths with single-item search path
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:1020
source:
+ (test-assert
+   "--search-paths with single-item search path"
+   (let* ((p1 (dummy-package
+                "foo"
+                (build-system trivial-build-system)
+                (arguments
+                  `(#:guile
+                    ,%bootstrap-guile
+                    #:modules
+                    ((guix build utils))
+                    #:builder
+                    (begin
+                      (use-modules (guix build utils))
+                      (let @ build-started /tmp/guix-tests/store/7bd2z45r9hanzyb83y0a59plkwgljzh9-bar-0.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/7b//d2z45r9hanzyb83y0a59plkwgljzh9-bar-0.drv.bz2
@ build-succeeded /tmp/guix-tests/store/7bd2z45r9hanzyb83y0a59plkwgljzh9-bar-0.drv -
@ build-started /tmp/guix-tests/store/5vq95ggw6ql8nwvqrn9kpqbxprxqbxsh-foo-0.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/5v//q95ggw6ql8nwvqrn9kpqbxprxqbxsh-foo-0.drv.bz2
@ build-succeeded /tmp/guix-tests/store/5vq95ggw6ql8nwvqrn9kpqbxprxqbxsh-foo-0.drv -
@ build-started /tmp/guix-tests/store/ilbcggmc6x2s6gffll2k7b1ryyvr0p3j-git-0.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/il//bcggmc6x2s6gffll2k7b1ryyvr0p3j-git-0.drv.bz2
@ build-succeeded /tmp/guix-tests/store/ilbcggmc6x2s6gffll2k7b1ryyvr0p3j-git-0.drv -
@ build-started /tmp/guix-tests/store/ijljxbzld5gi3vl2sj5za417c66px19j-profile.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/ij//ljxbzld5gi3vl2sj5za417c66px19j-profile.drv.bz2
@ build-succeeded /tmp/guix-tests/store/ijljxbzld5gi3vl2sj5za417c66px19j-profile.drv -
@ build-started /tmp/guix-tests/store/w0rxl4gj0ayk46h82fl45gqy0mb3xpf5-profile.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/w0//rxl4gj0ayk46h82fl45gqy0mb3xpf5-profile.drv.bz2
@ build-succeeded /tmp/guix-tests/store/w0rxl4gj0ayk46h82fl45gqy0mb3xpf5-profile.drv -
error: this-package-does-not-exist: unknown package
((out (assoc-ref %outputs "out")))
+                        (mkdir-p (string-append out "/etc/ssl/certs"))
+                        (call-with-output-file
+                          (string-append
+                            out
+                            "/etc/ssl/certs/ca-certificates.crt")
+                          (const #t))))))))
+          (p2 (package (inherit p1) (name "bar")))
+          (p3 (dummy-package
+                "git"
+                (build-system trivial-build-system)
+                (arguments
+                  `(#:guile
+                    ,%bootstrap-guile
+                    #:builder
+                    (mkdir (assoc-ref %outputs "out"))))
+                (native-search-paths
+                  (package-native-search-paths git))))
+          (prof1 (run-with-store
+                   %store
+                   (profile-derivation
+                     (packages->manifest (list p1 p3))
+                     #:hooks
+                     '()
+                     #:locales?
+                     #f)
+                   #:guile-for-build
+                   (%guile-for-build)))
+          (prof2 (run-with-store
+                   %store
+                   (profile-derivation
+                     (packages->manifest (list p2 p3))
+                     #:hooks
+                     '()
+                     #:locales?
+                     #f)
+                   #:guile-for-build
+                   (%guile-for-build))))
+     (build-derivations %store (list prof1 prof2))
+     (string-match
+       (format
+         #f
+         "^export GIT_SSL_CAINFO=\"~a/etc/ssl/certs/ca-certificates.crt"
+         (regexp-quote (derivation->output-path prof1)))
+       (with-output-to-string
+         (lambda ()
+           (guix-package
+             "-p"
+             (derivation->output-path prof1)
+             "-p"
+             (derivation->output-path prof2)
+             "--search-paths"))))))
actual-value: #("export GIT_SSL_CAINFO=\"/tmp/guix-tests/store/74rrwpcg1ja8bqbggwjg64vzqqmamcaf-profile/etc/ssl/certs/ca-certificates.crt\"\n" (0 . 119))
result: PASS

test-name: specification->package when not found
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/packages.scm:1066
source:
+ (test-equal
+   "specification->package when not found"
+   'quit
+   (catch 'quit
+          (lambda ()
+            (specification->package
+              "this-package-does-not-exist"))
+          (lambda (key . args) key)))
expected-value: quit
actual-value: quit
result: PASS


SKIP: tests/snix
================

test-name: factorize-uri
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/snix.scm:36
source:
+ (test-assert
+   "factorize-uri"
+   (every?
+     (match-lambda
+       ((uri version '-> expected)
+        (equal? (factorize-uri uri version) expected)))
+     '(("http://example.com/foo.tgz"
+        "1.0"
+        ->
+        "http://example.com/foo.tgz")
+       ("http://example.com/foo-2.8.tgz"
+        "2.8"
+        ->
+        ("http://example.com/foo-" version ".tgz"))
+       ("http://example.com/2.8/foo-2.8.tgz"
+        "2.8"
+        ->
+        ("http://example.com/"
+         version
+         "/foo-"
+         version
+         ".tgz")))))
actual-value: #t
result: PASS

test-name: nixpkgs->guix-package
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/snix.scm:54
source:
+ (test-assert
+   "nixpkgs->guix-package"
+   (match (nixpkgs->guix-package
+            %nixpkgs-directory
+            "guile")
+          (('package
+            ('name "guile")
+            ('version (? string?))
+            ('source ('origin _ ...))
+            ('build-system _)
+            ('inputs ('quasiquote (inputs ...)))
+            ('propagated-inputs ('quasiquote (pinputs ...)))
+            ('home-page (? string?))
+            ('synopsis (? string?))
+            ('description (? string?))
+            ('license (? symbol?)))
+           (and (member '("libffi" ,libffi) inputs)
+                (member '("gmp" ,gmp) pinputs)
+                #t))
+          (x (pk 'fail x #f))))
result: SKIP


FAIL: tests/store
=================

test-name: open-connection with file:// URI
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:51
source:
+ (test-assert
+   "open-connection with file:// URI"
+   (let ((store (open-connection
+                  (string-append "file://" (%daemon-socket-uri)))))
+     (and (add-text-to-store store "foo" "bar")
+          (begin (close-connection store) #t))))
actual-value: #t
result: PASS

test-name: connection handshake error
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:59
source:
+ (test-equal
+   "connection handshake error"
+   EPROTO
+   (let ((port (%make-void-port "rw")))
+     (guard (c ((nix-connection-error? c)
+                (and (eq? port (nix-connection-error-file c))
+                     (nix-connection-error-code c))))
+            (open-connection #f #:port port)
+            'broken)))
expected-value: 71
actual-value: 71
result: PASS

test-name: store-path-hash-part
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:68
source:
+ (test-equal
+   "store-path-hash-part"
+   "283gqy39v3g9dxjy26rynl0zls82fmcg"
+   (store-path-hash-part
+     (string-append
+       (%store-prefix)
+       "/283gqy39v3g9dxjy26rynl0zls82fmcg-guile-2.0.7")))
expected-value: "283gqy39v3g9dxjy26rynl0zls82fmcg"
actual-value: "283gqy39v3g9dxjy26rynl0zls82fmcg"
result: PASS

test-name: store-path-hash-part #f
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:74
source:
+ (test-equal
+   "store-path-hash-part #f"
+   #f
+   (store-path-hash-part
+     (string-append
+       (%store-prefix)
+       "/foo/bar/283gqy39v3g9dxjy26rynl0zls82fmcg-guile-2.0.7")))
expected-value: #f
actual-value: #f
result: PASS

test-name: store-path-package-name
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:80
source:
+ (test-equal
+   "store-path-package-name"
+   "guile-2.0.7"
+   (store-path-package-name
+     (string-append
+       (%store-prefix)
+       "/283gqy39v3g9dxjy26rynl0zls82fmcg-guile-2.0.7")))
expected-value: "guile-2.0.7"
actual-value: "guile-2.0.7"
result: PASS

test-name: store-path-package-name #f
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:86
source:
+ (test-equal
+   "store-path-package-name #f"
+   #f
+   (store-path-package-name
+     "/foo/bar/283gqy39v3g9dxjy26rynl0zls82fmcg-guile-2.0.7"))
expected-value: #f
actual-value: #f
result: PASS

test-name: direct-store-path?
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:91
source:
+ (test-assert
+   "direct-store-path?"
+   (and (direct-store-path?
+          (string-append
+            (%store-prefix)
+            "/283gqy39v3g9dxjy26rynl0zls82fmcg-guile-2.0.7"))
+        (not (direct-store-path?
+               (string-append
+                 (%store-prefix)
+                 "/283gqy39v3g9dxjy26rynl0zls82fmcg-guile-2.0.7/bin/guile")))
+        (not (direct-store-path? (%store-prefix)))))
actual-value: #t
result: PASS

test-name: add-data-to-store
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:103
source:
+ (test-equal
+   "add-data-to-store"
+   #vu8(1 2 3 4 5)
+   (call-with-input-file
+     (add-data-to-store %store "data" #vu8(1 2 3 4 5))
+     get-bytevector-all))
expected-value: #vu8(1 2 3 4 5)
actual-value: #vu8(1 2 3 4 5)
result: PASS

test-name: valid-path? live
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:108
source:
+ (test-assert
+   "valid-path? live"
+   (let ((p (add-text-to-store %store "hello" "hello, world")))
+     (valid-path? %store p)))
actual-value: #t
result: PASS

test-name: valid-path? false
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:112
source:
+ (test-assert
+   "valid-path? false"
+   (not (valid-path?
+          %store
+          (string-append
+            (%store-prefix)
+            "/"
+            (make-string 32 #\e)
+            "-foobar"))))
actual-value: #t
result: PASS

test-name: valid-path? error
location: random seed for tests: 1511174295
finding garbage collector roots...
removing stale temporary roots file `/tmp/guix-tests/var/14716/temproots/14738'
determining live/dead paths...
finding garbage collector roots...
determining live/dead paths...
finding garbage collector roots...
determining live/dead paths...
finding garbage collector roots...
deleting unused links...
finding garbage collector roots...
removing stale temporary roots file `/tmp/guix-tests/var/14716/temproots/14779'
deleting `/tmp/guix-tests/store/90gaw1mn9raridcbiqwv8cniisrxykyj-delete-me'
deleting `/tmp/guix-tests/store/trash'
deleting unused links...
note: currently hard linking saves 0.68 MiB
finding garbage collector roots...
removing stale temporary roots file `/tmp/guix-tests/var/14716/temproots/14789'
deleting `/tmp/guix-tests/store/a27v317kpgsn1k82vnqhn02s9hjqwg5f-delete-me'
deleting `/tmp/guix-tests/store/trash'
deleting unused links...
note: currently hard linking saves 0.68 MiB
/tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:117
source:
+ (test-assert
+   "valid-path? error"
+   (with-store
+     s
+     (guard (c ((nix-protocol-error? c) #t))
+            (valid-path? s "foo")
+            #f)))
actual-value: #t
result: PASS

test-name: valid-path? recovery
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:123
source:
+ (test-assert
+   "valid-path? recovery"
+   (with-store
+     s
+     (let-syntax ((true-if-error
+                    (syntax-rules ()
+                      ((_ exp)
+                       (guard (c ((nix-protocol-error? c) #t)) exp #f)))))
+       (and (true-if-error (valid-path? s "foo"))
+            (true-if-error (valid-path? s "bar"))
+            (true-if-error (valid-path? s "baz"))
+            (true-if-error (valid-path? s "chbouib"))
+            (valid-path?
+              s
+              (add-text-to-store s "valid" "yeah"))))))
actual-value: #t
result: PASS

test-name: hash-part->path
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:140
source:
+ (test-assert
+   "hash-part->path"
+   (let ((p (add-text-to-store %store "hello" "hello, world")))
+     (equal?
+       (hash-part->path %store (store-path-hash-part p))
+       p)))
actual-value: #t
result: PASS

test-name: dead-paths
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:145
source:
+ (test-assert
+   "dead-paths"
+   (let ((p (add-text-to-store
+              %store
+              "random-text"
+              (random-text))))
+     (->bool (member p (dead-paths %store)))))
actual-value: #t
result: PASS

test-name: permanent root
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:166
source:
+ (test-assert
+   "permanent root"
+   (let* ((p (with-store
+               store
+               (let ((p (add-text-to-store
+                          store
+                          "random-text"
+                          (random-text))))
+                 (add-permanent-root p)
+                 (add-permanent-root p)
+                 p))))
+     (and (member p (live-paths %store))
+          (begin
+            (remove-permanent-root p)
+            (->bool (member p (dead-paths %store)))))))
actual-value: #t
result: PASS

test-name: dead path can be explicitly collected
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:178
source:
+ (test-assert
+   "dead path can be explicitly collected"
+   (let ((p (add-text-to-store
+              %store
+              "random-text"
+              (random-text)
+              '())))
+     (let-values
+       (((paths freed) (delete-paths %store (list p))))
+       (and (equal? paths (list p))
+            (> freed 0)
+            (not (file-exists? p))))))
actual-value: #f
result: FAIL

test-name: add-text-to-store vs. delete-paths
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:186
source:
+ (test-assert
+   "add-text-to-store vs. delete-paths"
+   (with-store
+     store
+     (let* ((text (random-text))
+            (path (add-text-to-store store "delete-me" text))
+            (deleted (delete-paths store (list path)))
+            (path2 (add-text-to-store store "delete-me" text)))
+       (and (string=? path path2)
+            (equal? deleted (list path))
+            (valid-path? store path)
+            (file-exists? path)))))
actual-value: #t
result: PASS

test-name: add-to-store vs. delete-paths
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:199
source:
+ (test-assert
+   "add-to-store vs. delete-paths"
+   (with-store
+     store
+     (let* ((file (search-path %load-path "guix.scm"))
+            (path (add-to-store store "delete-me" #t "sha256" file))
+            (deleted (delete-paths store (list path)))
+            (path2 (add-to-store store "delete-me" #t "sha256" file)))
+       (and (string=? path path2)
+            (equal? deleted (list path))
+            (valid-path? store path)
+            (file-exists? path)))))
substitute: warning: authentication and authorization of substitutes disabled!
substitute: guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
actual-value: #t
result: PASS

test-name: references
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:211
source:
+ (test-assert
+   "references"
+   (let* ((t1 (add-text-to-store
+                %store
+                "random1"
+                (random-text)))
+          (t2 (add-text-to-store
+                %store
+                "random2"
+                (random-text)
+                (list t1))))
+     (and (equal? (list t1) (references %store t2))
+          (equal? (list t2) (referrers %store t1))
+          (null? (references %store t1))
+          (null? (referrers %store t2)))))
actual-value: #t
result: PASS

test-name: references/substitutes missing reference info
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:221
source:
+ (test-assert
+   "references/substitutes missing reference info"
+   (with-store
+     s
+     (set-build-options s #:use-substitutes? #f)
+     (guard (c ((nix-protocol-error? c) #t))
+            (let* ((b (add-to-store
+                        s
+                        "bash"
+                        #t
+                        "sha256"
+                        (search-bootstrap-binary
+                          "bash"
+                          (%current-system))))
+                   (d (derivation
+                        s
+                        "the-thing"
+                        b
+                        '("--help")
+                        #:inputs
+                        `((,b)))))
+              (references/substitutes
+                s
+                (list (derivation->output-path d) b))
+              #f))))
actual-value: #t
result: PASS

test-name: references/substitutes with substitute info
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:233
source:
+ (test-assert
+   "references/substitutes with substitute info"
+   (with-store
+     s
+     (set-build-options s #:use-substitutes? #t)
+     (let* ((t1 (add-text-to-store s "random1" (random-text)))
+            (t2 (add-text-to-store
+                  s
+                  "random2"
+                  (random-text)
+                  (list t1)))
+            (t3 (add-text-to-store
+                  s
+                  "build"
+                  "echo -n $t2 > $out"))
+            (b (add-to-store
+                 s
+                 "bash"
+                 #t
+                 "sha256"
+                 (search-bootstrap-binary
+                   "bash"
+                   (%current-system))))
+            (d (derivation
+                 s
+                 "the-thing"
+                 b
+                 `("-e" ,t3)
+                 #:inputs
+                 `((,b) (,t3) (,t2))
+                 #:env-vars
+                 `(("t2" unquote t2))))
+            (o (derivation->output-path d)))
+       (with-derivation-narinfo
+         d
+         (sha256 => (sha256 (string->utf8 t2)))
+         (references => (list t2))
+         (equal?
+           (references/substitutes s (list o t3 t2 t1))
+           `((,t2) () (,t1) ()))))))
actual-value: #t
result: PASS

test-name: substitutable-path-info when substitutes are turned off
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:257
source:
+ (test-equal
+   "substitutable-path-info when substitutes are turned off"
+   '()
+   (with-store
+     s
+     (set-build-options s #:use-substitutes? #f)
+     (let* ((b (add-to-store
+                 s
+                 "bash"
+                 #t
+                 "sha256"
+                 (search-bootstrap-binary
+                   "bash"
+                   (%current-system))))
+            (d (derivation
+                 s
+                 "the-thing"
+                 b
+                 '("--version")
+                 #:inputs
+                 `((,b))))
+            (o (derivation->output-path d)))
+       (with-derivation-narinfo
+         d
+         (substitutable-path-info s (list o))))))
expected-value: ()
actual-value: ()
result: PASS

test-name: @ build-started /tmp/guix-tests/store/agp756m57spdsqniwqakgl5djyvn3skh-the-thing.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/ag//p756m57spdsqniwqakgl5djyvn3skh-the-thing.drv.bz2
@ build-succeeded /tmp/guix-tests/store/agp756m57spdsqniwqakgl5djyvn3skh-the-thing.drv -
substitutable-paths when substitutes are turned off
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:270
source:
+ (test-equal
+   "substitutable-paths when substitutes are turned off"
+   '()
+   (with-store
+     s
+     (set-build-options s #:use-substitutes? #f)
+     (let* ((b (add-to-store
+                 s
+                 "bash"
+                 #t
+                 "sha256"
+                 (search-bootstrap-binary
+                   "bash"
+                   (%current-system))))
+            (d (derivation
+                 s
+                 "the-thing"
+                 b
+                 '("--version")
+                 #:inputs
+                 `((,b))))
+            (o (derivation->output-path d)))
+       (with-derivation-narinfo
+         d
+         (substitutable-paths s (list o))))))
expected-value: ()
actual-value: ()
result: PASS

test-name: requisites
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:283
source:
+ (test-assert
+   "requisites"
+   (let* ((t1 (add-text-to-store
+                %store
+                "random1"
+                (random-text)
+                '()))
+          (t2 (add-text-to-store
+                %store
+                "random2"
+                (random-text)
+                (list t1)))
+          (t3 (add-text-to-store
+                %store
+                "random3"
+                (random-text)
+                (list t2)))
+          (t4 (add-text-to-store
+                %store
+                "random4"
+                (random-text)
+                (list t1 t3))))
+     (define (same? x y)
+       (and (= (length x) (length y))
+            (lset= equal? x y)))
+     (and (same? (requisites %store (list t1)) (list t1))
+          (same? (requisites %store (list t2))
+                 (list t1 t2))
+          (same? (requisites %store (list t3))
+                 (list t1 t2 t3))
+          (same? (requisites %store (list t4))
+                 (list t1 t2 t3 t4))
+          (same? (requisites %store (list t1 t2 t3 t4))
+                 (list t1 t2 t3 t4)))))
actual-value: #t
result: PASS

test-name: derivers
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:303
source:
+ (test-assert
+   "derivers"
+   (let* ((b (add-text-to-store
+               %store
+               "build"
+               "echo $foo > $out"
+               '()))
+          (s (add-to-store
+               %store
+               "bash"
+               #t
+               "sha256"
+               (search-bootstrap-binary
+                 "bash"
+                 (%current-system))))
+          (d (derivation
+               %store
+               "the-thing"
+               s
+               `("-e" ,b)
+               #:env-vars
+               `(("foo" unquote (random-text)))
+               #:inputs
+               `((,b) (,s))))
+          (o (derivation->output-path d)))
+     (and (build-derivations %store (list d))
+          (equal?
+            (query-derivation-outputs
+              %store
+              (derivation-file-name d))
+            (list o))
+          (equal?
+            (valid-derivers %store o)
+            (list (derivation-file-name d))))))
actual-value: #t
result: PASS

test-name: topologically-sorted, one item
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:319
source:
+ (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)))
+          (c (add-text-to-store %store "c" "c" (list b)))
+          (d (add-text-to-store %store "d" "d" (list c)))
+          (s (topologically-sorted %store (list d))))
+     (equal? s (list a b c d))))
actual-value: #t
result: PASS

test-name: topologically-sorted, several items
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:327
source:
+ (test-assert
+   "topologically-sorted, several items"
+   (let* ((a (add-text-to-store %store "a" "a"))
+          (b (add-text-to-store %store "b" "b" (list a)))
+          (c (add-text-to-store %store "c" "c" (list b)))
+          (d (add-text-to-store %store "d" "d" (list c)))
+          (s1 (topologically-sorted %store (list d a c b)))
+          (s2 (topologically-sorted %store (list b d c a b d))))
+     (equal? s1 s2 (list a b c d))))
actual-value: #t
result: PASS

test-name: topologically-sorted, more difficult
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:336
source:
+ (test-assert
+   "topologically-sorted, more difficult"
+   (let* ((a (add-text-to-store %store "a" "a"))
+          (b (add-text-to-store %store "b" "b" (list a)))
+          (c (add-text-to-store %store "c" "c" (list b)))
+          (d (add-text-to-store %store "d" "d" (list c)))
+          (w (add-text-to-store %store "w" "w"))
+          (x (add-text-to-store %store "x" "x" (list w)))
+          (y (add-text-to-store %store "y" "y" (list x d)))
+          (s1 (topologically-sorted %store (list y)))
+          (s2 (topologically-sorted %store (list c y)))
+          (s3 (topologically-sorted
+                %store
+                (cons y (references %store y)))))
+     (let* ((x-then-d?
+              (equal? (references %store y) (list x d))))
+       (and (equal?
+              s1
+              (if x-then-d?
+                (list w x a b c d y)
+                (list a b c d w x y)))
+            (equal?
+              s2
+              (if x-then-d?
+                (list a b c w x d y)
+                (list a b c d w x y)))
+            (lset= string=? s1 s3)))))
actual-value: #t
result: PASS

test-name: current-build-output-port, UTF-8
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:360
source:
+ (test-assert
+   "current-build-output-port, UTF-8"
+   (string-contains
+     (with-fluids
+       ((%default-port-encoding "UTF-8"))
+       (call-with-output-string
+         (lambda (port)
+           (parameterize
+             ((current-build-output-port port))
+             (let* ((s "Here’s a Greek letter: λ.")
+                    (d (build-expression->derivation
+                         %store
+                         "foo"
+                         `(display ,s)
+                         #:guile-for-build
+                         (package-derivation
+                           s
+                           %bootstrap-guile
+                           (%current-system)))))
+               (guard (c ((nix-protocol-error? c) #t))
+                      (build-derivations %store (list d))))))))
+     "Here’s a Greek letter: λ."))
actual-value: 175
result: PASS

test-name: current-build-output-port, UTF-8 + garbage
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:376
source:
+ (test-assert
+   "current-build-output-port, UTF-8 + garbage"
+   (string-contains
+     (with-fluids
+       ((%default-port-encoding "UTF-8"))
+       (call-with-output-string
+         (lambda (port)
+           (parameterize
+             ((current-build-output-port port))
+             (let ((d (build-expression->derivation
+                        %store
+                        "foo"
+                        `(begin
+                           (use-modules (rnrs io ports))
+                           (display "garbage: ")
+                           (put-bytevector (current-output-port) #vu8(128))
+                           (display "lambda: λ\n"))
+                        #:guile-for-build
+                        (package-derivation %store %bootstrap-guile))))
+               (guard (c ((nix-protocol-error? c) #t))
+                      (build-derivations %store (list d))))))))
+     (cond-expand
+       (guile-2.2 "garbage: �lambda: λ")
+       (else "garbage: ?lambda: λ"))))
actual-value: 175
result: PASS

test-name: log-file, derivation
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:398
source:
+ (test-assert
+   "log-file, derivation"
+   (let* ((b (add-text-to-store
+               %store
+               "build"
+         @ build-started /tmp/guix-tests/store/nvmiyggp18sd6i6bdp0lc5ckzycvniid-the-thing.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/nv//miyggp18sd6i6bdp0lc5ckzycvniid-the-thing.drv.bz2
@ build-succeeded /tmp/guix-tests/store/nvmiyggp18sd6i6bdp0lc5ckzycvniid-the-thing.drv -
@ build-started /tmp/guix-tests/store/l4kj146375iixj8y8y5rkamf3wf6rmv1-the-thing.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/l4//kj146375iixj8y8y5rkamf3wf6rmv1-the-thing.drv.bz2
@ build-succeeded /tmp/guix-tests/store/l4kj146375iixj8y8y5rkamf3wf6rmv1-the-thing.drv -
      "echo $foo > $out"
+               '()))
+          (s (add-to-store
+               %store
+               "bash"
+               #t
+               "sha256"
+               (search-bootstrap-binary
+                 "bash"
+                 (%current-system))))
+          (d (derivation
+               %store
+               "the-thing"
+               s
+               `("-e" ,b)
+               #:env-vars
+               `(("foo" unquote (random-text)))
+               #:inputs
+               `((,b) (,s)))))
+     (and (build-derivations %store (list d))
+          (file-exists?
+            (pk (log-file %store (derivation-file-name d)))))))

;;; ("/tmp/guix-tests/var/log/guix/drvs/nv/miyggp18sd6i6bdp0lc5ckzycvniid-the-thing.drv.bz2")
actual-value: #t
result: PASS

test-name: log-file, output file name
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:410
source:
+ (test-assert
+   "log-file, output file name"
+   (let* ((b (add-text-to-store
+               %store
+               "build"
+               "echo $foo > $out"
+               '()))
+          (s (add-to-store
+               %store
+               "bash"
+               #t
+               "sha256"
+               (search-bootstrap-binary
+                 "bash"
+                 (%current-system))))
+          (d (derivation
+               %store
+               "the-thing"
+               s
+               `("-e" ,b)
+               #:env-vars
+               `(("foo" unquote (random-text)))
+               #:inputs
+               `((,b) (,s))))
+          (o (derivation->output-path d)))
+     (and (build-derivations %store (list d))
+          (file-exists? (pk (log-file %store o)))
+          (string=?
+            (log-file %store (derivation-file-name d))
+            (log-file %store o)))))

;;; ("/tmp/guix-tests/var/log/guix/drvs/l4/kj146375iixj8y8y5rkamf3wf6rmv1-the-thing.drv.bz2")
actual-value: #t
result: PASS

test-name: no substitutes
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:425
source:
+ (test-assert
+   "no substitutes"
+   (with-store
+     s
+     (let* ((d1 (package-derivation
+                  s
+                  %bootstrap-guile
+                  (%current-system)))
+            (d2 (package-derivation
+                  s
+                  %bootstrap-glibc
+                  (%current-system)))
+            (o (map derivation->output-path (list d1 d2))))
+       (set-build-options s #:use-substitutes? #f)
+       (and (not (has-substitutes? s (derivation-file-name d1)))
+            (not (has-substitutes? s (derivation-file-name d2)))
+            (null? (substitutable-paths s o))
+            (null? (substitutable-path-info s o))))))
actual-value: #t
result: PASS

test-name: build-things with output path
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:436
source:
+ (test-assert
+   "build-things with output path"
+   (with-store
+     s
+     (let* ((c (random-text))
+            (d (build-expression->derivation
+                 s
+                 "substitute-me"
+                 `(call-with-output-file
+                    %output
+                    (lambda (p) (display ,c p)))
+                 #:guile-for-build
+                 (package-derivation
+                   s
+                   %bootstrap-guile
+                   (%current-system))))
+            (o (derivation->output-path d)))
+       (set-build-options s #:use-substitutes? #f)
+       (build-things s (list o))
+       (not (valid-path? s o)))))
actual-value: #t
result: PASS

test-name: substitute query
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:456
source:
+ (test-assert
+   "substitute query"
+   (with-store
+     s
+     (let* ((d (package-derivation
+                 s
+                 %bootstrap-guile
+                 (%current-system)))
+            (o (derivation->output-path d)))
+       (with-derivation-narinfo
+         d
+         (false-if-exception
+           (delete-file-recursively
+             (substitute: warning: authentication and authorization of substitutes disabled!
substitute: guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
substitute: warning: authentication and authorization of substitutes disabled!
substitute: guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
substitute: warning: authentication and authorization of substitutes disabled!
substitute: guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
substitute: warning: authentication and authorization of substitutes disabled!
substitute: guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
substitute: warning: authentication and authorization of substitutes disabled!
substitute: guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
substitute: warning: authentication and authorization of substitutes disabled!
substitute: guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
@ substituter-started /tmp/guix-tests/store/yp9fm52wcrwraxqf840558b40pg1cf2q-substitute-me /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/nix/scripts/substitute
warning: authentication and authorization of substitutes disabled!
guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
Downloading file:/tmp/guix-tests/var/14716/substituter-data/example.nar...
\r^[[K example.nar  176B                     0B/s 00:00 [                    ]   0.0%\r^[[K example.nar  176B                 905KiB/s 00:00 [####################] 100.0%\r^[[K example.nar  176B                 390KiB/s 00:00 [####################] 100.0%

@ substituter-succeeded /tmp/guix-tests/store/yp9fm52wcrwraxqf840558b40pg1cf2q-substitute-me
string-append
+               (getenv "XDG_CACHE_HOME")
+               "/guix/substitute")))
+         (set-build-options
+           s
+           #:use-substitutes?
+           #t
+           #:substitute-urls
+           (%test-substitute-urls))
+         (and (has-substitutes? s o)
+              (equal?
+                (list o)
+                (substitutable-paths s (list o)))
+              (match (pk 'spi (substitutable-path-info s (list o)))
+                     (((? substitutable? s))
+                      (and (string=?
+                             (substitutable-deriver s)
+                             (derivation-file-name d))
+                           (null? (substitutable-references s))
+                           (equal? (substitutable-nar-size s) 1234)))))))))

;;; (spi (#<<substitutable> path: "/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0" deriver: "/tmp/guix-tests/store/kn0gx5na8k2nilq6c362bmavywnilkhq-guile-bootstrap-2.0.drv" refs: () dl-size: 0 nar-size: 1234>))
actual-value: #t
result: PASS

test-name: substitute query, alternating URLs
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:480
source:
+ (test-assert
+   "substitute query, alternating URLs"
+   (let* ((d (with-store
+               s
+               (package-derivation
+                 s
+                 %bootstrap-guile
+                 (%current-system))))
+          (o (derivation->output-path d)))
+     (with-derivation-narinfo
+       d
+       (false-if-exception
+         (delete-file-recursively
+           (string-append
+             (getenv "XDG_CACHE_HOME")
+             "/guix/substitute")))
+       (and (with-store
+              s
+              (set-build-options
+                s
+                #:use-substitutes?
+                #t
+                #:substitute-urls
+                (%test-substitute-urls))
+              (has-substitutes? s o))
+            (with-store
+              s
+              (set-build-options
+                s
+                #:use-substitutes?
+                #t
+                #:substitute-urls
+                (list "http://does-not-exist"))
+              (not (has-substitutes? s o)))
+            (with-store
+              s
+              (set-build-options
+                s
+                #:use-substitutes?
+                #t
+                #:substitute-urls
+                (%test-substitute-urls))
+              (has-substitutes? s o))
+            (with-store
+              s
+              (set-build-options
+                s
+                #:use-substitutes?
+                #t
+                #:substitute-urls
+                '())
+              (not (has-substitutes? s o)))))))
actual-value: #t
result: PASS

test-name: substitute
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:512
source:
+ (test-assert
+   "substitute"
+   (with-store
+     s
+     (let* ((c (random-text))
+            (d (build-expression->derivation
+                 s
+                 "substitute-me"
+                 `(call-with-output-file
+                    %output
+                    (lambda (p) (exit 1) (display ,c p)))
+                 #:guile-for-build
+                 (package-derivation
+                   s
+                   %bootstrap-guile
+                   (%current-system))))
+            (o (derivation->output-path d)))
+       (with-derivation-substitute
+         d
+         c
+         (set-build-options
+           s
+           #:use-substitutes?
+           #t
+           #:substitute-urls
+           (%test-substitute-urls))
+         (and (has-substitutes? s o)
+              (build-derivations s (list d))
+              (equal?
+                c
+                (call-with-input-file o get-string-all)))))))
actual-value: #t
result: PASS

test-name: substitute + build-things with output path
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:531
source:
+ (test-assert
+   "substitute + build-things with output path"
+   (with-store
+ substitute: warning: authentication and authorization of substitutes disabled!
substitute: guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
@ substituter-started /tmp/guix-tests/store/dqkgpg5adklx2gxwky3jfpx8rz03wx85-substitute-me /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/nix/scripts/substitute
warning: authentication and authorization of substitutes disabled!
guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
Downloading file:/tmp/guix-tests/var/14716/substituter-data/example.nar...
\r^[[K example.nar  176B                     0B/s 00:00 [                    ]   0.0%\r^[[K example.nar  176B                 944KiB/s 00:00 [####################] 100.0%\r^[[K example.nar  176B                 386KiB/s 00:00 [####################] 100.0%

@ substituter-succeeded /tmp/guix-tests/store/dqkgpg5adklx2gxwky3jfpx8rz03wx85-substitute-me
substitute: warning: authentication and authorization of substitutes disabled!
substitute: guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
@ substituter-started /tmp/guix-tests/store/4l2phlryfj24z74xw4jb45zia952rjri-corrupt-substitute /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/nix/scripts/substitute
warning: authentication and authorization of substitutes disabled!
guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
Downloading file:/tmp/guix-tests/var/14716/substituter-data/example.nar...
\r^[[K example.nar  128B                     0B/s 00:00 [                    ]   0.0%\r^[[K example.nar  128B                 706KiB/s 00:00 [####################] 100.0%\r^[[K example.nar  128B                 300KiB/s 00:00 [####################] 100.0%

@ substituter-failed /tmp/guix-tests/store/4l2phlryfj24z74xw4jb45zia952rjri-corrupt-substitute 0 hash mismatch in downloaded path `/tmp/guix-tests/store/4l2phlryfj24z74xw4jb45zia952rjri-corrupt-substitute'
  expected: 0000000000000000000000000000000000000000000000000000000000000000
  actual:   b8f73a6eb280e63169b1de2a5b5e154676fe1ada685f1e5c7183cbb2c1dcd535
substitute: warning: authentication and authorization of substitutes disabled!
substitute: guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
@ substituter-started /tmp/guix-tests/store/q2li8r7r9a8pdy9gf74ffz0dsvd3qzwd-substitute-me-not /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/nix/scripts/substitute
warning: authentication and authorization of substitutes disabled!
guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
Downloading file:/tmp/guix-tests/var/14716/substituter-data/example.nar...
guix substitute: error: open-file: No such file or directory: "/tmp/guix-tests/var/14716/substituter-data/example.nar"
@ substituter-failed /tmp/guix-tests/store/q2li8r7r9a8pdy9gf74ffz0dsvd3qzwd-substitute-me-not 256 fetching path `/tmp/guix-tests/store/q2li8r7r9a8pdy9gf74ffz0dsvd3qzwd-substitute-me-not' failed with exit code 1
@ substituter-started /tmp/guix-tests/store/q2li8r7r9a8pdy9gf74ffz0dsvd3qzwd-substitute-me-not /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/nix/scripts/substitute
warning: authentication and authorization of substitutes disabled!
guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
Downloading file:/tmp/guix-tests/var/14716/substituter-data/example.nar...
guix substitute: error: open-file: No such file or directory: "/tmp/guix-tests/var/14716/substituter-data/example.nar"
@ substituter-failed /tmp/guix-tests/store/q2li8r7r9a8pdy9gf74ffz0dsvd3qzwd-substitute-me-not 256 fetching path `/tmp/guix-tests/store/q2li8r7r9a8pdy9gf74ffz0dsvd3qzwd-substitute-me-not' failed with exit code 1
@ build-started /tmp/guix-tests/store/zw8z8cl83d9k6p94a51akbxpidwab75d-substitute-me-not.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/zw//8z8cl83d9k6p94a51akbxpidwab75d-substitute-me-not.drv.bz2
@ build-succeeded /tmp/guix-tests/store/zw8z8cl83d9k6p94a51akbxpidwab75d-substitute-me-not.drv -
    s
+     (let* ((c (random-text))
+            (d (build-expression->derivation
+                 s
+                 "substitute-me"
+                 `(call-with-output-file
+                    %output
+                    (lambda (p) (exit 1) (display ,c p)))
+                 #:guile-for-build
+                 (package-derivation
+                   s
+                   %bootstrap-guile
+                   (%current-system))))
+            (o (derivation->output-path d)))
+       (with-derivation-substitute
+         d
+         c
+         (set-build-options
+           s
+           #:use-substitutes?
+           #t
+           #:substitute-urls
+           (%test-substitute-urls))
+         (and (has-substitutes? s o)
+              (build-things s (list o))
+              (valid-path? s o)
+              (equal?
+                c
+                (call-with-input-file o get-string-all)))))))
actual-value: #t
result: PASS

test-name: substitute, corrupt output hash
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:551
source:
+ (test-assert
+   "substitute, corrupt output hash"
+   (with-store
+     s
+     (let* ((c "hello, world")
+            (d (build-expression->derivation
+                 s
+                 "corrupt-substitute"
+                 `(mkdir %output)
+                 #:guile-for-build
+                 (package-derivation
+                   s
+                   %bootstrap-guile
+                   (%current-system))))
+            (o (derivation->output-path d)))
+       (with-derivation-substitute
+         d
+         c
+         (sha256 => (make-bytevector 32 0))
+         (set-build-options
+           s
+           #:use-substitutes?
+           #t
+           #:fallback?
+           #f
+           #:substitute-urls
+           (%test-substitute-urls))
+         (and (has-substitutes? s o)
+              (guard (c ((nix-protocol-error? c)
+                         (pk 'corrupt c)
+                         (not (zero? (nix-protocol-error-status c)))))
+                     (build-derivations s (list d))
+                     #f))))))

;;; (corrupt #<condition &nix-protocol-error [message: "some substitutes for the outputs of derivation `/tmp/guix-tests/store/392j6h3j3jg1srjvzppd9x1g86vlk44n-corrupt-substitute.drv' failed (usually happens due to networking issues); try `--fallback' to build derivation from source " status: 1] 1214d50>)
actual-value: #t
result: PASS

test-name: substitute --fallback
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:581
source:
+ (test-assert
+   "substitute --fallback"
+   (with-store
+     s
+     (let* ((t (random-text))
+            (d (build-expression->derivation
+                 s
+                 "substitute-me-not"
+                 `(call-with-output-file
+                    %output
+                    (lambda (p) (display ,t p)))
+                 #:guile-for-build
+                 (package-derivation
+                   s
+                   %bootstrap-guile
+                   (%current-system))))
+            (o (derivation->output-path d)))
+       (with-derivation-narinfo
+         d
+         (set-build-options
+           s
+           #:use-substitutes?
+           #t
+           #:substitute-urls
+           (%test-substitute-urls))
+         (and (has-substitutes? s o)
+              (guard (c ((nix-protocol-error? c)
+                         (set-build-options
+                           s
+                           #:use-substitutes?
+                           #t
+                           #:substitute-urls
+                           (%test-substitute-urls)
+                           #:fallback?
+                           #t)
+                         (and (build-derivations s (list d))
+                              (equal?
+                                t
+                                (call-with-input-file o get-string-all)))))
+                     (build-derivations s (list d))
+                     #f))))))
actual-value: #t
result: PASS

test-name: finding garbage collector roots...
deleting unused links...
finding garbage collector roots...
deleting unused links...
finding garbage collector roots...
deleting unused links...
export/import several paths
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:613
source:
+ (test-assert
+   "export/import several paths"
+   (let* ((texts (unfold
+                   (cut >= <> 10)
+                   (lambda _ (random-text))
+                   #{1+}#
+                   0))
+          (files (map (cut add-text-to-store %store "text" <>)
+                      texts))
+          (dump (call-with-bytevector-output-port
+                  (cut export-paths %store files <>))))
+     (delete-paths %store files)
+     (and (every (negate file-exists?) files)
+          (let* ((source (open-bytevector-input-port dump))
+                 (imported (import-paths %store source)))
+            (and (equal? imported files)
+                 (every file-exists? files)
+                 (equal?
+                   texts
+                   (map (lambda (file)
+                          (call-with-input-file file get-string-all))
+                        files)))))))
actual-value: #t
result: PASS

test-name: export/import paths, ensure topological order
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:633
source:
+ (test-assert
+   "export/import paths, ensure topological order"
+   (let* ((file0 (add-text-to-store %store "baz" (random-text)))
+          (file1 (add-text-to-store
+                   %store
+                   "foo"
+                   (random-text)
+                   (list file0)))
+          (file2 (add-text-to-store
+                   %store
+                   "bar"
+                   (random-text)
+                   (list file1)))
+          (files (list file1 file2))
+          (dump1 (call-with-bytevector-output-port
+                   (cute export-paths %store (list file1 file2) <>)))
+          (dump2 (call-with-bytevector-output-port
+                   (cute export-paths %store (list file2 file1) <>))))
+     (delete-paths %store files)
+     (and (every (negate file-exists?) files)
+          (bytevector=? dump1 dump2)
+          (let* ((source (open-bytevector-input-port dump1))
+                 (imported (import-paths %store source)))
+            (and (equal? imported (list file1 file2))
+                 (every file-exists? files)
+                 (equal? (list file0) (references %store file1))
+                 (equal? (list file1) (references %store file2)))))))
actual-value: #t
result: PASS

test-name: export/import incomplete
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:655
source:
+ (test-assert
+   "export/import incomplete"
+   (let* ((file0 (add-text-to-store %store "baz" (random-text)))
+          (file1 (add-text-to-store
+                   %store
+                   "foo"
+                   (random-text)
+                   (list file0)))
+          (file2 (add-text-to-store
+                   %store
+                   "bar"
+                   (random-text)
+                   (list file1)))
+          (dump (call-with-bytevector-output-port
+                  (cute export-paths %store (list file2) <>))))
+     (delete-paths %store (list file0 file1 file2))
+     (guard (c ((nix-protocol-error? c)
+                (and (not (zero? (nix-protocol-error-status c)))
+                     (string-contains
+                       (nix-protocol-error-message c)
+                       "not valid"))))
+            (import-paths
+              %store
+              (open-bytevector-input-port dump)))))
actual-value: 69
result: PASS

test-name: export/import recursive
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:672
source:
+ (test-assert
+   "export/import recursive"
+   (let* ((file0 (add-text-to-store %store "baz" (random-text)))
+          (file1 (add-text-to-store
+                   %store
+                   "foo"
+                   (random-text)
+                   (list file0)))
+          (file2 (add-text-to-store
+                   %store
+                   "bar"
+                   (random-text)
+                   (list file1)))
+ finding garbage collector roots...
deleting unused links...
@ build-started /tmp/guix-tests/store/2bz9qad6fl857hmnrxs5incnw6ad66hv-bunch.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/2b//z9qad6fl857hmnrxs5incnw6ad66hv-bunch.drv.bz2
@ build-succeeded /tmp/guix-tests/store/2bz9qad6fl857hmnrxs5incnw6ad66hv-bunch.drv -
         (dump (call-with-bytevector-output-port
+                  (cute export-paths
+                        %store
+                        (list file2)
+                        <>
+                        #:recursive?
+                        #t))))
+     (delete-paths %store (list file0 file1 file2))
+     (let ((imported
+             (import-paths
+               %store
+               (open-bytevector-input-port dump))))
+       (and (equal? imported (list file0 file1 file2))
+            (every file-exists? (list file0 file1 file2))
+            (equal? (list file0) (references %store file1))
+            (equal? (list file1) (references %store file2))))))
actual-value: #t
result: PASS

test-name: write-file & export-path yield the same result
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:688
source:
+ (test-assert
+   "write-file & export-path yield the same result"
+   (run-with-store
+     %store
+     (mlet* %store-monad
+            ((drv1 (package->derivation %bootstrap-guile))
+             (out1 -> (derivation->output-path drv1))
+             (data ->
+                   (unfold
+                     (cut >= <> 26)
+                     (lambda (i) (random-bytevector 128))
+                     #{1+}#
+                     0))
+             (build ->
+                    (gexp (begin
+                            (use-modules (rnrs io ports) (srfi srfi-1))
+                            (let ()
+                              (define letters
+                                (map (lambda (i)
+                                       (string
+                                         (integer->char
+                                           (+ i (char->integer #\a)))))
+                                     (iota 26)))
+                              (define (touch file data)
+                                (call-with-output-file
+                                  file
+                                  (lambda (port) (put-bytevector port data))))
+                              (mkdir (ungexp output))
+                              (chdir (ungexp output))
+                              (for-each
+                                touch
+                                (append (drop letters 10) (take letters 10))
+                                (list (ungexp-splicing data)))
+                              #t))))
+             (drv2 (gexp->derivation "bunch" build))
+             (out2 -> (derivation->output-path drv2))
+             (item-info -> (store-lift query-path-info)))
+            (mbegin
+              %store-monad
+              (built-derivations (list drv1 drv2))
+              (foldm %store-monad
+                     (lambda (item result)
+                       (define ref-hash
+                         (let-values
+                           (((port get) (open-sha256-port)))
+                           (write-file item port)
+                           (close-port port)
+                           (get)))
+                       (>>= (item-info item)
+                            (lambda (info)
+                              (return
+                                (and result
+                                     (bytevector=?
+                                       (path-info-hash info)
+                                       ref-hash))))))
+                     #t
+                     (list out1 out2))))
+     #:guile-for-build
+     (%guile-for-build)))
actual-value: #t
result: PASS

test-name: import corrupt path
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:754
source:
+ (test-assert
+   "import corrupt path"
+   (let* ((text (random-text))
+          (file (add-text-to-store %store "text" text))
+          (dump (call-with-bytevector-output-port
+                  (cut export-paths %store (list file) <>))))
+     (delete-paths %store (list file))
+     (let* ((index 112)
+            (byte (bytevector-u8-ref dump index)))
+       (bytevector-u8-set! dump index (logxor 255 byte)))
+     (and (not (file-exists? file))
+         finding garbage collector roots...
deleting unused links...
reading the Nix store...
reading the Nix store...
path `/tmp/guix-tests/store/24l50disrrrv17mkhx5myrn5h9ynf2az-foo' disappeared, but it still has valid referrers!
reading the Nix store...
substitute: warning: authentication and authorization of substitutes disabled!
substitute: guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
fetching path `/tmp/guix-tests/store/52snxh5gf5a05irw1s4c2iwbiifbmdjp-corrupt'...
warning: authentication and authorization of substitutes disabled!
guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
Downloading file:/tmp/guix-tests/var/14716/substituter-data/example.nar...
\r^[[K example.nar  176B                      0B/s 00:00 [                    ]   0.0%\r^[[K example.nar  176B                  834KiB/s 00:00 [####################] 100.0%\r^[[K example.nar  176B                  369KiB/s 00:00 [####################] 100.0%

reading the Nix store...
checking path existence...
checking hashes...
reading the Nix store...
checking path existence...
checking hashes...
path `/tmp/guix-tests/store/52snxh5gf5a05irw1s4c2iwbiifbmdjp-corrupt' was modified! expected hash `67f94904ddf538c7bfd56b7dff2ef1b3c77807f559bebc0456ad3e1e8461da7e', got `e09c480e2e93336cd3c45aa129f81a0d7ba56c410b849d7779a8136074413b3d'
finding garbage collector roots...
removing stale temporary roots file `/tmp/guix-tests/var/14716/temproots/15448'
deleting `/tmp/guix-tests/store/52snxh5gf5a05irw1s4c2iwbiifbmdjp-corrupt'
deleting `/tmp/guix-tests/store/trash'
deleting unused links...
note: currently hard linking saves 0.69 MiB
 (guard (c ((nix-protocol-error? c)
+                     (pk 'c c)
+                     (and (not (zero? (nix-protocol-error-status c)))
+                          (string-contains
+                            (nix-protocol-error-message c)
+                            "corrupt"))))
+                 (let* ((source (open-bytevector-input-port dump))
+                        (imported (import-paths %store source)))
+                   (pk 'corrupt-imported imported)
+                   #f)))))

;;; (c #<condition &nix-protocol-error [message: "signed hash doesn't match actual contents of imported archive; archive could be corrupt, or someone is trying to import a Trojan horse" status: 1] dc0b40>)
actual-value: 80
result: PASS

test-name: register-path
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:778
source:
+ (test-assert
+   "register-path"
+   (let ((file (string-append
+                 (%store-prefix)
+                 "/"
+                 (make-string 32 #\f)
+                 "-fake")))
+     (when (valid-path? %store file)
+           (delete-paths %store (list file)))
+     (false-if-exception (delete-file file))
+     (let ((ref (add-text-to-store
+                  %store
+                  "ref-of-fake"
+                  (random-text)))
+           (drv (string-append file ".drv")))
+       (call-with-output-file
+         file
+         (cut display "This is a fake store item.\n" <>))
+       (register-path
+         file
+         #:references
+         (list ref)
+         #:deriver
+         drv)
+       (and (valid-path? %store file)
+            (equal? (references %store file) (list ref))
+            (null? (valid-derivers %store file))
+            (null? (referrers %store file))))))
actual-value: #t
result: PASS

test-name: verify-store
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:798
source:
+ (test-assert
+   "verify-store"
+   (let* ((text (random-text))
+          (file1 (add-text-to-store %store "foo" text))
+          (file2 (add-text-to-store
+                   %store
+                   "bar"
+                   (random-text)
+                   (list file1))))
+     (and (pk 'verify1 (verify-store %store))
+          (begin
+            (delete-file file1)
+            (not (pk 'verify2 (verify-store %store))))
+          (begin
+            (call-with-output-file
+              file1
+              (lambda (port) (display text port)))
+            (pk 'verify3 (verify-store %store))))))

;;; (verify1 #t)

;;; (verify2 #f)

;;; (verify3 #t)
actual-value: #t
result: PASS

test-name: verify-store + check-contents
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:815
source:
+ (test-assert
+   "verify-store + check-contents"
+   (with-store
+     s
+     (let* ((text (random-text))
+            (drv (build-expression->derivation
+                   s
+                   "corrupt"
+                   `(let ((out (assoc-ref %outputs "out")))
+                      (call-with-output-file
+                        out
+                        (lambda (port) (display ,text port)))
+                      #t)
+                   #:guile-for-build
+                   (package-derivation
+                     s
+                     %bootstrap-guile
+                     (%current-system))))
+            (file (derivation->output-path drv)))
+       (with-derivation-substitute
+         drv
+         text
+         (and (build-derivations s (list drv))
+              (verify-store s #:check-contents? #t)
+              (begin
+                (chmod file 420)
+                (call-with-output-file
+                  file
+                  (lambda (port) (display "corrupt!" port)))
+                #t)
+              (not (verify-store s #:check-contents? #t))
+              (delete-paths s (list file)))))))
actual-value: ("/tmp/guix-tests/store/52snxh5gf5a05irw1s4c2iwbiifbmdjp-corrupt")
result: PASS

test-name: build-things, check mode
location: substitute: warning: authentication and authorization of substitutes disabled!
substitute: guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
building path(s) `/tmp/guix-tests/store/rv6lrcr2ym55a0i0f1jnh01nq1l738qp-non-deterministic'
checking path(s) `/tmp/guix-tests/store/rv6lrcr2ym55a0i0f1jnh01nq1l738qp-non-deterministic'
warning: rewriting hashes in `/tmp/guix-tests/store/rv6lrcr2ym55a0i0f1jnh01nq1l738qp-non-deterministic'; cross fingers
/tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:852
source:
+ (test-assert
+   "build-things, check mode"
+   (with-store
+     store
+     (call-with-temporary-output-file
+       (lambda (entropy entropy-port)
+         (write (random-text) entropy-port)
+         (force-output entropy-port)
+         (let* ((drv (build-expression->derivation
+                       store
+                       "non-deterministic"
+                       `(begin
+                          (use-modules (rnrs io ports))
+                          (let ((out (assoc-ref %outputs "out")))
+                            (call-with-output-file
+                              out
+                              (lambda (port)
+                                (display
+                                  (call-with-input-file
+                                    ,entropy
+                                    get-string-all)
+                                  port)))
+                            #t))
+                       #:guile-for-build
+                       (package-derivation
+                         store
+                         %bootstrap-guile
+                         (%current-system))))
+                (file (derivation->output-path drv)))
+           (and (build-things
+                  store
+                  (list (derivation-file-name drv)))
+                (begin
+                  (write (random-text) entropy-port)
+                  (force-output entropy-port)
+                  (guard (c ((nix-protocol-error? c)
+                             (pk 'determinism-exception c)
+                             (and (not (zero? (nix-protocol-error-status c)))
+                                  (string-contains
+                                    (nix-protocol-error-message c)
+                                    "deterministic"))))
+                         (build-things
+                           store
+                           (list (derivation-file-name drv))
+                           (build-mode check))
+                         #f))))))))

;;; (determinism-exception #<condition &nix-protocol-error [message: "derivation `/tmp/guix-tests/store/w31qnay4xmnw8jpl3bm3hryd0qfipar1-non-deterministic.drv' may not be deterministic: output `/tmp/guix-tests/store/rv6lrcr2ym55a0i0f1jnh01nq1l738qp-non-deterministic' differs" status: 1] 109d750>)
actual-value: 71
result: PASS

test-name: build multiple times
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:889
source:
+ (test-assert
+   "build multiple times"
+   (with-store
+     store
+     (set-build-options
+       store
+       #:rounds
+       2
+       #:use-substitutes?
+       #f)
+     (call-with-temporary-output-file
+       (lambda (entropy entropy-port)
+         (write (random-text) entropy-port)
+         (force-output entropy-port)
+         (let* ((drv (build-expression->derivation
+                       store
+                       "non-deterministic"
+                       `(begin
+                          (use-modules (rnrs io ports))
+                          (let ((out (assoc-ref %outputs "out")))
+                            (call-with-output-file
+                              out
+                              (lambda (port)
+                                (display
+                                  (call-with-input-file
+                                    ,entropy
+                                    get-string-all)
+                                  port)
+                                (call-with-output-file
+                                  ,entropy
+                                  (lambda (port) (write 'foobar port)))))
+                            #t))
+                       #:guile-for-build
+                       (package-derivation
+                         store
+                         %bootstrap-guile
+                         (%current-system))))
+                (file (derivation->output-path drv)))
+           (guard (c ((nix-protocol-error? c)
+                      @ build-started /tmp/guix-tests/store/bijgb20hfd0srrksykr13bphlmrfmmax-non-deterministic.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/bi//jgb20hfd0srrksykr13bphlmrfmmax-non-deterministic.drv.bz2
@ build-started /tmp/guix-tests/store/bijgb20hfd0srrksykr13bphlmrfmmax-non-deterministic.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/bi//jgb20hfd0srrksykr13bphlmrfmmax-non-deterministic.drv.bz2
output ‘/tmp/guix-tests/store/z9wnfg0fg40c4sb3yld8k5x8kykk3pi0-non-deterministic’ of ‘/tmp/guix-tests/store/bijgb20hfd0srrksykr13bphlmrfmmax-non-deterministic.drv’ differs from previous round
@ build-failed /tmp/guix-tests/store/bijgb20hfd0srrksykr13bphlmrfmmax-non-deterministic.drv - 1 output ‘/tmp/guix-tests/store/z9wnfg0fg40c4sb3yld8k5x8kykk3pi0-non-deterministic’ of ‘/tmp/guix-tests/store/bijgb20hfd0srrksykr13bphlmrfmmax-non-deterministic.drv’ differs from previous round
@ build-started /tmp/guix-tests/store/0akfqy1p1vx0bb6xxfrzbc990ix2ccfc-the-thing.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/0a//kfqy1p1vx0bb6xxfrzbc990ix2ccfc-the-thing.drv.bz2
@ build-succeeded /tmp/guix-tests/store/0akfqy1p1vx0bb6xxfrzbc990ix2ccfc-the-thing.drv -
(pk 'multiple-build c)
+                      (and (not (zero? (nix-protocol-error-status c)))
+                           (string-contains
+                             (nix-protocol-error-message c)
+                             "deterministic"))))
+                  (current-build-output-port (current-error-port))
+                  (build-things
+                    store
+                    (list (derivation-file-name drv)))
+                  #f))))))

;;; (multiple-build #<condition &nix-protocol-error [message: "build of `/tmp/guix-tests/store/bijgb20hfd0srrksykr13bphlmrfmmax-non-deterministic.drv' failed" status: 1] d04360>)
actual-value: 69
result: PASS

test-name: store-lower
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:927
source:
+ (test-equal
+   "store-lower"
+   "Lowered."
+   (let* ((add (store-lower text-file))
+          (file (add %store "foo" "Lowered.")))
+     (call-with-input-file file get-string-all)))
expected-value: "Lowered."
actual-value: "Lowered."
result: PASS

test-name: current-system
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:933
source:
+ (test-equal
+   "current-system"
+   "bar"
+   (parameterize
+     ((%current-system "frob"))
+     (run-with-store
+       %store
+       (mbegin
+         %store-monad
+         (set-current-system "bar")
+         (current-system))
+       #:system
+       "foo")))
expected-value: "bar"
actual-value: "bar"
result: PASS

test-name: query-path-info
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:942
source:
+ (test-assert
+   "query-path-info"
+   (let* ((ref (add-text-to-store %store "ref" "foo"))
+          (item (add-text-to-store
+                  %store
+                  "item"
+                  "bar"
+                  (list ref)))
+          (info (query-path-info %store item)))
+     (and (equal? (path-info-references info) (list ref))
+          (equal?
+            (path-info-hash info)
+            (sha256
+              (string->utf8
+                (call-with-output-string
+                  (cut write-file item <>))))))))
actual-value: #t
result: PASS

test-name: path-info-deriver
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:952
source:
+ (test-assert
+   "path-info-deriver"
+   (let* ((b (add-text-to-store
+               %store
+               "build"
+               "echo $foo > $out"
+               '()))
+          (s (add-to-store
+               %store
+               "bash"
+               #t
+               "sha256"
+               (search-bootstrap-binary
+                 "bash"
+                 (%current-system))))
+          (d (derivation
+               %store
+               "the-thing"
+               s
+               `("-e" ,b)
+               #:env-vars
+               `(("foo" unquote (random-text)))
+               #:inputs
+               `((,b) (,s))))
+          (o (derivation->output-path d)))
+     (and (build-derivations %store (list d))
+          (not (path-info-deriver (query-path-info %store b)))
+          (string=?
+            (derivation-file-name d)
+            (path-info-deriver (query-path-info %store o))))))
actual-value: #t
result: PASS

test-name: build-cores
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:967
source:
+ (test-equal
+   "build-cores"
+   (list 0 42)
+   (with-store
+     store
+     (let* ((build (add-text-to-store
+                     store
+                     "build.sh"
+                     "echo $NIX_BUILD_CORES > $out"))
+            (bash (add-to-store
+                    store
+                    "bash"
+                    #t
+                    "sha256"
+                    (search-bootstrap-binary
+                      "bash"
+                      (%current-system))))
+            (drv1 (derivation
+                    store
+                    "the-thing"
+                    bash
+                    `("-e" ,build)
+                    #:inputs
+                    `((,bash) (,build))
+         substitute: warning: authentication and authorization of substitutes disabled!
substitute: guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
building path(s) `/tmp/guix-tests/store/pndkakqgc1v3ir7zsrsn08pyn55dfky3-the-thing'
@ build-started /tmp/guix-tests/store/ig4hbsz711krxq7ad26q3fd06zlsysmr-the-thing.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/ig//4hbsz711krxq7ad26q3fd06zlsysmr-the-thing.drv.bz2
@ build-succeeded /tmp/guix-tests/store/ig4hbsz711krxq7ad26q3fd06zlsysmr-the-thing.drv -
           #:env-vars
+                    `(("x" unquote (random-text)))))
+            (drv2 (derivation
+                    store
+                    "the-thing"
+                    bash
+                    `("-e" ,build)
+                    #:inputs
+                    `((,bash) (,build))
+                    #:env-vars
+                    `(("x" unquote (random-text))))))
+       (and (build-derivations store (list drv1))
+            (begin
+              (set-build-options store #:build-cores 42)
+              (build-derivations store (list drv2)))
+            (list (call-with-input-file
+                    (derivation->output-path drv1)
+                    read)
+                  (call-with-input-file
+                    (derivation->output-path drv2)
+                    read))))))
expected-value: (0 42)
actual-value: (0 42)
result: PASS


SKIP: tests/union
=================

random seed for tests: 1511176066
@ build-started /tmp/guix-tests/store/w5hzafbhxyj68wdlzydkf3gd2rj9xhbs-module-import.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/w5//hzafbhxyj68wdlzydkf3gd2rj9xhbs-module-import.drv.bz2
@ build-succeeded /tmp/guix-tests/store/w5hzafbhxyj68wdlzydkf3gd2rj9xhbs-module-import.drv -
@ build-started /tmp/guix-tests/store/xbqdajzc1qj2kdm4jvj5r1vm3gczcwap-one.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/xb//qdajzc1qj2kdm4jvj5r1vm3gczcwap-one.drv.bz2
@ build-succeeded /tmp/guix-tests/store/xbqdajzc1qj2kdm4jvj5r1vm3gczcwap-one.drv -
@ build-started /tmp/guix-tests/store/628gfbr4qvj6sp47kb5q54dawrmia3nd-module-import-compiled.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/62//8gfbr4qvj6sp47kb5q54dawrmia3nd-module-import-compiled.drv.bz2
@ build-succeeded /tmp/guix-tests/store/628gfbr4qvj6sp47kb5q54dawrmia3nd-module-import-compiled.drv -
@ build-started /tmp/guix-tests/store/873jwzh897k7w7lynia8r5j066sg03av-two.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/87//3jwzh897k7w7lynia8r5j066sg03av-two.drv.bz2
@ build-succeeded /tmp/guix-tests/store/873jwzh897k7w7lynia8r5j066sg03av-two.drv -
@ build-started /tmp/guix-tests/store/s0a575gyk6ypdhlljqpqksk49pjdxvrz-union-collision-symlink.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/s0//a575gyk6ypdhlljqpqksk49pjdxvrz-union-collision-symlink.drv.bz2
`/tmp/guix-tests/store/92cd19f3cbh5s3338rzcvd967fbj1n6d-two/bar' ~> `/tmp/guix-tests/store/g6hvmsa4ybfv5iiais6zxs1mjr13pzr1-union-collision-symlink/bar'
`/tmp/guix-tests/store/92cd19f3cbh5s3338rzcvd967fbj1n6d-two/foo/two' ~> `/tmp/guix-tests/store/g6hvmsa4ybfv5iiais6zxs1mjr13pzr1-union-collision-symlink/foo/two'
`/tmp/guix-tests/store/p6j250a3pzkymsxc4i740v79qs6bv0fn-one/foo/one' ~> `/tmp/guix-tests/store/g6hvmsa4ybfv5iiais6zxs1mjr13pzr1-union-collision-symlink/foo/one'
@ build-succeeded /tmp/guix-tests/store/s0a575gyk6ypdhlljqpqksk49pjdxvrz-union-collision-symlink.drv -
test-name: union-build with symlink to directory
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/union.scm:42
source:
+ (test-assert
+   "union-build with symlink to directory"
+   (let* ((one (build-expression->derivation
+                 %store
+                 "one"
+                 '(begin
+                    (use-modules (guix build utils) (srfi srfi-26))
+                    (let ((foo (string-append %output "/foo")))
+                      (mkdir-p foo)
+                      (call-with-output-file
+                        (string-append foo "/one")
+                        (cut display "one" <>))))
+                 #:modules
+                 '((guix build utils))))
+          (two (build-expression->derivation
+                 %store
+                 "two"
+                 '(begin
+                    (use-modules (guix build utils) (srfi srfi-26))
+                    (let ((foo (string-append %output "/foo"))
+                          (bar (string-append %output "/bar")))
+                      (mkdir-p bar)
+                      (call-with-output-file
+                        (string-append bar "/two")
+                        (cut display "two" <>))
+                      (symlink "bar" foo)))
+                 #:modules
+                 '((guix build utils))))
+          (builder
+            '(begin
+               (use-modules (guix build union))
+               (union-build
+                 (assoc-ref %outputs "out")
+                 (list (assoc-ref %build-inputs "one")
+                       (assoc-ref %build-inputs "two")))))
+          (drv (build-expression->derivation
+                 %store
+                 "union-collision-symlink"
+                 builder
+                 #:inputs
+                 `(("one" ,one) ("two" ,two))
+                 #:modules
+                 '((guix build union)))))
+     (and (build-derivations %store (list drv))
+          (with-directory-excursion
+            (pk (derivation->output-path drv))
+            (and (string=?
+                   "one"
+                   (call-with-input-file "foo/one" get-string-all))
+                 (string=?
+                   "two"
+                   (call-with-input-file "foo/two" get-string-all))
+                 (string=?
+                   "two"
+                   (call-with-input-file "bar/two" get-string-all))
+                 (not (file-exists? "bar/one")))))))

;;; ("/tmp/guix-tests/store/g6hvmsa4ybfv5iiais6zxs1mjr13pzr1-union-collision-symlink")
actual-value: #t
result: PASS

test-name: union-build
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/union.scm:91
source:
+ (test-assert
+   "union-build"
+   (let* ((inputs
+            (map (match-lambda
+                   ((name package)
+                    `(,name ,(package-derivation %store package))))
+                 (append
+                   %bootstrap-inputs
+                   (take %bootstrap-inputs 3))))
+          (builder
+            `(begin
+               (use-modules (guix build union))
+               (union-build
+                 (assoc-ref %outputs "out")
+                 (map cdr %build-inputs))))
+          (drv (build-expression->derivation
+                 %store
+                 "union-test"
+                 builder
+                 #:inputs
+                 inputs
+                 #:modules
+                 '((guix build union)))))
+     (and (build-derivations %store (list (pk 'drv drv)))
+          (with-directory-excursion
+            (derivation->output-path drv)
+            (and (file-exists? "bin/touch")
+                 (file-exists? "bin/gcc")
+                 (file-exists? "bin/ld")
+                 (file-exists? "lib/libc.so")
+                 (directory-exists? "lib/gcc")
+                 (file-exists? "include/unistd.h")
+                 (eq? 'symlink (stat:type (lstat "include/c++")))
+                 (eq? 'directory (stat:type (lstat "bin"))))))))
result: SKIP

test-name: union-build #:create-all-directories? #t
location: @ build-started /tmp/guix-tests/store/iwc79z4pnnjaz0hif0xnx65cg2j3qsg9-union-test-all-dirs.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/iw//c79z4pnnjaz0hif0xnx65cg2j3qsg9-union-test-all-dirs.drv.bz2
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/oop/goops.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/oop/goops.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/oop/goops/dispatch.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/oop/goops/dispatch.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/oop/goops/accessors.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/oop/goops/accessors.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/oop/goops/composite-slot.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/oop/goops/composite-slot.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/oop/goops/util.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/oop/goops/util.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/oop/goops/describe.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/oop/goops/describe.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/oop/goops/save.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/oop/goops/save.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/oop/goops/internal.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/oop/goops/internal.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/oop/goops/compile.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/oop/goops/compile.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/oop/goops/simple.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/oop/goops/simple.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/oop/goops/stklos.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/oop/goops/stklos.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/oop/goops/active-slot.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/oop/goops/active-slot.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/system/base/ck.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/system/base/ck.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/system/base/pmatch.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/system/base/pmatch.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/system/base/lalr.upstream.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/system/base/lalr.upstream.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/system/base/message.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/system/base/message.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/system/base/target.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/system/base/target.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/system/base/lalr.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/system/base/lalr.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/system/base/compile.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/system/base/compile.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/system/base/syntax.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/system/base/syntax.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/system/base/language.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/system/base/language.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/system/vm/trap-state.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/system/vm/trap-state.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/system/vm/trace.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/system/vm/trace.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/system/vm/program.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/system/vm/program.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/system/vm/objcode.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/system/vm/objcode.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/system/vm/frame.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/system/vm/frame.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/system/vm/traps.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/system/vm/traps.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/system/vm/vm.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/system/vm/vm.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/system/vm/instruction.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/system/vm/instruction.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/system/vm/coverage.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/system/vm/coverage.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/system/vm/inspect.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/system/vm/inspect.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/system/xref.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/system/xref.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/system/repl/repl.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/system/repl/repl.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/system/repl/error-handling.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/system/repl/error-handling.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/system/repl/describe.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/system/repl/describe.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/system/repl/command.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/system/repl/command.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/system/repl/debug.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/system/repl/debug.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/system/repl/server.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/system/repl/server.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/system/repl/common.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/system/repl/common.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/system/foreign.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/system/foreign.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/sxml/xpath.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/sxml/xpath.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/sxml/upstream/SXPath-old.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/sxml/upstream/SXPath-old.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/sxml/upstream/input-parse.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/sxml/upstream/input-parse.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/sxml/upstream/assert.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/sxml/upstream/assert.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/sxml/upstream/SXML-tree-trans.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/sxml/upstream/SXML-tree-trans.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/sxml/upstream/SSAX.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/sxml/upstream/SSAX.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/sxml/fold.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/sxml/fold.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/sxml/transform.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/sxml/transform.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/sxml/ssax/input-parse.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/sxml/ssax/input-parse.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/sxml/simple.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/sxml/simple.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/sxml/sxml-match.ss' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/sxml/sxml-match.ss'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/sxml/match.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/sxml/match.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/sxml/apply-templates.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/sxml/apply-templates.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/sxml/ssax.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/sxml/ssax.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/texinfo.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/texinfo.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/scm-style-repl.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/scm-style-repl.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/control.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/control.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/poll.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/poll.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/and-let-star.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/and-let-star.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/channel.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/channel.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/save-stack.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/save-stack.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/string-fun.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/string-fun.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/calling.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/calling.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/threads.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/threads.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/r4rs.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/r4rs.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/rdelim.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/rdelim.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/lineio.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/lineio.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/readline.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/readline.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/list.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/list.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/quasisyntax.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/quasisyntax.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/weak-vector.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/weak-vector.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/top-repl.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/top-repl.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/getopt-long.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/getopt-long.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/eval.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/eval.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/futures.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/futures.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/streams.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/streams.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/networking.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/networking.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/r6rs-libraries.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/r6rs-libraries.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/poe.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/poe.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/mapping.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/mapping.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/boot-9.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/boot-9.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/optargs.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/optargs.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/receive.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/receive.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/common-list.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/common-list.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/q.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/q.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/deprecated.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/deprecated.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/safe.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/safe.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/i18n.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/i18n.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/format.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/format.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/gap-buffer.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/gap-buffer.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/serialize.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/serialize.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/ftw.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/ftw.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/session.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/session.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/hcons.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/hcons.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/runq.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/runq.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/pretty-print.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/pretty-print.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/r5rs.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/r5rs.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/curried-definitions.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/curried-definitions.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/posix.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/posix.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/psyntax-pp.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/psyntax-pp.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/match.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/match.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/buffered-input.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/buffered-input.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/psyntax.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/psyntax.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/match.upstream.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/match.upstream.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/time.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/time.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/binary-ports.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/binary-ports.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/regex.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/regex.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/ls.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/ls.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/rw.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/rw.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/documentation.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/documentation.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/local-eval.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/local-eval.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/iconv.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/iconv.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/history.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/history.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/expect.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/expect.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/command-line.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/command-line.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/syncase.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/syncase.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/slib.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/slib.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/stack-catch.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/stack-catch.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/occam-channel.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/occam-channel.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/null.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/null.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/debug.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/debug.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/vlist.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/vlist.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/safe-r5rs.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/safe-r5rs.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/eval-string.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/eval-string.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/ice-9/popen.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/ice-9/popen.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/tree-il.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/tree-il.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/glil.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/glil.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/value/spec.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/value/spec.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/assembly/spec.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/assembly/spec.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/assembly/compile-bytecode.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/assembly/compile-bytecode.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/assembly/decompile-bytecode.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/assembly/decompile-bytecode.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/assembly/disassemble.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/assembly/disassemble.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/scheme/decompile-tree-il.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/scheme/decompile-tree-il.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/scheme/spec.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/scheme/spec.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/scheme/compile-tree-il.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/scheme/compile-tree-il.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/objcode/spec.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/objcode/spec.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/tree-il/canonicalize.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/tree-il/canonicalize.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/tree-il/optimize.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/tree-il/optimize.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/tree-il/inline.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/tree-il/inline.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/tree-il/effects.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/tree-il/effects.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/tree-il/spec.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/tree-il/spec.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/tree-il/primitives.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/tree-il/primitives.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/tree-il/fix-letrec.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/tree-il/fix-letrec.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/tree-il/peval.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/tree-il/peval.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/tree-il/analyze.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/tree-il/analyze.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/tree-il/debug.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/tree-il/debug.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/tree-il/cse.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/tree-il/cse.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/tree-il/compile-glil.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/tree-il/compile-glil.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/elisp/runtime/subrs.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/elisp/runtime/subrs.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/elisp/runtime/macros.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/elisp/runtime/macros.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/elisp/runtime/function-slot.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/elisp/runtime/function-slot.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/elisp/runtime/value-slot.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/elisp/runtime/value-slot.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/elisp/spec.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/elisp/spec.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/elisp/parser.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/elisp/parser.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/elisp/bindings.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/elisp/bindings.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/elisp/lexer.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/elisp/lexer.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/elisp/runtime.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/elisp/runtime.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/elisp/compile-tree-il.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/elisp/compile-tree-il.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/assembly.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/assembly.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/glil/spec.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/glil/spec.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/glil/compile-assembly.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/glil/compile-assembly.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/ecmascript/array.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/ecmascript/array.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/ecmascript/spec.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/ecmascript/spec.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/ecmascript/parse.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/ecmascript/parse.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/ecmascript/function.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/ecmascript/function.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/ecmascript/tokenize.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/ecmascript/tokenize.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/ecmascript/impl.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/ecmascript/impl.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/ecmascript/base.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/ecmascript/base.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/ecmascript/compile-tree-il.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/ecmascript/compile-tree-il.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/bytecode/spec.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/bytecode/spec.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/brainfuck/spec.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/brainfuck/spec.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/brainfuck/parse.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/brainfuck/parse.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/brainfuck/compile-scheme.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/brainfuck/compile-scheme.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/language/brainfuck/compile-tree-il.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/language/brainfuck/compile-tree-il.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/statprof.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/statprof.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/scripts/list.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/scripts/list.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/scripts/help.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/scripts/help.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/scripts/read-rfc822.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/scripts/read-rfc822.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/scripts/use2dot.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/scripts/use2dot.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/scripts/snarf-guile-m4-docs.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/scripts/snarf-guile-m4-docs.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/scripts/frisk.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/scripts/frisk.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/scripts/read-text-outline.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/scripts/read-text-outline.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/scripts/autofrisk.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/scripts/autofrisk.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/scripts/snarf-check-and-output-texi.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/scripts/snarf-check-and-output-texi.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/scripts/scan-api.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/scripts/scan-api.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/scripts/read-scheme-source.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/scripts/read-scheme-source.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/scripts/compile.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/scripts/compile.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/scripts/doc-snarf.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/scripts/doc-snarf.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/scripts/punify.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/scripts/punify.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/scripts/lint.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/scripts/lint.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/scripts/generate-autoload.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/scripts/generate-autoload.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/scripts/api-diff.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/scripts/api-diff.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/scripts/disassemble.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/scripts/disassemble.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/scripts/display-commentary.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/scripts/display-commentary.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/scripts/summarize-guile-TODO.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/scripts/summarize-guile-TODO.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/rnrs.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/rnrs.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-67/compare.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-67/compare.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-41.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-41.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-67.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-67.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-19.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-19.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-18.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-18.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-17.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-17.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-9.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-9.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-4/gnu.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-4/gnu.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-16.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-16.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-8.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-8.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-9/gnu.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-9/gnu.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-14.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-14.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-6.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-6.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-27.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-27.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-13.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-13.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-88.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-88.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-26.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-26.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-60.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-60.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-39.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-39.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-4.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-4.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-11.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-11.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-38.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-38.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-10.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-10.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-2.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-2.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-37.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-37.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-98.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-98.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-1.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-1.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-35.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-35.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-34.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-34.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-42/ec.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-42/ec.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-45.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-45.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-31.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-31.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-42.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-42.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/srfi/srfi-69.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/srfi/srfi-69.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/guile-procedures.txt' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/guile-procedures.txt'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/rnrs/mutable-strings.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/rnrs/mutable-strings.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/rnrs/control.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/rnrs/control.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/rnrs/records/procedural.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/rnrs/records/procedural.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/rnrs/records/syntactic.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/rnrs/records/syntactic.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/rnrs/records/inspection.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/rnrs/records/inspection.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/rnrs/lists.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/rnrs/lists.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/rnrs/enums.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/rnrs/enums.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/rnrs/conditions.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/rnrs/conditions.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/rnrs/hashtables.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/rnrs/hashtables.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/rnrs/arithmetic/fixnums.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/rnrs/arithmetic/fixnums.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/rnrs/arithmetic/bitwise.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/rnrs/arithmetic/bitwise.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/rnrs/arithmetic/flonums.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/rnrs/arithmetic/flonums.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/rnrs/sorting.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/rnrs/sorting.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/rnrs/files.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/rnrs/files.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/rnrs/programs.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/rnrs/programs.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/rnrs/mutable-pairs.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/rnrs/mutable-pairs.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/rnrs/bytevectors.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/rnrs/bytevectors.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/rnrs/unicode.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/rnrs/unicode.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/rnrs/eval.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/rnrs/eval.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/rnrs/base.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/rnrs/base.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/rnrs/syntax-case.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/rnrs/syntax-case.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/rnrs/r5rs.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/rnrs/r5rs.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/rnrs/io/ports.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/rnrs/io/ports.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/rnrs/io/simple.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/rnrs/io/simple.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/rnrs/exceptions.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/rnrs/exceptions.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/web/http.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/web/http.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/web/client.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/web/client.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/web/server/http.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/web/server/http.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/web/request.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/web/request.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/web/response.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/web/response.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/web/uri.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/web/uri.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/web/server.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/web/server.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/texinfo/indexing.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/texinfo/indexing.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/texinfo/plain-text.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/texinfo/plain-text.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/texinfo/html.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/texinfo/html.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/texinfo/reflection.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/texinfo/reflection.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/texinfo/string-utils.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/texinfo/string-utils.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/texinfo/docbook.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/texinfo/docbook.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/share/guile/2.0/texinfo/serialize.scm' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/share/guile/2.0/texinfo/serialize.scm'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/bin/.guile-real' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/bin/.guile-real'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/bin/guile' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/bin/guile'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/oop/goops.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/oop/goops.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/oop/goops/internal.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/oop/goops/internal.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/oop/goops/simple.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/oop/goops/simple.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/oop/goops/util.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/oop/goops/util.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/oop/goops/compile.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/oop/goops/compile.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/oop/goops/dispatch.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/oop/goops/dispatch.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/oop/goops/active-slot.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/oop/goops/active-slot.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/oop/goops/accessors.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/oop/goops/accessors.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/oop/goops/describe.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/oop/goops/describe.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/oop/goops/stklos.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/oop/goops/stklos.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/oop/goops/composite-slot.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/oop/goops/composite-slot.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/oop/goops/save.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/oop/goops/save.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/texinfo.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/texinfo.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/system/base/pmatch.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/system/base/pmatch.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/system/base/syntax.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/system/base/syntax.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/system/base/target.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/system/base/target.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/system/base/lalr.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/system/base/lalr.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/system/base/compile.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/system/base/compile.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/system/base/ck.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/system/base/ck.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/system/base/language.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/system/base/language.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/system/base/message.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/system/base/message.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/system/vm/trace.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/system/vm/trace.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/system/vm/traps.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/system/vm/traps.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/system/vm/trap-state.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/system/vm/trap-state.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/system/vm/objcode.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/system/vm/objcode.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/system/vm/frame.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/system/vm/frame.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/system/vm/vm.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/system/vm/vm.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/system/vm/coverage.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/system/vm/coverage.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/system/vm/program.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/system/vm/program.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/system/vm/instruction.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/system/vm/instruction.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/system/vm/inspect.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/system/vm/inspect.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/system/foreign.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/system/foreign.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/system/xref.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/system/xref.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/system/repl/command.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/system/repl/command.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/system/repl/repl.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/system/repl/repl.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/system/repl/common.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/system/repl/common.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/system/repl/server.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/system/repl/server.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/system/repl/error-handling.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/system/repl/error-handling.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/system/repl/debug.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/system/repl/debug.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/rnrs.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/rnrs.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/sxml/apply-templates.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/sxml/apply-templates.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/sxml/simple.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/sxml/simple.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/sxml/fold.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/sxml/fold.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/sxml/xpath.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/sxml/xpath.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/sxml/transform.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/sxml/transform.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/sxml/ssax.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/sxml/ssax.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/sxml/ssax/input-parse.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/sxml/ssax/input-parse.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/sxml/match.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/sxml/match.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/q.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/q.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/receive.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/receive.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/boot-9.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/boot-9.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/rw.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/rw.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/ls.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/ls.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/networking.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/networking.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/save-stack.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/save-stack.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/channel.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/channel.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/mapping.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/mapping.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/string-fun.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/string-fun.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/control.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/control.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/poll.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/poll.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/streams.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/streams.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/eval-string.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/eval-string.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/psyntax-pp.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/psyntax-pp.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/eval.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/eval.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/match.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/match.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/documentation.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/documentation.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/weak-vector.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/weak-vector.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/debug.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/debug.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/occam-channel.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/occam-channel.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/posix.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/posix.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/common-list.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/common-list.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/null.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/null.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/top-repl.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/top-repl.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/r5rs.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/r5rs.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/runq.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/runq.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/local-eval.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/local-eval.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/ftw.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/ftw.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/serialize.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/serialize.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/slib.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/slib.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/pretty-print.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/pretty-print.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/lineio.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/lineio.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/history.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/history.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/readline.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/readline.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/threads.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/threads.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/calling.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/calling.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/optargs.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/optargs.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/gap-buffer.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/gap-buffer.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/deprecated.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/deprecated.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/regex.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/regex.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/time.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/time.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/binary-ports.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/binary-ports.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/poe.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/poe.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/and-let-star.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/and-let-star.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/futures.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/futures.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/popen.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/popen.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/curried-definitions.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/curried-definitions.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/vlist.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/vlist.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/safe-r5rs.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/safe-r5rs.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/scm-style-repl.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/scm-style-repl.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/stack-catch.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/stack-catch.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/session.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/session.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/hcons.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/hcons.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/buffered-input.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/buffered-input.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/list.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/list.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/getopt-long.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/getopt-long.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/syncase.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/syncase.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/i18n.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/i18n.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/format.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/format.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/expect.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/expect.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/rdelim.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/rdelim.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/r4rs.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/r4rs.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/iconv.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/iconv.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/command-line.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/command-line.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/ice-9/safe.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/ice-9/safe.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/glil.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/glil.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/tree-il.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/tree-il.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/value/spec.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/value/spec.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/assembly.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/assembly.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/assembly/disassemble.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/assembly/disassemble.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/assembly/spec.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/assembly/spec.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/assembly/compile-bytecode.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/assembly/compile-bytecode.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/assembly/decompile-bytecode.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/assembly/decompile-bytecode.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/scheme/decompile-tree-il.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/scheme/decompile-tree-il.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/scheme/compile-tree-il.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/scheme/compile-tree-il.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/scheme/spec.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/scheme/spec.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/objcode/spec.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/objcode/spec.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/tree-il/effects.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/tree-il/effects.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/tree-il/fix-letrec.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/tree-il/fix-letrec.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/tree-il/inline.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/tree-il/inline.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/tree-il/canonicalize.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/tree-il/canonicalize.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/tree-il/compile-glil.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/tree-il/compile-glil.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/tree-il/analyze.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/tree-il/analyze.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/tree-il/cse.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/tree-il/cse.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/tree-il/peval.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/tree-il/peval.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/tree-il/optimize.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/tree-il/optimize.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/tree-il/primitives.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/tree-il/primitives.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/tree-il/debug.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/tree-il/debug.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/tree-il/spec.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/tree-il/spec.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/elisp/runtime/value-slot.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/elisp/runtime/value-slot.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/elisp/runtime/subrs.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/elisp/runtime/subrs.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/elisp/runtime/function-slot.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/elisp/runtime/function-slot.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/elisp/runtime/macros.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/elisp/runtime/macros.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/elisp/lexer.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/elisp/lexer.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/elisp/parser.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/elisp/parser.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/elisp/bindings.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/elisp/bindings.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/elisp/compile-tree-il.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/elisp/compile-tree-il.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/elisp/spec.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/elisp/spec.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/elisp/runtime.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/elisp/runtime.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/glil/compile-assembly.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/glil/compile-assembly.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/glil/spec.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/glil/spec.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/ecmascript/function.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/ecmascript/function.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/ecmascript/array.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/ecmascript/array.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/ecmascript/tokenize.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/ecmascript/tokenize.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/ecmascript/impl.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/ecmascript/impl.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/ecmascript/compile-tree-il.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/ecmascript/compile-tree-il.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/ecmascript/spec.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/ecmascript/spec.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/ecmascript/parse.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/ecmascript/parse.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/ecmascript/base.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/ecmascript/base.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/bytecode/spec.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/bytecode/spec.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/brainfuck/compile-scheme.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/brainfuck/compile-scheme.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/brainfuck/compile-tree-il.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/brainfuck/compile-tree-il.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/brainfuck/spec.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/brainfuck/spec.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/language/brainfuck/parse.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/language/brainfuck/parse.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/statprof.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/statprof.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/scripts/summarize-guile-TODO.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/scripts/summarize-guile-TODO.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/scripts/snarf-check-and-output-texi.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/scripts/snarf-check-and-output-texi.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/scripts/scan-api.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/scripts/scan-api.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/scripts/doc-snarf.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/scripts/doc-snarf.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/scripts/snarf-guile-m4-docs.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/scripts/snarf-guile-m4-docs.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/scripts/compile.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/scripts/compile.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/scripts/read-scheme-source.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/scripts/read-scheme-source.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/scripts/disassemble.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/scripts/disassemble.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/scripts/lint.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/scripts/lint.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/scripts/api-diff.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/scripts/api-diff.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/scripts/list.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/scripts/list.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/scripts/help.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/scripts/help.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/scripts/use2dot.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/scripts/use2dot.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/scripts/display-commentary.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/scripts/display-commentary.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/scripts/autofrisk.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/scripts/autofrisk.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/scripts/punify.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/scripts/punify.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/scripts/frisk.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/scripts/frisk.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/scripts/read-text-outline.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/scripts/read-text-outline.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/scripts/read-rfc822.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/scripts/read-rfc822.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/scripts/generate-autoload.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/scripts/generate-autoload.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-45.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-45.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-60.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-60.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-35.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-35.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-8.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-8.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-38.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-38.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-4/gnu.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-4/gnu.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-10.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-10.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-18.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-18.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-9/gnu.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-9/gnu.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-6.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-6.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-13.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-13.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-69.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-69.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-1.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-1.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-9.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-9.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-26.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-26.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-41.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-41.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-16.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-16.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-31.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-31.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-39.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-39.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-4.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-4.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-11.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-11.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-67.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-67.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-19.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-19.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-34.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-34.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-14.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-14.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-37.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-37.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-2.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-2.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-27.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-27.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-42.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-42.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-98.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-98.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-17.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-17.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/srfi/srfi-88.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/srfi/srfi-88.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/rnrs/mutable-pairs.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/rnrs/mutable-pairs.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/rnrs/conditions.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/rnrs/conditions.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/rnrs/records/procedural.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/rnrs/records/procedural.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/rnrs/records/inspection.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/rnrs/records/inspection.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/rnrs/records/syntactic.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/rnrs/records/syntactic.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/rnrs/r5rs.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/rnrs/r5rs.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/rnrs/exceptions.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/rnrs/exceptions.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/rnrs/control.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/rnrs/control.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/rnrs/enums.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/rnrs/enums.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/rnrs/sorting.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/rnrs/sorting.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/rnrs/hashtables.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/rnrs/hashtables.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/rnrs/files.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/rnrs/files.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/rnrs/arithmetic/flonums.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/rnrs/arithmetic/flonums.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/rnrs/arithmetic/bitwise.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/rnrs/arithmetic/bitwise.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/rnrs/arithmetic/fixnums.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/rnrs/arithmetic/fixnums.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/rnrs/lists.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/rnrs/lists.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/rnrs/programs.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/rnrs/programs.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/rnrs/syntax-case.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/rnrs/syntax-case.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/rnrs/bytevectors.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/rnrs/bytevectors.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/rnrs/mutable-strings.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/rnrs/mutable-strings.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/rnrs/unicode.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/rnrs/unicode.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/rnrs/io/simple.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/rnrs/io/simple.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/rnrs/io/ports.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/rnrs/io/ports.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/rnrs/eval.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/rnrs/eval.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/rnrs/base.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/rnrs/base.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/web/response.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/web/response.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/web/server.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/web/server.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/web/server/http.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/web/server/http.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/web/http.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/web/http.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/web/uri.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/web/uri.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/web/client.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/web/client.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/web/request.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/web/request.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/texinfo/html.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/texinfo/html.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/texinfo/serialize.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/texinfo/serialize.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/texinfo/indexing.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/texinfo/indexing.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/texinfo/docbook.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/texinfo/docbook.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/texinfo/reflection.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/texinfo/reflection.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/texinfo/string-utils.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/texinfo/string-utils.go'
`/tmp/guix-tests/store/7y0q8n6zv41lr9viybhihlcmhri6939f-guile-bootstrap-2.0/lib/guile/2.0/ccache/texinfo/plain-text.go' ~> `/tmp/guix-tests/store/0sgpsn768nn73wblh4iw6wl3bcsfn7dd-union-test-all-dirs/lib/guile/2.0/ccache/texinfo/plain-text.go'
@ build-succeeded /tmp/guix-tests/store/iwc79z4pnnjaz0hif0xnx65cg2j3qsg9-union-test-all-dirs.drv -
/tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/union.scm:127
source:
+ (test-assert
+   "union-build #:create-all-directories? #t"
+   (let* ((build `(begin
+                    (use-modules (guix build union))
+                    (union-build
+                      (assoc-ref %outputs "out")
+                      (map cdr %build-inputs)
+                      #:create-all-directories?
+                      #t)))
+          (input (package-derivation %store %bootstrap-guile))
+          (drv (build-expression->derivation
+                 %store
+                 "union-test-all-dirs"
+                 build
+                 #:modules
+                 '((guix build union))
+                 #:inputs
+                 `(("g" ,input)))))
+     (and (build-derivations %store (list drv))
+          (with-directory-excursion
+            (derivation->output-path drv)
+            (and (file-exists? "bin/guile")
+                 (file-is-directory? "bin")
+                 (eq? 'symlink (stat:type (lstat "bin/guile"))))))))
actual-value: #t
result: PASS


SKIP: tests/syscalls
====================

test-name: mount, ENOENT
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:40
source:
+ (test-equal
+   "mount, ENOENT"
+   ENOENT
+   (catch 'system-error
+          (lambda ()
+            (mount "/dev/null" "/does-not-exist" "ext2")
+            #f)
+          (compose system-error-errno list)))
expected-value: 2
actual-value: 2
result: PASS

test-name: umount, ENOENT/EPERM
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:48
source:
+ (test-assert
+   "umount, ENOENT/EPERM"
+   (catch 'system-error
+          (lambda () (umount "/does-not-exist") #f)
+          (lambda args
+            (memv (system-error-errno args)
+                  (list EPERM ENOENT)))))
actual-value: (1 2)
result: PASS

test-name: mount-points
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:57
source:
+ (test-assert
+   "mount-points"
+   (any (cute member <> (mount-points))
+        '("/" "/proc" "/sys" "/dev")))
actual-value: ("/" "/dev/full" "/dev/kvm" "/dev/null" "/dev/random" "/dev/tty" "/dev/urandom" "/dev/zero" "/gnu/store/09j7scnl3hahcmql986fsjpzj6gqsmzv-ncurses-6.0" "/gnu/store/0f76ak4jn36qs7syhfaw5ag9958yabzh-libatomic-ops-7.4.4" "/gnu/store/0q4qmgjz3gdvyc1majqjgcm9c7s8iv0z-libssh2-1.8.0" "/gnu/store/0s5manjvfa0gmsv2r71rchky7ab70g1d-icu4c-58.2" "/gnu/store/1jcq4fc07bngc5q1cy44j0glv1vrjz52-libffi-3.2.1" "/gnu/store/1jp44pfmqcj3zycclvmmva3xcwinyg7l-freetype-2.8" "/gnu/store/1ppqh79pkzxn0y945dcxmvp1y2fpd8iv-autoconf-2.69" "/gnu/store/1xc97akbdcisrid2n8djpkn09f8bkl5f-libxdmcp-1.1.2" "/gnu/store/20jm67srhdzi01d2gdg36cspyip21lsd-libsm-1.2.2" "/gnu/store/231indrpxi7m01xx752bx4y864kyf977-libxaw-1.0.13" "/gnu/store/2lfalradkpy41cxzk9bk2ssjzklcq8gw-guile-git-0.0-4.951a32c" "/gnu/store/2nr5qmmzazj37dzfzbn0g24yy2dsavy4-m4-1.4.18" "/gnu/store/2xiz9cb0mgbrp5hdpdsm3sf1ly3904nr-guix-0.13.0-10.0b4c385-checkout" "/gnu/store/3k1y78v6nxjvmivnri5j46wai6ppvyz0-harfbuzz-1.5.1" "/gnu/store/3x53yv4v144c9xp02rs64z7j597kkqax-gcc-5.4.0-lib" "/gnu/store/42d5rjrdkln6nwvzwdc8dyd4w6iy3n5j-coreutils-8.27" "/gnu/store/47jgabf5wx296alb06pb5iig6cqbmx0v-gdbm-1.13" "/gnu/store/4awdim3wf62nq9qjw3hl6bacgjh9fzyv-guile-2.0.14" "/gnu/store/4b9y9f5fvghk2vmwpbgzncal7z3r4n5y-pango-1.40.12" "/gnu/store/4c0dm8h5ln0zr1l93nwhhizf5p040yi6-gs-fonts-8.11" "/gnu/store/4iqyh8xqjxazza3lx2iz5v39ipzifsfj-gzip-1.8" "/gnu/store/593cj4b7nsa0csjfjnh0xx8y4rdpykxh-libxft-2.3.2" "/gnu/store/5jl21csvr3jmsa4a7d08sqa2waks3f09-gmp-6.1.2" "/gnu/store/5lrk6d5cjsv2s29vfji6j59gyf18rb5m-acl-2.2.52" "/gnu/store/5sv5zy2kgg6iaqyv8zw49w4243j0xkd0-gcc-5.4.0" "/gnu/store/6hicns85s8ddp0y539wdspwx22ac2kmv-bzip2-1.0.6" "/gnu/store/6vps2jc0v6b4hr8ds98785xcf8061wz0-make-4.2.1" "/gnu/store/7ljjhfz6p14xlnwnmzmg6hi01wfvz9vb-cyrus-sasl-2.1.26" "/gnu/store/7nsf89mygsz1q60nkp1f62q33zraq1vc-gd-2.2.5" "/gnu/store/7v2w3506q0gf96rsf6wf3gdr2iv5frmm-libgpg-error-1.27" "/gnu/store/7v8369lgnqvpphcw06hg59hb8hxmkr8x-sed-4.4" "/gnu/store/7zbscp5r0djsalcnvfrm7g0mp70mhrkd-diffutils-3.6" "/gnu/store/8d868psvkzj0215d83xb77q0c9mqjn4d-gts-0.7.6" "/gnu/store/8g0ilwjzha2s30d1xx979xgn081d525b-curl-7.55.1-doc" "/gnu/store/8n8wwvbkarxqxkn0kc6p5iin0ywiidb0-guile-ssh-0.11.2" "/gnu/store/965dw3smmsvj6jyfxrkapp0gn9jh9djn-libunistring-0.9.7" "/gnu/store/9b0nh58q1dwxli80xj15gv2037az96xw-patch-2.7.5" "/gnu/store/9blidf28xz0a0glnv6a4xcw6nxadg427-libgc-7.6.0" "/gnu/store/9pq16kfcldqqcbd58mmfp37g3awhg4sd-gawk-4.1.4" "/gnu/store/akc3nsnksgv6256jm1ariljb1c7zh8x2-libgc-7.6.0" "/gnu/store/an52j0jrvd23qypbidd5f20k2wi75vh9-pcre-8.40" "/gnu/store/ara5mgly0zi9j9dn7wiw5417w2svn3y2-libgit2-0.26.0" "/gnu/store/azbfh3i72lbaqvhgg5m7p6ymmqq0ii6q-glib-2.52.3" "/gnu/store/b7y66db86k57vbb03nr4bfn9svmks4gf-bash-4.4.12" "/gnu/store/b9ww6qv1ii9v6n45kin7543vkf6jfnd3-libpng-1.6.29" "/gnu/store/bcmf06k2n1pfwqkzpclvvc3w9jdfi71a-guile-json-0.6.0" "/gnu/store/bd29g8hyazd9jpyql568npfd23srlyk3-help2man-1.47.4" "/gnu/store/bw44dfc7sb38dk2j2k562bsjjsy93lvq-libgcrypt-1.7.8" "/gnu/store/bzn4wyrbdmfc1bd7lq05db5psfl5f8x8-perl-5.26.0" "/gnu/store/c2k4gqjhnjyqyisci1sy81416i03pk22-libidn2-2.0.2" "/gnu/store/c4vl4hw5jccg0b23sfvs0kdnfdbxdlgm-cairo-1.14.10" "/gnu/store/c6vpfgm9n7jzgr0llax0x7szqk9a5bfm-nettle-3.3" "/gnu/store/clrddh6a60b31anv7a9hrk3i9id0k5zs-libxcb-1.12" "/gnu/store/d8gkn84yqacjr80pzicz1ka3y2s1f2x0-guile-2.2.2" "/gnu/store/dabxjcasp7p3f2hwa5zfnzw0hpf73wbn-graphviz-2.40.1" "/gnu/store/dwi04458qala1knhsvn1wis90mr65r8b-linux-libre-headers-4.4.47" "/gnu/store/g3nari57wcfnm00kv9bnpyzdzfq4h8pk-xz-5.2.2" "/gnu/store/gfsiaw6rn29ii8cpjnix05a7r588k9yv-texinfo-6.3" "/gnu/store/j3my0bpdapn5p0cm31j6vnq3lfxk4zvd-libxmu-1.1.2" "/gnu/store/jnbb8ffxxvrw2b4z18zn0g08kqk9rsgl-libffi-3.2.1" "/gnu/store/jvsgj5l4lgdknari34rv29wv253n8jcl-gnutls-3.5.13" "/gnu/store/jz7wvy930liqjvm95lhdv9i1dr1xxvxp-libxext-1.3.3" "/gnu/store/kdwlvs51isdfbl61jdishzhly8h139zf-libbsd-0.8.3" "/gnu/store/kgy00x8jl7q965sngq1yyihbczxj15wk-libxrender-0.9.10" "/gnu/store/ki6myvq4ljlmnsmnx0khdxkl2kdcyqc3-bzip2-1.0.6" "/gnu/store/kpxi8h3669afr9r1bgvaf9ij3y4wdyyn-bash-minimal-4.4.12" "/gnu/store/kz47ykl11dx4y96zgi2jxqckr810fm96-bdb-5.3.28" "/gnu/store/l1yvpjihbrc3avb08r2bv0rj6657rpzi-libssh-0.7.5" "/gnu/store/lh1hwa0i061lwzyvk9brcsjb6h1gyhrg-ncurses-6.0" "/gnu/store/m0m6bwzi8lx7kv8zbn3hjrim6flmgnf4-openssl-1.0.2l" "/gnu/store/mipizipnr4y2hly9b429j8id1albbgqi-readline-7.0" "/gnu/store/mmbni235xxl5hxbi6d72y8yar87gr0px-autoconf-wrapper-2.69" "/gnu/store/mpl9b9w60gjzsq470zka5l8p2bmy7r8v-sqlite-3.19.3" "/gnu/store/msw2q7nr3vfmgwyxf15y0x7qbngs9y3d-file-5.30" "/gnu/store/mxsbvhljh0fk82hdsgy04p3l2d5hz4j4-libtasn1-4.12" "/gnu/store/mz2q8c1zl8y848nixvbywg2d3zq7pjmc-libxpm-3.5.12" "/gnu/store/n6nvxlk2j8ysffjh3jphn1k5silnakh6-glibc-2.25" "/gnu/store/naq2nb3vhyaswkk4sbiw7xd6ry21nkvg-automake-1.15" "/gnu/store/nnykzgwfy8mwh2gmxm715sjxykg8qjwn-binutils-2.28" "/gnu/store/np05q8mf1y9y4bk5y4ssj99m0dss2b1q-libx11-1.6.5" "/gnu/store/nw400gfan3mxvjfwvy1q72s1ybmdscsk-fontconfig-2.12.3" "/gnu/store/nx8blr0a248ahbl092h7acyb44lp8f0m-libunistring-0.9.7" "/gnu/store/nykcm5wlw8fjsi28nm01gg1as2znh8nf-gmp-6.1.2" "/gnu/store/nzv180i3z33vnb9krmc73mazhf626384-findutils-4.6.0" "/gnu/store/p5hrrimz30kfp56rah7qn4ymshyg78mq-graphite2-1.3.10" "/gnu/store/pa1ykb4j406bnz86xlf1m8icij8ss3j7-gss-1.0.3" "/gnu/store/paps5r9hcpszhv8hc3n0s2m2i4a2378i-ed-1.14.2" "/gnu/store/pd3nggfvrq50nh419an2ahay69mzrvck-libjpeg-9b" "/gnu/store/plsr1pfxj7n9aamxl9j5f6bv2mwlbkrs-shishi-1.0.2" "/gnu/store/qc4avwlbwyprz6gq9fcqwp043r8063f6-libltdl-2.4.6" "/gnu/store/qh1fri7qppqi8bhyzbiw7h8knmk4cb3q-libltdl-2.4.6" "/gnu/store/qhx7dmnqflkmykg50cm8s243bg1gq8if-libxt-1.1.5" "/gnu/store/qk79ck8gy1zppi4mbw4zw2y4z326wa4i-ld-wrapper-0" "/gnu/store/qzz2mg9500x6srp6ivscb401xinajn9y-gzip-1.8" "/gnu/store/r362f8p4y0xj7sm2jfqysry086lxy91v-zlib-1.2.11" "/gnu/store/r7sf4w2wwrbxbcf04pi9a5gkdhzaya2g-module-import-compiled" "/gnu/store/ryqd73alrlq5djsr18xjjihi735592im-pkg-config-0.29.2" "/gnu/store/scs7siybrjl5bb7sxqaskysf8n1ld718-gmp-6.1.2" "/gnu/store/sfx1wh27i6gsrk21p87rdyikc64v7d51-zlib-1.2.11" "/gnu/store/sngyhm974sbmljknwb1xrni1ggzhpm4d-grep-3.0" "/gnu/store/vais0pchk05ihl7kqj7rq8zf8p4cjdha-libice-1.0.9" "/gnu/store/w150ql3qy0di4dnp4c95hpaw6m1aafwc-pkg-config-0.29.2" "/gnu/store/w31zw2chff41x6q6kpa2wrkgx8agr0an-libidn-1.33" "/gnu/store/w620fzvfhq4qzpclaijd5fdqi2zaxify-curl-7.55.1" "/gnu/store/w7p84w2drhdy19j8dyv715i574lj40s9-readline-7.0" "/gnu/store/w85rbll51r86mclkmp1bxa774b36jy1q-mit-krb5-1.15.1" "/gnu/store/w8kii3hjvmh50yxs52gkdywkq9jc7s19-pixman-0.34.0" "/gnu/store/wdlhrg370gm42s7ggyhnvnb4xrzpls1x-expat-2.2.1" "/gnu/store/wljjs4hyiqalf9a1gyc6xnpcvny7jy8c-gettext-minimal-0.19.8.1" "/gnu/store/x8cwg5bm9y2dk1mrhisr63b5q98mbhhz-guile-bytestructures-20170402.91d042e" "/gnu/store/x9xjvmaxz5jy72yqk7l36r5fd81zldy0-module-import" "/gnu/store/xhwmxry8kkmq7897558qmcmfsx8r1z45-module-import" "/gnu/store/xv8bp0zxbr9iphr38wy0ll4lzkbh9i87-libxau-1.0.8" "/gnu/store/y31sxrygd9ifpxra06bmlx8c52gbydd4-glibc-utf8-locales-2.25" "/gnu/store/yihvhxv3xyyvl1m2cy1lnf1lyi9h76fk-guile-2.2.2" "/gnu/store/yj761534yp7d4nyndr80y3kwd8bqw5wl-openldap-2.4.45" "/gnu/store/ynp950nlaj0xx39gf5a10fq7rnsx1672-libatomic-ops-7.4.4" "/gnu/store/yz1lf55ag0904w9ib0q2kcjpdx33y7wm-attr-2.4.47" "/gnu/store/yzlmd2nlcyjhx0ydbap7x32zjqxc3hz9-libcap-2.25" "/gnu/store/zbywrj6klakskj0sppq56viqh9l56jl0-util-linux-2.30.1" "/gnu/store/zhhdii9mjckb6c2f7abmdsx39khv6dla-tar-1.29" "/gnu/store/zhrajv6qf2hzn9c3g2bb07559hyrz5xp-bash-static-4.4.12" "/tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0" "/proc" "/dev/shm" "/dev/pts")
result: PASS

test-name: swapon, ENOENT/EPERM
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:63
source:
+ (test-assert
+   "swapon, ENOENT/EPERM"
+   (catch 'system-error
+          (lambda () (swapon "/does-not-exist") #f)
+          (lambda args
+            (memv (system-error-errno args)
+                  (list EPERM ENOENT)))))
actual-value: (1 2)
result: PASS

test-name: swapoff, ENOENT/EINVAL/EPERM
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:71
source:
+ (test-assert
+   "swapoff, ENOENT/EINVAL/EPERM"
+   (catch 'system-error
+          (lambda () (swapoff "/does-not-exist") #f)
+          (lambda args
+            (memv (system-error-errno args)
+                  (list EPERM EINVAL ENOENT)))))
actual-value: (1 22 2)
result: PASS

test-name: mkdtemp!
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:79
source:
+ (test-assert
+   "mkdtemp!"
+   (let* ((tmp (or (getenv "TMPDIR") "/tmp"))
+          (dir (mkdtemp!
+                 (string-append tmp "/guix-test-XXXXXX"))))
+     (and (file-exists? dir) (begin (rmdir dir) #t))))
actual-value: #t
result: PASS

test-name: statfs, ENOENT
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:87
source:
+ (test-equal
+   "statfs, ENOENT"
+   ENOENT
+   (catch 'system-error
+          (lambda () (statfs "/does-not-exist"))
+          (compose system-error-errno list)))
expected-value: 2
actual-value: 2
result: PASS

test-name: statfs
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:94
source:
+ (test-assert
+   "statfs"
+   (let ((fs (statfs "/")))
+     (and (file-system? fs)
+          (> (file-system-block-size fs) 0)
+          (>= (file-system-blocks-available fs) 0)
+          (>= (file-system-blocks-free fs)
+              (file-system-blocks-available fs)))))
actual-value: #t
result: PASS

test-name: clone
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:112
source:
+ (test-assert
+   "clone"
+   (match (clone (logior CLONE_NEWUSER SIGCHLD))
+          (0 (primitive-exit 42))
+          (pid (and (not (equal?
+                           (readlink (user-namespace pid))
+                           (readlink (user-namespace (getpid)))))
+                    (match (waitpid pid)
+                           ((_ . status) (= 42 (status:exit-val status))))))))
result: SKIP

test-name: setns
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:126
source:
+ (test-assert
+   "setns"
+   (match (clone (logior CLONE_NEWUSER SIGCHLD))
+          (0 (primitive-exit 0))
+          (clone-pid
+            (match (pipe)
+                   ((in . out)
+                    (match (primitive-fork)
+                           (0
+                            (close in)
+                            (call-with-input-file
+                              (user-namespace clone-pid)
+                              (lambda (port) (setns (port->fdes port) 0)))
+                            (write 'done out)
+                            (close out)
+                            (primitive-exit 0))
+                           (fork-pid
+                             (close out)
+                             (read in)
+                             (let ((result
+                                     (and (equal?
+                                            (readlink
+                                              (user-namespace clone-pid))
+                                            (readlink
+                                              (user-namespace fork-pid))))))
+                               (waitpid clone-pid)
+                               (waitpid fork-pid)
+                               result))))))))
result: SKIP

test-name: pivot-root
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:159
source:
+ (test-equal
+   "pivot-root"
+   #t
+   (match (pipe)
+          ((in . out)
+           (match (clone (logior CLONE_NEWUSER CLONE_NEWNS SIGCHLD))
+                  (0
+                   (dynamic-wind
+                     (const #t)
+                     (lambda ()
+                       (close in)
+                       (call-with-temporary-directory
+                         (lambda (root)
+                           (let ((put-old (string-append root "/real-root")))
+                             (mount "none" root "tmpfs")
+                             (mkdir put-old)
+                             (call-with-output-file
+                               (string-append root "/test")
+                               (lambda (port) (display "testing\n" port)))
+                             (pivot-root root put-old)
+                             (write (file-exists? "/test") out)
+                             (close out)))))
+                     (lambda () (primitive-exit 0))))
+                  (pid (close out)
+                       (let ((result (read in)))
+                         (close in)
+                         (and (zero? (match (waitpid pid)
+                                            ((_ . status)
+                                             (status:exit-val status))))
+                              (eq? #t result))))))))
result: SKIP

test-name: scandir*, ENOENT
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:192
source:
+ (test-equal
+   "scandir*, ENOENT"
+   ENOENT
+   (catch 'system-error
+          (lambda () (scandir* "/does/not/exist"))
+          (lambda args (system-error-errno args))))
expected-value: 2
actual-value: 2
result: PASS

test-name: scandir*, ASCII file names
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:200
source:
+ (test-equal
+   "scandir*, ASCII file names"
+   (scandir
+     (dirname
+       (search-path %load-path "guix/base32.scm"))
+     (const #t)
+     string<?)
+   (match (scandir*
+            (dirname
+              (search-path %load-path "guix/base32.scm")))
+          (((names . properties) ...) names)))
expected-value: ("." ".." "base16.go" "base16.scm" "base32.go" "base32.scm" "base64.go" "base64.scm" "build" "build-system" "build-system.go" "build-system.scm" "cache.go" "cache.scm" "combinators.go" "combinators.scm" "config.go" "config.scm" "config.scm.in" "cpio.go" "cpio.scm" "cve.go" "cve.scm" "cvs-download.go" "cvs-download.scm" "derivations.go" "derivations.scm" "discovery.go" "discovery.scm" "docker.go" "docker.scm" "download.go" "download.scm" "elf.go" "elf.scm" "ftp-client.go" "ftp-client.scm" "gcrypt.go" "gcrypt.scm" "gexp.go" "gexp.scm" "git-download.go" "git-download.scm" "git.go" "git.scm" "gnu-maintenance.go" "gnu-maintenance.scm" "gnupg.go" "gnupg.scm" "grafts.go" "grafts.scm" "graph.go" "graph.scm" "hash.go" "hash.scm" "hg-download.go" "hg-download.scm" "http-client.go" "http-client.scm" "i18n.go" "i18n.scm" "import" "licenses.go" "licenses.scm" "memoization.go" "memoization.scm" "modules.go" "modules.scm" "monad-repl.go" "monad-repl.scm" "monads.go" "monads.scm" "nar.go" "nar.scm" "packages.go" "packages.scm" "pk-crypto.go" "pk-crypto.scm" "pki.go" "pki.scm" "profiles.go" "profiles.scm" "progress.go" "progress.scm" "records.go" "records.scm" "scripts" "scripts.go" "scripts.scm" "search-paths.go" "search-paths.scm" "serialization.go" "serialization.scm" "sets.go" "sets.scm" "ssh.go" "ssh.scm" "store" "store.go" "store.scm" "svn-download.go" "svn-download.scm" "tests" "tests.go" "tests.scm" "ui.go" "ui.scm" "upstream.go" "upstream.scm" "utils.go" "utils.scm" "workers.go" "workers.scm" "zlib.go" "zlib.scm")
actual-value: ("." ".." "base16.go" "base16.scm" "base32.go" "base32.scm" "base64.go" "base64.scm" "build" "build-system" "build-system.go" "build-system.scm" "cache.go" "cache.scm" "combinators.go" "combinators.scm" "config.go" "config.scm" "config.scm.in" "cpio.go" "cpio.scm" "cve.go" "cve.scm" "cvs-download.go" "cvs-download.scm" "derivations.go" "derivations.scm" "discovery.go" "discovery.scm" "docker.go" "docker.scm" "download.go" "download.scm" "elf.go" "elf.scm" "ftp-client.go" "ftp-client.scm" "gcrypt.go" "gcrypt.scm" "gexp.go" "gexp.scm" "git-download.go" "git-download.scm" "git.go" "git.scm" "gnu-maintenance.go" "gnu-maintenance.scm" "gnupg.go" "gnupg.scm" "grafts.go" "grafts.scm" "graph.go" "graph.scm" "hash.go" "hash.scm" "hg-download.go" "hg-download.scm" "http-client.go" "http-client.scm" "i18n.go" "i18n.scm" "import" "licenses.go" "licenses.scm" "memoization.go" "memoization.scm" "modules.go" "modules.scm" "monad-repl.go" "monad-repl.scm" "monads.go" "monads.scm" "nar.go" "nar.scm" "packages.go" "packages.scm" "pk-crypto.go" "pk-crypto.scm" "pki.go" "pki.scm" "profiles.go" "profiles.scm" "progress.go" "progress.scm" "records.go" "records.scm" "scripts" "scripts.go" "scripts.scm" "search-paths.go" "search-paths.scm" "serialization.go" "serialization.scm" "sets.go" "sets.scm" "ssh.go" "ssh.scm" "store" "store.go" "store.scm" "svn-download.go" "svn-download.scm" "tests" "tests.go" "tests.scm" "ui.go" "ui.scm" "upstream.go" "upstream.scm" "utils.go" "utils.scm" "workers.go" "workers.scm" "zlib.go" "zlib.scm")
result: PASS

test-name: scandir*, UTF-8 file names
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:207
source:
+ (test-equal
+   "scandir*, UTF-8 file names"
+   '("." ".." "α" "λ")
+   (call-with-temporary-directory
+     (lambda (directory)
+       (let ((creat (pointer->procedure
+                      int
+                      (dynamic-func "creat" (dynamic-link))
+                      (list '* int))))
+         (creat (string->pointer
+                  (string-append directory "/α")
+                  "UTF-8")
+                420)
+         (creat (string->pointer
+                  (string-append directory "/λ")
+                  "UTF-8")
+                420)
+         (let ((locale (setlocale LC_ALL)))
+           (dynamic-wind
+             (lambda () (setlocale LC_ALL "C"))
+             (lambda ()
+               (match (scandir* directory)
+                      (((names . properties) ...) names)))
+             (lambda () (setlocale LC_ALL locale))))))))
expected-value: ("." ".." "α" "λ")
actual-value: ("." ".." "α" "λ")
result: PASS

test-name: scandir*, properties
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:234
source:
+ (test-assert
+   "scandir*, properties"
+   (let ((directory
+           (dirname
+             (search-path %load-path "guix/base32.scm"))))
+     (every (lambda (entry name)
+              (match entry
+                     ((name2 . properties)
+                      (and (string=? name2 name)
+                           (let* ((full (string-append directory "/" name))
+                                  (stat (lstat full))
+                                  (inode (assoc-ref properties 'inode))
+                                  (type (assoc-ref properties 'type)))
+                             (and (= inode (stat:ino stat))
+                                  (or (eq? type 'unknown)
+                                      (eq? type (stat:type stat)))))))))
+            (scandir* directory)
+            (scandir directory (const #t) string<?))))
actual-value: #t
result: PASS

test-name: fcntl-flock wait
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:251
source:
+ (test-equal
+   "fcntl-flock wait"
+   42
+   (let ((file (open-file temp-file "w0b")))
+     (fcntl-flock file 'write-lock)
+     (match (primitive-fork)
+            (0
+             (dynamic-wind
+               (const #t)
+               (lambda ()
+                 (let ((file (open-file temp-file "r0b")))
+                   (fcntl-flock file 'read-lock)
+                   (primitive-exit (read file)))
+                 (primitive-exit 1))
+               (lambda () (primitive-exit 2))))
+            (pid (display "hello, world!" file)
+                 (force-output file)
+                 (sleep 1)
+                 (seek file 0 SEEK_SET)
+                 (truncate-file file 0)
+                 (write 42 file)
+                 (force-output file)
+                 (fcntl-flock file 'unlock)
+                 (match (waitpid pid)
+                        ((_ . status)
+                         (let ((result (status:exit-val status)))
+                           (close-port file)
+                           result)))))))
+                   (fcntl-flock file 'read-lock)
+                   (primitive-exit (read file)))
+                 (primitive-exit 1))
+               (lambda () (primitive-exit 2))))
+            (pid (display "hello, world!" file)
+                 (force-output file)
+                 (sleep 1)
+                 (seek file 0 SEEK_SET)
+                 (truncate-file file 0)
+                 (write 42 file)
+                 (force-output file)
+                 (fcntl-flock file 'unlock)
+                 (match (waitpid pid)
+                        ((_ . status)
+                         (let ((result (status:exit-val status)))
+                           (close-port file)
+                           result)))))))
expected-value: 42
actual-value: 42
result: PASS

test-name: fcntl-flock non-blocking
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:290
source:
+ (test-equal
+   "fcntl-flock non-blocking"
+   EAGAIN
+   (match (pipe)
+          ((input . output)
+           (match (primitive-fork)
+                  (0
+                   (dynamic-wind
+                     (const #t)
+                     (lambda ()
+                       (close-port output)
+                       (read-char input)
+                       (let ((file (open-file temp-file "w0")))
+                         (catch 'flock-error
+                                (lambda ()
+                                  (fcntl-flock file 'write-lock #:wait? #f))
+                                (lambda (key errno)
+                                  (primitive-exit (pk 'errno errno)))))
+                       (primitive-exit -1))
+                     (lambda () (primitive-exit -2))))
+                  (pid (close-port input)
+                       (let ((file (open-file temp-file "w0")))
+                         (fcntl-flock file 'write-lock)
+                         (write 'green-light output)
+                         (force-output output)
+                         (match (waitpid pid)
+                                ((_ . status)
+                                 (let ((result (status:exit-val status)))
+                                   (fcntl-flock file 'unlock)
+                                   (close-port file)
+                                   result)))))))))

;;; (errno 11)
+                   (fcntl-flock file 'read-lock)
+                   (primitive-exit (read file)))
+                 (primitive-exit 1))
+               (lambda () (primitive-exit 2))))
+            (pid (display "hello, world!" file)
+                 (force-output file)
+                 (sleep 1)
+                 (seek file 0 SEEK_SET)
+                 (truncate-file file 0)
+                 (write 42 file)
+                 (force-output file)
+                 (fcntl-flock file 'unlock)
+                 (match (waitpid pid)
+                        ((_ . status)
+                         (let ((result (status:exit-val status)))
+                           (close-port file)
+                           result)))))))
expected-value: 42
actual-value: 42
result: PASS

test-name: fcntl-flock non-blocking
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:290
source:
+ (test-equal
+   "fcntl-flock non-blocking"
+   EAGAIN
+   (match (pipe)
+          ((input . output)
+           (match (primitive-fork)
+                  (0
+                   (dynamic-wind
+                     (const #t)
+                     (lambda ()
+                       (close-port output)
+                       (read-char input)
+                       (let ((file (open-file temp-file "w0")))
+                         (catch 'flock-error
+                                (lambda ()
+                                  (fcntl-flock file 'write-lock #:wait? #f))
+                                (lambda (key errno)
+                                  (primitive-exit (pk 'errno errno)))))
+                       (primitive-exit -1))
+                     (lambda () (primitive-exit -2))))
+                  (pid (close-port input)
+                       (let ((file (open-file temp-file "w0")))
+                         (fcntl-flock file 'write-lock)
+                         (write 'green-light output)
+                         (force-output output)
+                         (match (waitpid pid)
+                                ((_ . status)
+                                 (let ((result (status:exit-val status)))
+                                   (fcntl-flock file 'unlock)
+                                   (close-port file)
+                                   result)))))))))
expected-value: 11
actual-value: 11
result: PASS

test-name: set-thread-name
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:332
source:
+ (test-equal
+   "set-thread-name"
+   "Syscall Test"
+   (let ((name (thread-name)))
+     (set-thread-name "Syscall Test")
+     (let ((new-name (thread-name)))
+       (set-thread-name name)
+       new-name)))
expected-value: "Syscall Test"
actual-value: "Syscall Test"
result: PASS

test-name: all-network-interface-names
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:340
source:
+ (test-assert
+   "all-network-interface-names"
+   (match (all-network-interface-names)
+          (((? string? names) ..1) (member "lo" names))))
actual-value: ("lo")
result: PASS

test-name: network-interface-names
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:345
source:
+ (test-assert
+   "network-interface-names"
+   (match (network-interface-names)
+          (((? string? names) ..1)
+           (lset<=
+             string=?
+             names
+             (all-network-interface-names)))))
actual-value: #t
result: PASS

test-name: network-interface-flags
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:350
source:
+ (test-assert
+   "network-interface-flags"
+   (let* ((sock (socket AF_INET SOCK_STREAM 0))
+          (flags (network-interface-flags sock "lo")))
+     (close-port sock)
+     (and (not (zero? (logand flags IFF_LOOPBACK)))
+          (not (zero? (logand flags IFF_UP))))))
actual-value: #t
result: PASS

test-name: loopback-network-interface?
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:357
source:
+ (test-equal
+   "loopback-network-interface?"
+   ENODEV
+   (and (loopback-network-interface? "lo")
+        (catch 'system-error
+               (lambda ()
+                 (loopback-network-interface? "nonexistent")
+                 #f)
+               (lambda args (system-error-errno args)))))
expected-value: 19
actual-value: 19
result: PASS

test-name: loopback-network-interface-running?
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:367
source:
+ (test-equal
+   "loopback-network-interface-running?"
+   ENODEV
+   (and (network-interface-running? "lo")
+        (catch 'system-error
+               (lambda ()
+                 (network-interface-running? "nonexistent")
+                 #f)
+               (lambda args (system-error-errno args)))))
expected-value: 19
actual-value: 19
result: PASS

test-name: set-network-interface-flags
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:378
source:
+ (test-assert
+   "set-network-interface-flags"
+   (let ((sock (socket AF_INET SOCK_STREAM 0)))
+     (catch 'system-error
+            (lambda ()
+              (set-network-interface-flags sock "lo" IFF_UP))
+            (lambda args
+              (close-port sock)
+              (memv (system-error-errno args)
+                    (list EPERM EACCES))))))
actual-value: (1 13)
result: PASS

test-name: network-interface-address lo
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:388
source:
+ (test-equal
+   "network-interface-address lo"
+   (make-socket-address
+     AF_INET
+     (inet-pton AF_INET "127.0.0.1")
+     0)
+   (let* ((sock (socket AF_INET SOCK_STREAM 0))
+          (addr (network-interface-address sock "lo")))
+     (close-port sock)
+     addr))
expected-value: #(2 2130706433 0)
actual-value: #(2 2130706433 0)
result: PASS

test-name: set-network-interface-address
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:396
source:
+ (test-assert
+   "set-network-interface-address"
+   (let ((sock (socket AF_INET SOCK_STREAM 0)))
+     (catch 'system-error
+            (lambda ()
+              (set-network-interface-address
+                sock
+                "nonexistent"
+                (make-socket-address
+                  AF_INET
+                  (inet-pton AF_INET "127.12.14.15")
+                  0)))
+            (lambda args
+              (close-port sock)
+              (memv (system-error-errno args)
+                    (list EPERM EACCES))))))
actual-value: (1 13)
result: PASS

test-name: network-interface-netmask lo
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:410
source:
+ (test-equal
+   "network-interface-netmask lo"
+   (make-socket-address
+     AF_INET
+     (inet-pton AF_INET "255.0.0.0")
+     0)
+   (let* ((sock (socket AF_INET SOCK_STREAM 0))
+          (addr (network-interface-netmask sock "lo")))
+     (close-port sock)
+     addr))
expected-value: #(2 4278190080 0)
actual-value: #(2 4278190080 0)
result: PASS

test-name: set-network-interface-netmask
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:418
source:
+ (test-assert
+   "set-network-interface-netmask"
+   (let ((sock (socket AF_INET SOCK_STREAM 0)))
+     (catch 'system-error
+            (lambda ()
+              (set-network-interface-netmask
+                sock
+                "nonexistent"
+                (make-socket-address
+                  AF_INET
+                  (inet-pton AF_INET "255.0.0.0")
+                  0)))
+            (lambda args
+              (close-port sock)
+              (memv (system-error-errno args)
+                    (list EPERM EACCES))))))
actual-value: (1 13)
result: PASS

test-name: network-interfaces returns one or more interfaces
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:431
source:
+ (test-equal
+   "network-interfaces returns one or more interfaces"
+   '(#t #t #t)
+   (match (network-interfaces)
+          ((interfaces ..1)
+           (list (every interface? interfaces)
+                 (every string? (map interface-name interfaces))
+                 (every (lambda (sockaddr)
+                          (or (vector? sockaddr) (not sockaddr)))
+                        (map interface-address interfaces))))))
expected-value: (#t #t #t)
actual-value: (#t #t #t)
result: PASS

test-name: network-interfaces returns "lo"
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:443
source:
+ (test-equal
+   "network-interfaces returns \"lo\""
+   (list #t
+         (make-socket-address
+           AF_INET
+           (inet-pton AF_INET "127.0.0.1")
+           0))
+   (match (filter
+            (lambda (interface)
+              (string=? "lo" (interface-name interface)))
+            (network-interfaces))
+          ((loopbacks ..1)
+           (list (every (lambda (lo)
+                          (not (zero? (logand
+                                        IFF_LOOPBACK
+                                        (interface-flags lo)))))
+                        loopbacks)
+                 (match (find (lambda (lo)
+                                (= AF_INET
+                                   (sockaddr:fam (interface-address lo))))
+                              loopbacks)
+                        (#f #f)
+                        (lo (interface-address lo)))))))
expected-value: (#t #(2 2130706433 0))
actual-value: (#t #(2 2130706433 0))
result: PASS

test-name: add-network-route/gateway
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:459
source:
+ (test-assert
+   "add-network-route/gateway"
+   (let ((sock (socket AF_INET SOCK_STREAM 0))
+         (gateway
+           (make-socket-address
+             AF_INET
+             (inet-pton AF_INET "192.168.0.1")
+             0)))
+     (catch 'system-error
+            (lambda ()
+              (add-network-route/gateway sock gateway))
+            (lambda args
+              (close-port sock)
+              (memv (system-error-errno args)
+                    (list EPERM EACCES))))))
actual-value: (1 13)
result: PASS

test-name: delete-network-route
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:472
source:
+ (test-assert
+   "delete-network-route"
+   (let ((sock (socket AF_INET SOCK_STREAM 0))
+         (destination
+           (make-socket-address AF_INET INADDR_ANY 0)))
+     (catch 'system-error
+            (lambda ()
+              (delete-network-route sock destination))
+            (lambda args
+              (close-port sock)
+              (memv (system-error-errno args)
+                    (list EPERM EACCES))))))
actual-value: (1 13)
result: PASS

test-name: tcgetattr ENOTTY
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:482
source:
+ (test-equal
+   "tcgetattr ENOTTY"
+   ENOTTY
+   (catch 'system-error
+          (lambda ()
+            (call-with-input-file
+              "/dev/null"
+              (lambda (port) (tcgetattr (fileno port)))))
+          (compose system-error-errno list)))
expected-value: 25
actual-value: 25
result: PASS

test-name: tcgetattr
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:496
source:
+ (test-assert
+   "tcgetattr"
+   (let ((termios (tcgetattr 0)))
+     (and (termios? termios)
+          (> (termios-input-speed termios) 0)
+          (> (termios-output-speed termios) 0))))
result: SKIP

test-name: tcsetattr
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:502
source:
+ (test-assert
+   "tcsetattr"
+   (let ((first (tcgetattr 0)))
+     (tcsetattr 0 (tcsetattr-action TCSANOW) first)
+     (equal? first (tcgetattr 0))))
result: SKIP

test-name: terminal-window-size ENOTTY
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:507
source:
+ (test-assert
+   "terminal-window-size ENOTTY"
+   (call-with-input-file
+     "/dev/null"
+     (lambda (port)
+       (catch 'system-error
+              (lambda () (terminal-window-size port))
+              (lambda args
+                (memv (system-error-errno args)
+                      (list ENOTTY EINVAL)))))))
actual-value: (25 22)
result: PASS

test-name: terminal-columns
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:518
source:
+ (test-assert
+   "terminal-columns"
+   (> (terminal-columns) 0))
actual-value: #t
result: PASS

test-name: terminal-columns non-file port
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:521
source:
+ (test-assert
+   "terminal-columns non-file port"
+   (> (terminal-columns
+        (open-input-string
+          "Join us now, share the software!"))
+      0))
actual-value: #t
result: PASS

test-name: utmpx-entries
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:525
source:
+ (test-assert
+   "utmpx-entries"
+   (match (utmpx-entries)
+          (((? utmpx? entries) ...)
+           (every (lambda (entry)
+                    (match (utmpx-user entry)
+                           ((? string?)
+                            (or (eqv? (login-type BOOT_TIME)
+                                      (utmpx-login-type entry))
+                                (> (utmpx-pid entry) 0)))
+                           (#f #t)))
+                  entries))))
actual-value: #t
result: PASS

test-name: read-utmpx, EOF
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:537
source:
+ (test-assert
+   "read-utmpx, EOF"
+   (eof-object? (read-utmpx (%make-void-port "r"))))
actual-value: #t
result: PASS

test-name: read-utmpx
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/syscalls.scm:542
source:
+ (test-assert
+   "read-utmpx"
+   (let ((result
+           (call-with-input-file
+             "/var/run/utmpx"
+             read-utmpx)))
+     (or (utmpx? result) (eof-object? result))))
result: SKIP


SKIP: tests/gremlin
===================

test-name: elf-dynamic-info-needed, executable
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/gremlin.scm:44
source:
+ (test-assert
+   "elf-dynamic-info-needed, executable"
+   (let* ((elf (call-with-input-file %guile-executable read-elf))
+          (dyninfo (elf-dynamic-info elf)))
+     (or (not dyninfo)
+         (lset<=
+           string=?
+           (list (string-append "libguile-" (effective-version))
+                 "libgc"
+                 "libunistring"
+                 "libffi")
+           (map (lambda (lib)
+                  (string-take lib (string-contains lib ".so")))
+                (elf-dynamic-info-needed dyninfo))))))
result: SKIP

test-name: expand-origin
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/gremlin.scm:55
source:
+ (test-equal
+   "expand-origin"
+   '("OOO/../lib"
+     "OOO"
+     "../OOO/bar/OOO/baz"
+     "ORIGIN/foo")
+   (map (cut expand-origin <> "OOO")
+        '("$ORIGIN/../lib"
+          "${ORIGIN}"
+          "../${ORIGIN}/bar/$ORIGIN/baz"
+          "ORIGIN/foo")))
expected-value: ("OOO/../lib" "OOO" "../OOO/bar/OOO/baz" "ORIGIN/foo")
actual-value: ("OOO/../lib" "OOO" "../OOO/bar/OOO/baz" "ORIGIN/foo")
result: PASS


SKIP: tests/containers
======================

test-name: call-with-container, exit with 0 when there is no error
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/containers.scm:42
source:
+ (test-assert
+   "call-with-container, exit with 0 when there is no error"
+   (zero? (call-with-container
+            '()
+            (const #t)
+            #:namespaces
+            '(user))))
result: SKIP

test-name: call-with-container, user namespace
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/containers.scm:48
source:
+ (test-assert
+   "call-with-container, user namespace"
+   (zero? (call-with-container
+            '()
+            (lambda ()
+              (assert-exit
+                (and (zero? (getuid)) (zero? (getgid)))))
+            #:namespaces
+            '(user))))
result: SKIP

test-name: call-with-container, uts namespace
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/containers.scm:58
source:
+ (test-assert
+   "call-with-container, uts namespace"
+   (zero? (call-with-container
+            '()
+            (lambda ()
+              (sethostname "test-container")
+              (primitive-exit 0))
+            #:namespaces
+            '(user uts))))
result: SKIP

test-name: call-with-container, pid namespace
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/containers.scm:70
source:
+ (test-assert
+   "call-with-container, pid namespace"
+   (zero? (call-with-container
+            '()
+            (lambda ()
+              (match (primitive-fork)
+                     (0 (assert-exit (= 2 (getpid))))
+                     (pid (primitive-exit
+                            (match (waitpid pid)
+                                   ((_ . status)
+                                    (status:exit-val status)))))))
+            #:namespaces
+            '(user pid))))
result: SKIP

test-name: call-with-container, mnt namespace
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/containers.scm:87
source:
+ (test-assert
+   "call-with-container, mnt namespace"
+   (zero? (call-with-container
+            (list (file-system
+                    (device "none")
+                    (mount-point "/testing")
+                    (type "tmpfs")
+                    (check? #f)))
+            (lambda ()
+              (assert-exit (file-exists? "/testing")))
+            #:namespaces
+            '(user mnt))))
result: SKIP

test-name: call-with-container, mnt namespace, wrong bind mount
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/containers.scm:100
source:
+ (test-equal
+   "call-with-container, mnt namespace, wrong bind mount"
+   `(system-error ,ENOENT)
+   (catch 'system-error
+          (lambda ()
+            (call-with-container
+              (list (file-system
+                      (device "/does-not-exist")
+                      (mount-point "/foo")
+                      (type "none")
+                      (flags '(bind-mount))
+                      (check? #f)))
+              (const #t)
+              #:namespaces
+              '(user mnt)))
+          (lambda args
+            (list 'system-error (system-error-errno args)))))
result: SKIP

test-name: call-with-container, all namespaces
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/containers.scm:118
source:
+ (test-assert
+   "call-with-container, all namespaces"
+   (zero? (call-with-container
+            '()
+            (lambda () (primitive-exit 0)))))
result: SKIP

test-name: container-excursion
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/containers.scm:126
source:
+ (test-assert
+   "container-excursion"
+   (call-with-temporary-directory
+     (lambda (root)
+       (match (list (pipe) (pipe))
+              (((start-in . start-out) (end-in . end-out))
+               (define (container)
+                 (close end-out)
+                 (close start-in)
+                 (write 'ready start-out)
+                 (close start-out)
+                 (read end-in)
+                 (close end-in))
+               (define (namespaces pid)
+                 (let ((pid (number->string pid)))
+                   (map (lambda (ns)
+                          (readlink (string-append "/proc/" pid "/ns/" ns)))
+                        '("user" "ipc" "uts" "net" "pid" "mnt"))))
+               (let* ((pid (run-container root '() %namespaces 1 container))
+                      (container-namespaces (namespaces pid))
+                      (result
+                        (begin
+                          (close start-out)
+                          (read start-in)
+                          (close start-in)
+                          (container-excursion
+                            pid
+                            (lambda ()
+                              (match (primitive-fork)
+                                     (0
+                                      (assert-exit
+                                        (equal?
+                                          container-namespaces
+                                          (namespaces (getpid)))))
+                                     (fork-pid
+                                       (match (waitpid fork-pid)
+                                              ((_ . status)
+                                               (primitive-exit
+                                                 (status:exit-val
+                                                   status)))))))))))
+                 (close end-in)
+                 (write 'done end-out)
+                 (close end-out)
+                 (waitpid pid)
+                 (zero? result)))))))
result: SKIP

test-name: container-excursion, same namespaces
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/containers.scm:184
source:
+ (test-equal
+   "container-excursion, same namespaces"
+   42
+   (container-excursion
+     (getpid)
+     (lambda () (primitive-exit 42))))
result: SKIP

test-name: container-excursion*
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/containers.scm:194
source:
+ (test-assert
+   "container-excursion*"
+   (call-with-temporary-directory
+     (lambda (root)
+       (define (namespaces pid)
+         (let ((pid (number->string pid)))
+           (map (lambda (ns)
+                  (readlink (string-append "/proc/" pid "/ns/" ns)))
+                '("user" "ipc" "uts" "net" "pid" "mnt"))))
+       (let* ((pid (run-container
+                     root
+                     '()
+                     %namespaces
+                     1
+                     (lambda () (sleep 100))))
+              (expected (namespaces pid))
+              (result
+                (container-excursion*
+                  pid
+                  (lambda () (namespaces 1)))))
+         (kill pid SIGKILL)
+         (equal? result expected)))))
result: SKIP

test-name: container-excursion*, same namespaces
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/containers.scm:216
source:
+ (test-equal
+   "container-excursion*, same namespaces"
+   42
+   (container-excursion*
+     (getpid)
+     (lambda () (* 6 7))))
result: SKIP


SKIP: tests/pack
================

random seed for tests: 1511181091
test-name: self-contained-tarball
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/pack.scm:54
source:
+ (test-assert
+   "self-contained-tarball"
+   (run-with-store
+     %store
+     (mlet* %store-monad
+            ((profile
+               (profile-derivation
+                 (packages->manifest (list %bootstrap-guile))
+                 #:hooks
+                 '()
+                 #:locales?
+                 #f))
+             (tarball
+               (self-contained-tarball
+                 "pack"
+                 profile
+                 #:symlinks
+                 '(("/bin/Guile" -> "bin/guile"))
+                 #:compressor
+                 %gzip-compressor
+                 #:tar
+                 %tar-bootstrap))
+             (check (gexp->derivation
+                      "check-tarball"
+                      (gexp (let ((guile (string-append
+                                           "."
+                                           (ungexp profile)
+                                           "/bin")))
+                              (setenv
+                                "PATH"
+                                (string-append
+                                  (ungexp %tar-bootstrap)
+                                  "/bin"))
+                              (system* "tar" "xvf" (ungexp tarball))
+                              (mkdir (ungexp output))
+                              (exit (and (file-exists?
+                                           (string-append guile "/guile"))
+                                         (string=?
+                                           (string-append
+                                             (ungexp %bootstrap-guile)
+                                             "/bin")
+                                           (readlink guile))
+                                         (string=?
+                                           (string-append
+                                             (string-drop guile 1)
+                                             "/guile")
+                                           (readlink "bin/Guile")))))))))
+            (built-derivations (list check)))
+     #:guile-for-build
+     (%guile-for-build)))
result: SKIP


SKIP: tests/pypi
================

foo-1.0.0/
foo-1.0.0/requirements.txt
test-name: guix-package->pypi-name, old URL style
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/pypi.scm:78
source:
+ (test-equal
+   "guix-package->pypi-name, old URL style"
+   "psutil"
+   (guix-package->pypi-name
+     (dummy-package
+       "foo"
+       (source
+         (dummy-origin
+           (uri "https://pypi.io/packages/source/p/psutil/psutil-4.3.0.tar.gz"))))))
expected-value: "psutil"
actual-value: "psutil"
result: PASS

test-name: guix-package->pypi-name, new URL style
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/pypi.scm:86
source:
+ (test-equal
+   "guix-package->pypi-name, new URL style"
+   "certbot"
+   (guix-package->pypi-name
+     (dummy-package
+       "foo"
+       (source
+         (dummy-origin
+           (uri "https://pypi.python.org/packages/a2/3b/4756e6a0ceb14e084042a2a65c615d68d25621c6fd446d0fc10d14c4ce7d/certbot-0.8.1.tar.gz"))))))
expected-value: "certbot"
actual-value: "certbot"
result: PASS

test-name: guix-package->pypi-name, several URLs
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/pypi.scm:94
source:
+ (test-equal
+   "guix-package->pypi-name, several URLs"
+   "cram"
+   (guix-package->pypi-name
+     (dummy-package
+       "foo"
+       (source
+         (dummy-origin
+           (uri (list "https://bitheap.org/cram/cram-0.7.tar.gz"
+                      (pypi-uri "cram" "0.7"))))))))
expected-value: "cram"
actual-value: "cram"
result: PASS

test-name: pypi->guix-package
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/pypi.scm:103
source:
+ (test-assert
+   "pypi->guix-package"
+   (mock ((guix import utils)
+          url-fetch
+          (lambda (url file-name)
+            (match url
+                   ("https://example.com/foo-1.0.0.tar.gz"
+                    (begin
+                      (mkdir "foo-1.0.0")
+                      (with-output-to-file
+                        "foo-1.0.0/requirements.txt"
+                        (lambda () (display test-requirements)))
+                      (system* "tar" "czvf" file-name "foo-1.0.0/")
+                      (delete-file-recursively "foo-1.0.0")
+                      (set! test-source-hash
+                        (call-with-input-file file-name port-sha256))))
+                   ("https://example.com/foo-1.0.0-py2.py3-none-any.whl"
+                    #f)
+                   (_ (error "Unexpected URL: " url)))))
+         (mock ((guix http-client)
+                http-fetch
+                (lambda (url . rest)
+                  (match url
+                         ("https://pypi.python.org/pypi/foo/json"
+                          (values
+                            (open-input-string test-json)
+                            (string-length test-json)))
+                         ("https://example.com/foo-1.0.0-py2.py3-none-any.whl"
+                          #f)
+                         (_ (error "Unexpected URL: " url)))))
+               (match (pypi->guix-package "foo")
+                      (('package
+                        ('name "python-foo")
+                        ('version "1.0.0")
+                        ('source
+                         ('origin
+                          ('method 'url-fetch)
+                          ('uri ('pypi-uri "foo" 'version))
+                          ('sha256 ('base32 (? string? hash)))))
+                        ('build-system 'python-build-system)
+                        ('propagated-inputs
+                         ('quasiquote
+                          (("python-bar" ('unquote 'python-bar))
+                           ("python-baz" ('unquote 'python-baz)))))
+                        ('home-page "http://example.com")
+                        ('synopsis "summary")
+                        ('description "summary")
+                        ('license 'license:lgpl2.0))
+                       (string=?
+                         (bytevector->nix-base32-string test-source-hash)
+                         hash))
+                      (x (pk 'fail x #f))))))
actual-value: #t
result: random seed for tests: 1511181166
PASS

test-name: pypi->guix-package, wheels
location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/pypi.scm:154
source:
+ (test-assert
+   "pypi->guix-package, wheels"
+   (mock ((guix import utils)
+          url-fetch
+          (lambda (url file-name)
+            (match url
+                   ("https://example.com/foo-1.0.0.tar.gz"
+                    (begin
+                      (mkdir "foo-1.0.0")
+                      (with-output-to-file
+                        "foo-1.0.0/requirements.txt"
+                        (lambda () (display test-requirements)))
+                      (system* "tar" "czvf" file-name "foo-1.0.0/")
+                      (delete-file-recursively "foo-1.0.0")
+                      (set! test-source-hash
+                        (call-with-input-file file-name port-sha256))))
+                   ("https://example.com/foo-1.0.0-py2.py3-none-any.whl"
+                    (begin
+                      (mkdir "foo-1.0.0.dist-info")
+                      (with-output-to-file
+                        "foo-1.0.0.dist-info/metadata.json"
+                        (lambda () (display test-metadata)))
+                      (let ((zip-file (string-append file-name ".zip")))
+                        (system*
+                          "zip"
+                          zip-file
+                          "foo-1.0.0.dist-info/metadata.json")
+                        (rename-file zip-file file-name))
+                      (delete-file-recursively "foo-1.0.0.dist-info")))
+                   (_ (error "Unexpected URL: " url)))))
+         (mock ((guix http-client)
+                http-fetch
+                (lambda (url . rest)
+                  (match url
+                         ("https://pypi.python.org/pypi/foo/json"
+                          (values
+                            (open-input-string test-json)
+                            (string-length test-json)))
+                         ("https://example.com/foo-1.0.0-py2.py3-none-any.whl"
+                          #f)
+                         (_ (error "Unexpected URL: " url)))))
+               (match (pypi->guix-package "foo")
+                      (('package
+                        ('name "python-foo")
+                        ('version "1.0.0")
+                        ('source
+                         ('origin
+                          ('method 'url-fetch)
+                          ('uri ('pypi-uri "foo" 'version))
+                          ('sha256 ('base32 (? string? hash)))))
+                        ('build-system 'python-build-system)
+                        ('propagated-inputs
+                         ('quasiquote
+                          (("python-bar" ('unquote 'python-bar))
+                           ("python-baz" ('unquote 'python-baz)))))
+                        ('home-page "http://example.com")
+                        ('synopsis "summary")
+                        ('description "summary")
+                        ('license 'license:lgpl2.0))
+                       (string=?
+                         (bytevector->nix-base32-string test-source-hash)
+                         hash))
+                      (x (pk 'fail x #f))))))
result: SKIP


SKIP: tests/guix-package-net
============================

+ guix package --version
guix package (GNU Guix) 
Copyright (C) 2017 the Guix authors
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
+ guile -c '(getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)'
+ exit 77
./test-env: line 1: 18933 Terminated              "/tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/pre-inst-env" "/tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/guix-daemon" --disable-chroot --substitute-urls="$GUIX_BINARY_SUBSTITUTE_URL"
SKIP tests/guix-package-net.sh (exit status: 77)

SKIP: tests/guix-environment-container
======================================

+ set -e
+ exit 77
./test-env: line 1: 19891 Terminated              "/tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/pre-inst-env" "/tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/guix-daemon" --disable-chroot --substitute-urls="$GUIX_BINARY_SUBSTITUTE_URL"
SKIP tests/guix-environment-container.sh (exit status: 77)


^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#29363: Single test failure building Guix
  2017-11-20 10:08 bug#29363: Single test failure building Guix Rutger Helling
@ 2017-11-20 15:55 ` Ludovic Courtès
  2017-11-20 17:49   ` Rutger Helling
  2017-11-21  0:31 ` Marius Bakke
  1 sibling, 1 reply; 12+ messages in thread
From: Ludovic Courtès @ 2017-11-20 15:55 UTC (permalink / raw)
  To: Rutger Helling; +Cc: 29363

Hi Rutger,

Rutger Helling <rhelling@mykolab.com> skribis:

> test-name: dead path can be explicitly collected
> location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:178
> source:
> + (test-assert
> +   "dead path can be explicitly collected"
> +   (let ((p (add-text-to-store
> +              %store
> +              "random-text"
> +              (random-text)
> +              '())))
> +     (let-values
> +       (((paths freed) (delete-paths %store (list p))))
> +       (and (equal? paths (list p))
> +            (> freed 0)
> +            (not (file-exists? p))))))
> actual-value: #f
> result: FAIL

I didn’t experience this on my laptop.  Is it reproducible if you run
“guix build guix” a second time?

Thanks,
Ludo’.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#29363: Single test failure building Guix
  2017-11-20 15:55 ` Ludovic Courtès
@ 2017-11-20 17:49   ` Rutger Helling
  0 siblings, 0 replies; 12+ messages in thread
From: Rutger Helling @ 2017-11-20 17:49 UTC (permalink / raw)
  To: ludo

[-- Attachment #1: Type: text/plain, Size: 1084 bytes --]

Hi Ludo, 

it is indeed reproducible. No matter how many times it always keeps
failing on this one test. 

I've had this problem for a long time, which is a little bit annoying
since it means I have to wait until a substitute is available every
time. 

On 2017-11-20 16:55, ludo@gnu.org wrote:

> Hi Rutger,
> 
> Rutger Helling <rhelling@mykolab.com> skribis:
> 
>> test-name: dead path can be explicitly collected
>> location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:178
>> source:
>> + (test-assert
>> +   "dead path can be explicitly collected"
>> +   (let ((p (add-text-to-store
>> +              %store
>> +              "random-text"
>> +              (random-text)
>> +              '())))
>> +     (let-values
>> +       (((paths freed) (delete-paths %store (list p))))
>> +       (and (equal? paths (list p))
>> +            (> freed 0)
>> +            (not (file-exists? p))))))
>> actual-value: #f
>> result: FAIL
> 
> I didn't experience this on my laptop.  Is it reproducible if you run
> "guix build guix" a second time?
> 
> Thanks,
> Ludo'.

[-- Attachment #2: Type: text/html, Size: 2265 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#29363: Single test failure building Guix
  2017-11-20 10:08 bug#29363: Single test failure building Guix Rutger Helling
  2017-11-20 15:55 ` Ludovic Courtès
@ 2017-11-21  0:31 ` Marius Bakke
  2017-11-21  7:31   ` Rutger Helling
  2017-11-21  7:47   ` Ludovic Courtès
  1 sibling, 2 replies; 12+ messages in thread
From: Marius Bakke @ 2017-11-21  0:31 UTC (permalink / raw)
  To: Rutger Helling, 29363


[-- Attachment #1.1: Type: text/plain, Size: 1181 bytes --]

Hi Rutger,

Rutger Helling <rhelling@mykolab.com> writes:

> when building Guix with 'guix build guix' I keep running into a single 
> test failure. I've attached the test-suite.log.

Is this a Btrfs system by any chance, possibly on an SSD?

> test-name: dead path can be explicitly collected
> location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:178
> source:
> + (test-assert
> +   "dead path can be explicitly collected"
> +   (let ((p (add-text-to-store
> +              %store
> +              "random-text"
> +              (random-text)
> +              '())))
> +     (let-values
> +       (((paths freed) (delete-paths %store (list p))))
> +       (and (equal? paths (list p))
> +            (> freed 0)
> +            (not (file-exists? p))))))
> actual-value: #f
> result: FAIL

I can reproduce this error on two different systems that have
Btrfs+LUKS+SSD, and the problem is that freed == 0.

I suspect it's related to Btrfs' "lazy" reporting of disk space, but
haven't dug very far.

Until we figure out what's going on, I suggest applying the patch
below.  Can you confirm that it works on your system?


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: 0001-gnu-guix-Disable-test-that-fails-on-Btrfs.patch --]
[-- Type: text/x-patch, Size: 1993 bytes --]

From bdc7b5310111e21801529ea57e290f6eb72ac6ed Mon Sep 17 00:00:00 2001
From: Marius Bakke <mbakke@fastmail.com>
Date: Tue, 21 Nov 2017 00:27:08 +0100
Subject: [PATCH] gnu: guix: Disable test that fails on Btrfs.

Works around <https://bugs.gnu.org/29363>.
Reported by Rutger Helling <rhelling@mykolab.com>.

* gnu/packages/package-management.scm (guix)[arguments]: Rename
'disable-container-tests' phase to 'disable-failing-tests' and add substitution
to disable "dead path can be explicitly collected" test.
---
 gnu/packages/package-management.scm | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 4f1f7f577..3321ab1eb 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -169,8 +169,7 @@
                         (copy "armhf")
                         (copy "aarch64")
                         #t))
-                    (add-after
-                        'unpack 'disable-container-tests
+                    (add-after 'unpack 'disable-failing-tests
                       ;; XXX FIXME: These tests fail within the build container.
                       (lambda _
                         (substitute* "tests/syscalls.scm"
@@ -183,6 +182,11 @@
                           (substitute* "tests/guix-environment-container.sh"
                             (("guix environment --version")
                              "exit 77\n")))
+                        ;; XXX: This test may fail on some file systems.
+                        ;; See <https://bugs.gnu.org/29363>.
+                        (substitute* "tests/store.scm"
+                          (("^(.*dead path can be explicitly collected\")" all)
+                           (string-append "(test-skip 1)\n" all)))
                         #t))
                     (add-before 'check 'set-SHELL
                       (lambda _
-- 
2.15.0


[-- Attachment #1.3: Type: text/plain, Size: 13 bytes --]


Ludo, WDYT?

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* bug#29363: Single test failure building Guix
  2017-11-21  0:31 ` Marius Bakke
@ 2017-11-21  7:31   ` Rutger Helling
  2017-11-21  7:47   ` Ludovic Courtès
  1 sibling, 0 replies; 12+ messages in thread
From: Rutger Helling @ 2017-11-21  7:31 UTC (permalink / raw)
  To: Marius Bakke; +Cc: 29363

[-- Attachment #1: Type: text/plain, Size: 1352 bytes --]

Hi Marius, 

your patch did the trick, thanks! 

I'm indeed on Btrfs (with LUKS), no SSD though. 

On 2017-11-21 01:31, Marius Bakke wrote:

> Hi Rutger,
> 
> Rutger Helling <rhelling@mykolab.com> writes:
> 
>> when building Guix with 'guix build guix' I keep running into a single 
>> test failure. I've attached the test-suite.log.
> 
> Is this a Btrfs system by any chance, possibly on an SSD?
> 
>> test-name: dead path can be explicitly collected
>> location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:178
>> source:
>> + (test-assert
>> +   "dead path can be explicitly collected"
>> +   (let ((p (add-text-to-store
>> +              %store
>> +              "random-text"
>> +              (random-text)
>> +              '())))
>> +     (let-values
>> +       (((paths freed) (delete-paths %store (list p))))
>> +       (and (equal? paths (list p))
>> +            (> freed 0)
>> +            (not (file-exists? p))))))
>> actual-value: #f
>> result: FAIL
> 
> I can reproduce this error on two different systems that have
> Btrfs+LUKS+SSD, and the problem is that freed == 0.
> 
> I suspect it's related to Btrfs' "lazy" reporting of disk space, but
> haven't dug very far.
> 
> Until we figure out what's going on, I suggest applying the patch
> below.  Can you confirm that it works on your system?
> 
> Ludo, WDYT?

[-- Attachment #2: Type: text/html, Size: 2759 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#29363: Single test failure building Guix
  2017-11-21  0:31 ` Marius Bakke
  2017-11-21  7:31   ` Rutger Helling
@ 2017-11-21  7:47   ` Ludovic Courtès
  2017-11-21  9:10     ` Rutger Helling
  2017-11-21 21:39     ` Marius Bakke
  1 sibling, 2 replies; 12+ messages in thread
From: Ludovic Courtès @ 2017-11-21  7:47 UTC (permalink / raw)
  To: Marius Bakke; +Cc: 29363, Rutger Helling

Hello,

Marius Bakke <mbakke@fastmail.com> skribis:

> Rutger Helling <rhelling@mykolab.com> writes:
>
>> when building Guix with 'guix build guix' I keep running into a single 
>> test failure. I've attached the test-suite.log.
>
> Is this a Btrfs system by any chance, possibly on an SSD?
>
>> test-name: dead path can be explicitly collected
>> location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:178
>> source:
>> + (test-assert
>> +   "dead path can be explicitly collected"
>> +   (let ((p (add-text-to-store
>> +              %store
>> +              "random-text"
>> +              (random-text)
>> +              '())))
>> +     (let-values
>> +       (((paths freed) (delete-paths %store (list p))))
>> +       (and (equal? paths (list p))
>> +            (> freed 0)
>> +            (not (file-exists? p))))))
>> actual-value: #f
>> result: FAIL
>
> I can reproduce this error on two different systems that have
> Btrfs+LUKS+SSD, and the problem is that freed == 0.

If you comment out (> freed 0), does the test pass?

> I suspect it's related to Btrfs' "lazy" reporting of disk space, but
> haven't dug very far.
>
> Until we figure out what's going on, I suggest applying the patch
> below.  Can you confirm that it works on your system?
>
> From bdc7b5310111e21801529ea57e290f6eb72ac6ed Mon Sep 17 00:00:00 2001
> From: Marius Bakke <mbakke@fastmail.com>
> Date: Tue, 21 Nov 2017 00:27:08 +0100
> Subject: [PATCH] gnu: guix: Disable test that fails on Btrfs.
>
> Works around <https://bugs.gnu.org/29363>.
> Reported by Rutger Helling <rhelling@mykolab.com>.
>
> * gnu/packages/package-management.scm (guix)[arguments]: Rename
> 'disable-container-tests' phase to 'disable-failing-tests' and add substitution
> to disable "dead path can be explicitly collected" test.

Alternately, we could comment out (> freed 0) if that’s enough, with a
comment explaining why, and do “make update-guix-package”.  That way
we’d avoid the extra build phase.

WDYT?

Thanks for finding out the root cause!

Ludo’.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#29363: Single test failure building Guix
  2017-11-21  7:47   ` Ludovic Courtès
@ 2017-11-21  9:10     ` Rutger Helling
  2017-11-21 12:53       ` Ludovic Courtès
  2017-11-21 21:39     ` Marius Bakke
  1 sibling, 1 reply; 12+ messages in thread
From: Rutger Helling @ 2017-11-21  9:10 UTC (permalink / raw)
  To: ludo; +Cc: 29363

[-- Attachment #1: Type: text/plain, Size: 2133 bytes --]

Commenting out that line still made the test fail for me. 

On 2017-11-21 08:47, ludo@gnu.org wrote:

> Hello,
> 
> Marius Bakke <mbakke@fastmail.com> skribis:
> 
> Rutger Helling <rhelling@mykolab.com> writes:
> 
> when building Guix with 'guix build guix' I keep running into a single 
> test failure. I've attached the test-suite.log. 
> Is this a Btrfs system by any chance, possibly on an SSD?
> 
> test-name: dead path can be explicitly collected
> location: /tmp/guix-build-guix-0.13.0-10.0b4c385.drv-0/source/tests/store.scm:178
> source:
> + (test-assert
> +   "dead path can be explicitly collected"
> +   (let ((p (add-text-to-store
> +              %store
> +              "random-text"
> +              (random-text)
> +              '())))
> +     (let-values
> +       (((paths freed) (delete-paths %store (list p))))
> +       (and (equal? paths (list p))
> +            (> freed 0)
> +            (not (file-exists? p))))))
> actual-value: #f
> result: FAIL 
> I can reproduce this error on two different systems that have
> Btrfs+LUKS+SSD, and the problem is that freed == 0.

If you comment out (> freed 0), does the test pass?

> I suspect it's related to Btrfs' "lazy" reporting of disk space, but
> haven't dug very far.
> 
> Until we figure out what's going on, I suggest applying the patch
> below.  Can you confirm that it works on your system?
> 
> From bdc7b5310111e21801529ea57e290f6eb72ac6ed Mon Sep 17 00:00:00 2001
> From: Marius Bakke <mbakke@fastmail.com>
> Date: Tue, 21 Nov 2017 00:27:08 +0100
> Subject: [PATCH] gnu: guix: Disable test that fails on Btrfs.
> 
> Works around <https://bugs.gnu.org/29363>.
> Reported by Rutger Helling <rhelling@mykolab.com>.
> 
> * gnu/packages/package-management.scm (guix)[arguments]: Rename
> 'disable-container-tests' phase to 'disable-failing-tests' and add substitution
> to disable "dead path can be explicitly collected" test.

Alternately, we could comment out (> freed 0) if that's enough, with a
comment explaining why, and do "make update-guix-package".  That way
we'd avoid the extra build phase.

WDYT?

Thanks for finding out the root cause!

Ludo'.

[-- Attachment #2: Type: text/html, Size: 4030 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#29363: Single test failure building Guix
  2017-11-21  9:10     ` Rutger Helling
@ 2017-11-21 12:53       ` Ludovic Courtès
  2017-11-21 14:50         ` Rutger Helling
  0 siblings, 1 reply; 12+ messages in thread
From: Ludovic Courtès @ 2017-11-21 12:53 UTC (permalink / raw)
  To: Rutger Helling; +Cc: 29363

Rutger Helling <rhelling@mykolab.com> skribis:

> Commenting out that line still made the test fail for me. 

Could you figure out which of the conditions in the ‘and’ is failing?

> +       (and (equal? paths (list p))
> +            (> freed 0)
> +            (not (file-exists? p))))))

TIA,
Ludo’.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#29363: Single test failure building Guix
  2017-11-21 12:53       ` Ludovic Courtès
@ 2017-11-21 14:50         ` Rutger Helling
  2017-11-21 21:11           ` Marius Bakke
  0 siblings, 1 reply; 12+ messages in thread
From: Rutger Helling @ 2017-11-21 14:50 UTC (permalink / raw)
  To: ludo; +Cc: 29363

[-- Attachment #1: Type: text/plain, Size: 542 bytes --]

I think commenting out (> freed 0) does work after all. When I ran 'guix
environment --pure guix' and 'make check TESTS=tests/store.scm' against
my git checkout the test passed. 

On 2017-11-21 13:53, ludo@gnu.org wrote:

> Rutger Helling <rhelling@mykolab.com> skribis:
> 
>> Commenting out that line still made the test fail for me.
> 
> Could you figure out which of the conditions in the 'and' is failing?
> 
>> +       (and (equal? paths (list p))
>> +            (> freed 0)
>> +            (not (file-exists? p))))))
> 
> TIA,
> Ludo'.

[-- Attachment #2: Type: text/html, Size: 1418 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#29363: Single test failure building Guix
  2017-11-21 14:50         ` Rutger Helling
@ 2017-11-21 21:11           ` Marius Bakke
  0 siblings, 0 replies; 12+ messages in thread
From: Marius Bakke @ 2017-11-21 21:11 UTC (permalink / raw)
  To: Rutger Helling, ludo; +Cc: 29363

[-- Attachment #1: Type: text/plain, Size: 358 bytes --]

Rutger Helling <rhelling@mykolab.com> writes:

> I think commenting out (> freed 0) does work after all. When I ran 'guix
> environment --pure guix' and 'make check TESTS=tests/store.scm' against
> my git checkout the test passed. 

Thanks for confirming.  I pushed a revised patch that only removes the
test for freed space as per Ludos suggestion.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#29363: Single test failure building Guix
  2017-11-21  7:47   ` Ludovic Courtès
  2017-11-21  9:10     ` Rutger Helling
@ 2017-11-21 21:39     ` Marius Bakke
  2017-11-22 15:55       ` Ludovic Courtès
  1 sibling, 1 reply; 12+ messages in thread
From: Marius Bakke @ 2017-11-21 21:39 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 29363, Rutger Helling

[-- Attachment #1: Type: text/plain, Size: 481 bytes --]

Ludovic Courtès <ludo@gnu.org> writes:
> Alternately, we could comment out (> freed 0) if that’s enough, with a
> comment explaining why, and do “make update-guix-package”.  That way
> we’d avoid the extra build phase.
>
> WDYT?

Oh, I just re-read this message and realized you mentioned doing this in
tests/store.scm rather than working around it in the "guix" package.

Sound good to me.  I will do this and remove the workaround.  Sorry for
the confusion.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#29363: Single test failure building Guix
  2017-11-21 21:39     ` Marius Bakke
@ 2017-11-22 15:55       ` Ludovic Courtès
  0 siblings, 0 replies; 12+ messages in thread
From: Ludovic Courtès @ 2017-11-22 15:55 UTC (permalink / raw)
  To: Marius Bakke; +Cc: 29363-done, Rutger Helling

Heya!

Marius Bakke <mbakke@fastmail.com> skribis:

> Ludovic Courtès <ludo@gnu.org> writes:
>> Alternately, we could comment out (> freed 0) if that’s enough, with a
>> comment explaining why, and do “make update-guix-package”.  That way
>> we’d avoid the extra build phase.
>>
>> WDYT?
>
> Oh, I just re-read this message and realized you mentioned doing this in
> tests/store.scm rather than working around it in the "guix" package.
>
> Sound good to me.  I will do this and remove the workaround.  Sorry for
> the confusion.

I see you’ve done this now, so I’m closing the bug.

Thank you gentlefolks!

Ludo’.

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2017-11-22 15:56 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-11-20 10:08 bug#29363: Single test failure building Guix Rutger Helling
2017-11-20 15:55 ` Ludovic Courtès
2017-11-20 17:49   ` Rutger Helling
2017-11-21  0:31 ` Marius Bakke
2017-11-21  7:31   ` Rutger Helling
2017-11-21  7:47   ` Ludovic Courtès
2017-11-21  9:10     ` Rutger Helling
2017-11-21 12:53       ` Ludovic Courtès
2017-11-21 14:50         ` Rutger Helling
2017-11-21 21:11           ` Marius Bakke
2017-11-21 21:39     ` Marius Bakke
2017-11-22 15:55       ` Ludovic Courtès

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.