From: "Jorge" <jorge+list@disroot.org>
To: 30250@debbugs.gnu.org
Subject: bug#30250: Two failures on ‘make -k "-j$(nproc)" check’
Date: Thu, 25 Jan 2018 13:15:38 +0000 [thread overview]
Message-ID: <f416cff33c08d56d49fe4930c229f782@disroot.org> (raw)
[-- Attachment #1: Type: text/plain, Size: 4681 bytes --]
See ‘test-suite.log’ attached. This was on Debian 9.3 (stretch) with some requirements installed from APT, plus the following packages compiled from source:
- guile-git from git (last commit was eaa5ed2 according to magit)
- scheme-bytestructures from git (tag v1.0.1)
- gnutls-3.5.17
- guile-2.2.3
In my Guix repository, magit informs tag v0.14.0 (1193).
I use ntlmaps (listening on localhost:5865) to mediate the corporate proxy for programs that do not integrate with Gnome's proxy configuration
The environment of make check:
TIME_STYLE=+%F %a %R:%S
LS_COLORS=
LC_MEASUREMENT=pt_BR.UTF-8
LC_PAPER=pt_BR.UTF-8
LC_MONETARY=pt_BR.UTF-8
XDG_MENU_PREFIX=gnome-
LANG=pt_BR.UTF-8
GDM_LANG=pt_BR.UTF-8
DISPLAY=:1
HISTTIMEFORMAT=[%F %a %T%z]
OLDPWD=/home/jorge/repos/guix/doc
EDITOR=emacsclient
USERNAME=jorge
INSIDE_EMACS=26.0.91,comint
XDG_VTNR=2
GIO_LAUNCHED_DESKTOP_FILE_PID=1828
SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
XDG_SESSION_ID=3
USER=jorge
PY_USER_BIN=/home/jorge/.local/bin
DESKTOP_SESSION=default
LC_COLLATE=en_US.UTF-8
GUIX_LOCPATH=/home/jorge/.guix-profile/lib/locale
QT_QPA_PLATFORMTHEME=qgnomeplatform
PWD=/home/jorge/repos/guix
HOME=/home/jorge
LC_CTYPE=en_US.UTF-8
JOURNAL_STREAM=9:19928
ALTERNATE_EDITOR=emacs
SSH_AGENT_PID=1320
NAME=Jorge Peixoto de Morais Neto
QT_ACCESSIBILITY=1
VERSION_CONTROL=numbered
XDG_SESSION_TYPE=x11
https_proxy=https://localhost:5865
XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop
http_proxy=http://localhost:5865
SMTPSERVER=smtp.dataprev.gov.br
XDG_SESSION_DESKTOP=default
EMAIL=jorge.demorais@dataprev.gov.br
GJS_DEBUG_OUTPUT=stderr
LC_NUMERIC=pt_BR.UTF-8
GTK_MODULES=gail:atk-bridge
COLUMNS=238
WINDOWPATH=2
ORGANIZATION=Dataprev
SHELL=/bin/bash
TERM=dumb
all_proxy=localhost:5865
LC_MESSAGES=en_US.UTF-8
XDG_CURRENT_DESKTOP=GNOME
GPG_AGENT_INFO=/run/user/1000/gnupg/S.gpg-agent:0:1
QT_LINUX_ACCESSIBILITY_ALWAYS_ON=1
GIO_LAUNCHED_DESKTOP_FILE=/usr/local/share/applications/emacs.desktop
SHLVL=1
XDG_SEAT=seat0
GDMSESSION=default
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
LOGNAME=jorge
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
XDG_RUNTIME_DIR=/run/user/1000
XAUTHORITY=/run/user/1000/gdm/Xauthority
GUILE_LOAD_PATH=/home/jorge/codigo_fonte/scheme-bytestructures
PATH=/home/jorge/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin
INFOPATH=/var/guix/profiles/per-user/root/guix-profile/share/info/:/usr/local/share/guile_info:/usr/local/share/gnutls_info:/var/guix/profiles/per-user/root/guix-profile/share/info/:/usr/local/share/guile_info:/usr/local/share/gnutls_info:/var/guix/profiles/per-user/root/guix-profile/share/info/:
GJS_DEBUG_TOPICS=JS ERROR;JS LOG
TERMCAP=
ftp_proxy=ftp://localhost:5865
SESSION_MANAGER=local/jorge-demorais:@/tmp/.ICE-unix/1264,unix/jorge-demorais:/tmp/.ICE-unix/1264
LC_TIME=pt_BR.UTF-8
_=/usr/bin/env
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 94
Model name: Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz
Stepping: 3
CPU MHz: 3679.343
CPU max MHz: 4000,0000
CPU min MHz: 800,0000
BogoMIPS: 6816.00
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 8192K
NUMA node0 CPU(s): 0-7
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp
Regards
- I am Brazilian. I hope my English is correct and I welcome feedback
- Please adopt free formats like PDF, ODF, Org, LaTeX, Opus, WebM and 7z
- Free (as in free speech) software for Android: https://f-droid.org/
[-- Attachment #2: test-suite.log --]
[-- Type: text/plain, Size: 139638 bytes --]
==================================================
GNU Guix 0.14.0.1193-4f34e: ./test-suite.log
==================================================
# TOTAL: 744
# PASS: 718
# SKIP: 24
# XFAIL: 0
# FAIL: 2
# XPASS: 0
# ERROR: 0
.. contents:: :depth: 2
SKIP: tests/base32
==================
sh: 1: nix-hash: not found
test-name: bytevector->base32-string
location: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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
FAIL: tests/derivations
=======================
test-name: parse & export
location: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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: #f
actual-error:
+ (srfi-34
+ #<condition &nix-protocol-error [message: "regular file expected" status: 1] 5577e11973c0>)
result: FAIL
test-name: add-to-store, recursive
location: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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: /home/jorge/repos/guix/tests/derivations.scm:142
source:
+ (test-assert
+ "derivation with local file as input"
+ (let* ((builder
+ (add-text-to-store
+ %store
+ "my-builder.sh"
+ "(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: /home/jorge/repos/guix/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))))
random seed for tests: 1516875879
@ build-started /home/jorge/repos/guix/test-tmp/store/4z975zy8ix6pay7wynbq5cvi83ihqz81-fails.drv - x86_64-linux /home/jorge/repos/guix/test-tmp/var/log/guix/drvs/4z//975zy8ix6pay7wynbq5cvi83ihqz81-fails.drv.bz2
builder for `/home/jorge/repos/guix/test-tmp/store/4z975zy8ix6pay7wynbq5cvi83ihqz81-fails.drv' failed with exit code 1
@ build-failed /home/jorge/repos/guix/test-tmp/store/4z975zy8ix6pay7wynbq5cvi83ihqz81-fails.drv - 1 builder for `/home/jorge/repos/guix/test-tmp/store/4z975zy8ix6pay7wynbq5cvi83ihqz81-fails.drv' failed with exit code 1
@ build-started /home/jorge/repos/guix/test-tmp/store/3qfxb66gv54z729zwg5qylc88rifq47d-guile-bootstrap-2.0.drv - x86_64-linux /home/jorge/repos/guix/test-tmp/var/log/guix/drvs/3q//fxb66gv54z729zwg5qylc88rifq47d-guile-bootstrap-2.0.drv.bz2
unpacking bootstrap Guile to '/home/jorge/repos/guix/test-tmp/store/k7fs7f6vxmpi91aqhdy4vxgfpyzfns7c-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 /home/jorge/repos/guix/test-tmp/store/3qfxb66gv54z729zwg5qylc88rifq47d-guile-bootstrap-2.0.drv -
@ build-started /home/jorge/repos/guix/test-tmp/store/mif4v2zc85ss1fhqlwlg0rwnsakkp2wg-sleep-then-succeed.drv - x86_64-linux /home/jorge/repos/guix/test-tmp/var/log/guix/drvs/mi//f4v2zc85ss1fhqlwlg0rwnsakkp2wg-sleep-then-succeed.drv.bz2
@ build-succeeded /home/jorge/repos/guix/test-tmp/store/mif4v2zc85ss1fhqlwlg0rwnsakkp2wg-sleep-then-succeed.drv -
actual-value: #t
result: PASS
test-name: identical files are deduplicated
location: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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: /home/jorge/repos/guix/tests/derivations.scm:218
source:
+ (test-assert
+ "unknown built-in builder"
+ (let ((drv (derivation
+ %store
+ "ohoh"
+ "builtin:does-not-exist"
+ '())))
+ (guard (c ((nix-protocol-error? c)
+ (string-contains
+ (nix-protocol-error-message c)
+ "failed")))
+ (build-derivations %store (list drv))
+ #f)))
@ build-started /home/jorge/repos/guix/test-tmp/store/4nzfdmnw9y5ssdb0zfbi8wy6flasr6l0-ohoh.drv - x86_64-linux /home/jorge/repos/guix/test-tmp/var/log/guix/drvs/4n//zfdmnw9y5ssdb0zfbi8wy6flasr6l0-ohoh.drv.bz2
error: unsupported builtin function 'does-not-exist'
builder for `/home/jorge/repos/guix/test-tmp/store/4nzfdmnw9y5ssdb0zfbi8wy6flasr6l0-ohoh.drv' failed with exit code 1
@ build-failed /home/jorge/repos/guix/test-tmp/store/4nzfdmnw9y5ssdb0zfbi8wy6flasr6l0-ohoh.drv - 1 builder for `/home/jorge/repos/guix/test-tmp/store/4nzfdmnw9y5ssdb0zfbi8wy6flasr6l0-ohoh.drv' failed with exit code 1
actual-value: 91
result: PASS
test-name: 'download' built-in builder
location: /home/jorge/repos/guix/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))))))
@ build-started /home/jorge/repos/guix/test-tmp/store/24ibbvll6jdr9ri6qp7z1vgcl4vjljwv-world.drv - x86_64-linux /home/jorge/repos/guix/test-tmp/var/log/guix/drvs/24//ibbvll6jdr9ri6qp7z1vgcl4vjljwv-world.drv.bz2
Starting download of /home/jorge/repos/guix/test-tmp/store/25k9f37z2l775rbj4kianf5g1k9vnczj-world
From http://localhost:10500/foo/bar...
download failed "http://localhost:10500/foo/bar" 503 "Service Unavailable"
failed to download "/home/jorge/repos/guix/test-tmp/store/25k9f37z2l775rbj4kianf5g1k9vnczj-world" from "http://localhost:10500/foo/bar"
builder for `/home/jorge/repos/guix/test-tmp/store/24ibbvll6jdr9ri6qp7z1vgcl4vjljwv-world.drv' failed to produce output path `/home/jorge/repos/guix/test-tmp/store/25k9f37z2l775rbj4kianf5g1k9vnczj-world'
@ build-failed /home/jorge/repos/guix/test-tmp/store/24ibbvll6jdr9ri6qp7z1vgcl4vjljwv-world.drv - 1 builder for `/home/jorge/repos/guix/test-tmp/store/24ibbvll6jdr9ri6qp7z1vgcl4vjljwv-world.drv' failed to produce output path `/home/jorge/repos/guix/test-tmp/store/25k9f37z2l775rbj4kianf5g1k9vnczj-world'
actual-value: #f
actual-error:
+ (srfi-34
+ #<condition &nix-protocol-error [message: "build of `/home/jorge/repos/guix/test-tmp/store/24ibbvll6jdr9ri6qp7z1vgcl4vjljwv-world.drv' failed" status: 1] 5577e21fdde0>)
result: FAIL
test-name: 'download' built-in builder, invalid hash
location: /home/jorge/repos/guix/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))))
result: SKIP
test-name: 'download' built-in builder, not found
location: /home/jorge/repos/guix/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))))
result: SKIP
test-name: 'download' built-in builder, not fixed-output
location: /home/jorge/repos/guix/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)))
warning: cannot run Web server for tests: Address already in use
warning: cannot run Web server for tests: Address already in use
@ build-started /home/jorge/repos/guix/test-tmp/store/6gq5sis8rbkzm6byqv6lkinql3625sjn-world.drv - x86_64-linux /home/jorge/repos/guix/test-tmp/var/log/guix/drvs/6g//q5sis8rbkzm6byqv6lkinql3625sjn-world.drv.bz2
guix perform-download: error: /home/jorge/repos/guix/test-tmp/store/6gq5sis8rbkzm6byqv6lkinql3625sjn-world.drv is not a fixed-output derivation
builder for `/home/jorge/repos/guix/test-tmp/store/6gq5sis8rbkzm6byqv6lkinql3625sjn-world.drv' failed with exit code 1
@ build-failed /home/jorge/repos/guix/test-tmp/store/6gq5sis8rbkzm6byqv6lkinql3625sjn-world.drv - 1 builder for `/home/jorge/repos/guix/test-tmp/store/6gq5sis8rbkzm6byqv6lkinql3625sjn-world.drv' failed with exit code 1
actual-value: 92
result: PASS
test-name: 'download' built-in builder, check mode
location: /home/jorge/repos/guix/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))))
result: SKIP
test-name: derivation-name
location: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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
+ #:hash-algo
+ 'sha256)))
+ (fixed-output-derivation? drv)))
actual-value: #t
result: PASS
test-name: fixed-output derivation
location: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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: /home/jorge/repos/guix/tests/derivations.scm:393
source:
+ (test-assert
+ "derivation with a fixed-output input"
+ (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")))
+ (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: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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))
+ (eq? 'two (call-with-input-file two read)))))))
actual-value: #t
result: PASS
test-name: read-derivation vs. derivation
location: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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
+ `((,%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 /home/jorge/repos/guix/test-tmp/store/4zk7p28p27iq7qx91a3jsm5ifp0dx92w-multiple-output-user.drv => /home/jorge/repos/guix/test-tmp/store/jgdgwrh5fk6nw9z4ryhbhrkymk5d16p9-multiple-output-user 5577e080f960>)
actual-value: #t
result: PASS
test-name: derivation with #:references-graphs
location: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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
+ "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)))
warning: cannot run Web server for tests: Address already in use
@ build-started /home/jorge/repos/guix/test-tmp/store/f7j0mnxv1p0swhj1qihb7jwsr7g0dv1z-disallowed.drv - x86_64-linux /home/jorge/repos/guix/test-tmp/var/log/guix/drvs/f7//j0mnxv1p0swhj1qihb7jwsr7g0dv1z-disallowed.drv.bz2
output (`/home/jorge/repos/guix/test-tmp/store/yccz4qjbr1jp7z5f112qll9sq1jpc097-disallowed') is not allowed to refer to path `/home/jorge/repos/guix/test-tmp/store/wpq9l41rvc3vilaysmmmcl603a7k86cr-foo'
@ build-failed /home/jorge/repos/guix/test-tmp/store/f7j0mnxv1p0swhj1qihb7jwsr7g0dv1z-disallowed.drv - 1 output (`/home/jorge/repos/guix/test-tmp/store/yccz4qjbr1jp7z5f112qll9sq1jpc097-disallowed') is not allowed to refer to path `/home/jorge/repos/guix/test-tmp/store/wpq9l41rvc3vilaysmmmcl603a7k86cr-foo'
actual-value: #t
result: PASS
test-name: derivation #:allowed-references, self allowed
location: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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)))
@ build-started /home/jorge/repos/guix/test-tmp/store/hhy2f55mf5mq26v0v9hyfn2wzy8fm8m2-disallowed.drv - x86_64-linux /home/jorge/repos/guix/test-tmp/var/log/guix/drvs/hh//y2f55mf5mq26v0v9hyfn2wzy8fm8m2-disallowed.drv.bz2
output (`/home/jorge/repos/guix/test-tmp/store/iw4milncppznr2d4d7aw90badb3xn6av-disallowed') is not allowed to refer to path `/home/jorge/repos/guix/test-tmp/store/iw4milncppznr2d4d7aw90badb3xn6av-disallowed'
@ build-failed /home/jorge/repos/guix/test-tmp/store/hhy2f55mf5mq26v0v9hyfn2wzy8fm8m2-disallowed.drv - 1 output (`/home/jorge/repos/guix/test-tmp/store/iw4milncppznr2d4d7aw90badb3xn6av-disallowed') is not allowed to refer to path `/home/jorge/repos/guix/test-tmp/store/iw4milncppznr2d4d7aw90badb3xn6av-disallowed'
actual-value: #t
result: PASS
test-name: derivation #:disallowed-references, ok
location: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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)))
@ build-started /home/jorge/repos/guix/test-tmp/store/93zbxyagimcfdiwkxl0s6yxnfhcp5b7l-disdisallowed.drv - x86_64-linux /home/jorge/repos/guix/test-tmp/var/log/guix/drvs/93//zbxyagimcfdiwkxl0s6yxnfhcp5b7l-disdisallowed.drv.bz2
output (`/home/jorge/repos/guix/test-tmp/store/14b8q5k83z2kcvaqfa4bd86z88qzkfds-disdisallowed') is not allowed to refer to path `/home/jorge/repos/guix/test-tmp/store/wpq9l41rvc3vilaysmmmcl603a7k86cr-foo'
@ build-failed /home/jorge/repos/guix/test-tmp/store/93zbxyagimcfdiwkxl0s6yxnfhcp5b7l-disdisallowed.drv - 1 output (`/home/jorge/repos/guix/test-tmp/store/14b8q5k83z2kcvaqfa4bd86z88qzkfds-disdisallowed') is not allowed to refer to path `/home/jorge/repos/guix/test-tmp/store/wpq9l41rvc3vilaysmmmcl603a7k86cr-foo'
actual-value: #t
result: PASS
test-name: derivation #:leaked-env-vars
location: /home/jorge/repos/guix/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))))
@ build-started /home/jorge/repos/guix/test-tmp/store/flqjkyqwdlxshhzgyf8nhygi38b1y95s-leaked-env-vars.drv - x86_64-linux /home/jorge/repos/guix/test-tmp/var/log/guix/drvs/fl//qjkyqwdlxshhzgyf8nhygi38b1y95s-leaked-env-vars.drv.bz2
@ build-succeeded /home/jorge/repos/guix/test-tmp/store/flqjkyqwdlxshhzgyf8nhygi38b1y95s-leaked-env-vars.drv -
expected-value: "/home/jorge/repos/guix/test-tmp/var/31131"
actual-value: "/home/jorge/repos/guix/test-tmp/var/31131"
result: PASS
test-name: build derivation with coreutils
location: /home/jorge/repos/guix/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")))))))
actual-value: #t
result: PASS
test-name: build-expression->derivation and invalid module name
location: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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)))
+ (x (pk 'fail x #f)))))
actual-value: #t
result: PASS
test-name: build-expression->derivation without inputs
location: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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)))
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 /home/jorge/repos/guix/test-tmp/store/v1bfcr4qh12mgsy5ad79vqz2qrnh234s-silent.drv - x86_64-linux /home/jorge/repos/guix/test-tmp/var/log/guix/drvs/v1//bfcr4qh12mgsy5ad79vqz2qrnh234s-silent.drv.bz2
building of `/home/jorge/repos/guix/test-tmp/store/v1bfcr4qh12mgsy5ad79vqz2qrnh234s-silent.drv' timed out after 1 seconds of silence
@ build-failed /home/jorge/repos/guix/test-tmp/store/v1bfcr4qh12mgsy5ad79vqz2qrnh234s-silent.drv - timeout
killing process 32077
actual-value: #t
result: PASS
test-name: build-expression->derivation and timeout
location: /home/jorge/repos/guix/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)))
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 /home/jorge/repos/guix/test-tmp/store/zyal8wbnqd4yni82bsyi61laf3rkv7kk-slow.drv - x86_64-linux /home/jorge/repos/guix/test-tmp/var/log/guix/drvs/zy//al8wbnqd4yni82bsyi61laf3rkv7kk-slow.drv.bz2
building of `/home/jorge/repos/guix/test-tmp/store/zyal8wbnqd4yni82bsyi61laf3rkv7kk-slow.drv' timed out after 1 seconds
@ build-failed /home/jorge/repos/guix/test-tmp/store/zyal8wbnqd4yni82bsyi61laf3rkv7kk-slow.drv - timeout
killing process 32240
actual-value: #t
result: PASS
test-name: build-expression->derivation and derivation-prerequisites-to-build
location: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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)
+ (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)))))
finding garbage collector roots...
removing stale temporary roots file `/home/jorge/repos/guix/test-tmp/var/31131/temproots/31409'
deleting unused links...
@ build-started /home/jorge/repos/guix/test-tmp/store/a5dp04hag61qqxz8vyvc85ilrdi79xx9-input.drv - x86_64-linux /home/jorge/repos/guix/test-tmp/var/log/guix/drvs/a5//dp04hag61qqxz8vyvc85ilrdi79xx9-input.drv.bz2
@ build-succeeded /home/jorge/repos/guix/test-tmp/store/a5dp04hag61qqxz8vyvc85ilrdi79xx9-input.drv -
@ build-started /home/jorge/repos/guix/test-tmp/store/l3jf2b3dq2z8lpwjyi8a4vwip691j9mj-something.drv - x86_64-linux /home/jorge/repos/guix/test-tmp/var/log/guix/drvs/l3//jf2b3dq2z8lpwjyi8a4vwip691j9mj-something.drv.bz2
@ build-succeeded /home/jorge/repos/guix/test-tmp/store/l3jf2b3dq2z8lpwjyi8a4vwip691j9mj-something.drv -
finding garbage collector roots...
deleting unused links...
actual-value: #t
result: PASS
test-name: derivation-prerequisites-to-build and substitutes
location: /home/jorge/repos/guix/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*))))))
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: derivation-prerequisites-to-build and substitutes, non-substitutable build
location: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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))))))))))
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: derivation-prerequisites-to-build in 'check' mode
location: /home/jorge/repos/guix/tests/derivations.scm:885
source:
+ (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))))))))
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) `/home/jorge/repos/guix/test-tmp/store/lhwcyzy8ks2pf54c3vz6vzhzgm3lagmp-dep'
building path(s) `/home/jorge/repos/guix/test-tmp/store/wxn9bn564m155jmz75m8517vlamx8c8z-to-check'
finding garbage collector roots...
removing stale temporary roots file `/home/jorge/repos/guix/test-tmp/var/31131/temproots/32665'
deleting `/home/jorge/repos/guix/test-tmp/store/lhwcyzy8ks2pf54c3vz6vzhzgm3lagmp-dep'
deleting `/home/jorge/repos/guix/test-tmp/store/trash'
deleting unused links...
note: currently hard linking saves 25.96 MiB
actual-value: #t
result: PASS
test-name: substitution-oracle and #:substitute? #f
location: /home/jorge/repos/guix/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 ("/home/jorge/repos/guix/test-tmp/store/jwd7rvnc2myay3wd1nglnlldgcixfmfz-dep"))
actual-value: #t
result: PASS
test-name: build-expression->derivation with expression returning #f
location: /home/jorge/repos/guix/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)))
@ build-started /home/jorge/repos/guix/test-tmp/store/j9p2cv04r76aq45x24pxw36jgrc2jddd-fail.drv - x86_64-linux /home/jorge/repos/guix/test-tmp/var/log/guix/drvs/j9//p2cv04r76aq45x24pxw36jgrc2jddd-fail.drv.bz2
builder for `/home/jorge/repos/guix/test-tmp/store/j9p2cv04r76aq45x24pxw36jgrc2jddd-fail.drv' failed with exit code 1
@ build-failed /home/jorge/repos/guix/test-tmp/store/j9p2cv04r76aq45x24pxw36jgrc2jddd-fail.drv - 1 builder for `/home/jorge/repos/guix/test-tmp/store/j9p2cv04r76aq45x24pxw36jgrc2jddd-fail.drv' failed with exit code 1
actual-value: #t
result: PASS
test-name: build-expression->derivation with two outputs
location: /home/jorge/repos/guix/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))
+ (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: /home/jorge/repos/guix/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")))))
actual-value: 93
result: PASS
test-name: build-expression->derivation with modules
location: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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))))
+ (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: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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
+ "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: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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 /home/jorge/repos/guix/test-tmp/store/0rbad3251aird9wik5jfrc92csb5k30g-drv-to-remap.drv => /home/jorge/repos/guix/test-tmp/store/9vsn60spp33x4iq51vlmd1vmlzpa83ix-drv-to-remap 5577e29590f0>)
expected-value: "hello"
actual-value: "hello"
result: PASS
test-name: map-derivation, sources
location: /home/jorge/repos/guix/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"
+ "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 /home/jorge/repos/guix/test-tmp/store/fzacr7nv83iyyy0lbb4mjkn88xqvyaqy-drv-to-remap.drv => /home/jorge/repos/guix/test-tmp/store/l7rxv83lwgp1zhz27d2p3cb89b7ihp6n-drv-to-remap 5577e2517fa0>)
expected-value: "hello"
actual-value: "hello"
result: PASS
SKIP: tests/snix
================
test-name: factorize-uri
location: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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
SKIP: tests/syscalls
====================
test-name: mount, ENOENT
location: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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: /home/jorge/repos/guix/tests/syscalls.scm:57
source:
+ (test-assert
+ "mount-points"
+ (any (cute member <> (mount-points))
+ '("/" "/proc" "/sys" "/dev")))
actual-value: ("/" "/sys/kernel/security" "/dev/shm" "/run/lock" "/sys/fs/cgroup" "/sys/fs/cgroup/unified" "/sys/fs/cgroup/systemd" "/sys/fs/pstore" "/sys/firmware/efi/efivars" "/sys/fs/cgroup/devices" "/sys/fs/cgroup/net_cls,net_prio" "/sys/fs/cgroup/freezer" "/sys/fs/cgroup/perf_event" "/sys/fs/cgroup/cpu,cpuacct" "/sys/fs/cgroup/pids" "/sys/fs/cgroup/memory" "/sys/fs/cgroup/cpuset" "/sys/fs/cgroup/blkio" "/proc/sys/fs/binfmt_misc" "/dev/mqueue" "/sys/kernel/debug" "/dev/hugepages" "/boot/efi" "/Dados" "/tmp" "/run/user/117" "/run/user/1000" "/run/user/1000/gvfs" "/sys/fs/fuse/connections")
result: PASS
test-name: swapon, ENOENT/EPERM
location: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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: /home/jorge/repos/guix/tests/syscalls.scm:111
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: /home/jorge/repos/guix/tests/syscalls.scm:124
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: /home/jorge/repos/guix/tests/syscalls.scm:156
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: /home/jorge/repos/guix/tests/syscalls.scm:189
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: /home/jorge/repos/guix/tests/syscalls.scm:197
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.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" "man-db.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" "profiling.go" "profiling.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.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.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" "man-db.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" "profiling.go" "profiling.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.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: /home/jorge/repos/guix/tests/syscalls.scm:204
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: /home/jorge/repos/guix/tests/syscalls.scm:231
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: /home/jorge/repos/guix/tests/syscalls.scm:248
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)))))))
expected-value: 42
actual-value: 42
result: PASS
test-name: fcntl-flock non-blocking
location: /home/jorge/repos/guix/tests/syscalls.scm:287
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)
expected-value: 11
actual-value: 11
result: PASS
test-name: set-thread-name
location: /home/jorge/repos/guix/tests/syscalls.scm:329
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: /home/jorge/repos/guix/tests/syscalls.scm:337
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: /home/jorge/repos/guix/tests/syscalls.scm:342
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: /home/jorge/repos/guix/tests/syscalls.scm:347
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: /home/jorge/repos/guix/tests/syscalls.scm:354
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: /home/jorge/repos/guix/tests/syscalls.scm:364
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: /home/jorge/repos/guix/tests/syscalls.scm:375
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: /home/jorge/repos/guix/tests/syscalls.scm:385
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: /home/jorge/repos/guix/tests/syscalls.scm:393
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: /home/jorge/repos/guix/tests/syscalls.scm:407
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: /home/jorge/repos/guix/tests/syscalls.scm:415
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: /home/jorge/repos/guix/tests/syscalls.scm:428
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: /home/jorge/repos/guix/tests/syscalls.scm:440
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: /home/jorge/repos/guix/tests/syscalls.scm:456
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: /home/jorge/repos/guix/tests/syscalls.scm:469
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: /home/jorge/repos/guix/tests/syscalls.scm:479
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: /home/jorge/repos/guix/tests/syscalls.scm:493
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: /home/jorge/repos/guix/tests/syscalls.scm:499
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: /home/jorge/repos/guix/tests/syscalls.scm:504
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: /home/jorge/repos/guix/tests/syscalls.scm:515
source:
+ (test-assert
+ "terminal-columns"
+ (> (terminal-columns) 0))
actual-value: #t
result: PASS
test-name: terminal-columns non-file port
location: /home/jorge/repos/guix/tests/syscalls.scm:518
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: /home/jorge/repos/guix/tests/syscalls.scm:522
source:
+ (test-assert
+ "utmpx-entries"
+ (match (utmpx-entries)
+ (((? utmpx? entries) ...)
+ (every (lambda (entry)
+ (match (utmpx-user entry)
+ ((? string?)
+ (or (not (memv (utmpx-login-type entry)
+ (list (login-type INIT_PROCESS)
+ (login-type LOGIN_PROCESS)
+ (login-type USER_PROCESS))))
+ (> (utmpx-pid entry) 0)))
+ (#f #t)))
+ entries))))
actual-value: #t
result: PASS
test-name: read-utmpx, EOF
location: /home/jorge/repos/guix/tests/syscalls.scm:539
source:
+ (test-assert
+ "read-utmpx, EOF"
+ (eof-object? (read-utmpx (%make-void-port "r"))))
actual-value: #t
result: PASS
test-name: read-utmpx
location: /home/jorge/repos/guix/tests/syscalls.scm:544
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: /home/jorge/repos/guix/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: /home/jorge/repos/guix/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: /home/jorge/repos/guix/tests/containers.scm:41
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: /home/jorge/repos/guix/tests/containers.scm:46
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: /home/jorge/repos/guix/tests/containers.scm:55
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: /home/jorge/repos/guix/tests/containers.scm:66
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: /home/jorge/repos/guix/tests/containers.scm:82
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: /home/jorge/repos/guix/tests/containers.scm:94
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: /home/jorge/repos/guix/tests/containers.scm:111
source:
+ (test-assert
+ "call-with-container, all namespaces"
+ (zero? (call-with-container
+ '()
+ (lambda () (primitive-exit 0)))))
result: SKIP
test-name: container-excursion
location: /home/jorge/repos/guix/tests/containers.scm:118
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: /home/jorge/repos/guix/tests/containers.scm:175
source:
+ (test-equal
+ "container-excursion, same namespaces"
+ 42
+ (container-excursion
+ (getpid)
+ (lambda () (primitive-exit 42))))
result: SKIP
test-name: container-excursion*
location: /home/jorge/repos/guix/tests/containers.scm:184
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: /home/jorge/repos/guix/tests/containers.scm:205
source:
+ (test-equal
+ "container-excursion*, same namespaces"
+ 42
+ (container-excursion*
+ (getpid)
+ (lambda () (* 6 7))))
result: SKIP
SKIP: tests/guix-environment-container
======================================
+ set -e
+ guix environment --version
guix environment (GNU Guix) 0.14.0.1193-4f34e
Copyright (C) 2018 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 '((@@ (guix scripts environment) assert-container-features))'
error: cannot create container: unprivileged user cannot create user namespaces
error: please set /proc/sys/kernel/unprivileged_userns_clone to "1"
+ exit 77
SKIP tests/guix-environment-container.sh (exit status: 77)
next reply other threads:[~2018-01-25 16:27 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-25 13:15 Jorge [this message]
2018-01-27 15:48 ` bug#30250: Two failures on ‘make -k "-j$(nproc)" check’ Ludovic Courtès
2018-01-30 16:47 ` Jorge
2018-01-30 17:15 ` Ludovic Courtès
2018-01-30 17:27 ` Jorge
2018-01-30 21:32 ` Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=f416cff33c08d56d49fe4930c229f782@disroot.org \
--to=jorge+list@disroot.org \
--cc=30250@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).