Ludovic Courtès writes:
Hello,
A new day!
Toggle quote (10 lines)
> "Jan (janneke) Nieuwenhuizen" <janneke@gnu.org> skribis:
>
>> * guix/store/roots.scm (proc-environ-roots): Handle EIO, for the Hurd.
>> * gnu/build/hurd-boot.scm (set-hurd-device-translators): Mount /proc. Add
>> symlink to /etc/mtab. Remove duplicate calls to 'scope'.
>
> Nitpick: I see 3 mostly unrelated patches: (1) fix duplicate called to
> ‘scope’, (2) mount /proc, and (3) handle EIO. I think it’s clearer to
> view them separately.
Yes, I agree. I will split into 3 patches.
(Initially my plan was to post a DRAFT/RFC for (3) that would either fix
"guix gc", or show us the next error. Then I needed the other two and
found there was yet another problem...)
Toggle quote (6 lines)
>> - (mkdir* (scope "dev/vcs/1"))
>> - (mkdir* (scope "dev/vcs/2"))
>> - (mkdir* (scope "dev/vcs/2"))
>
> Was it creating like /some/root/some/root/dev/vcs/1?
No... "just" //dev/vcs/1. However, in my bare-iron experiments I
stumbled upon several "Not a directory", so...just being careful here.
Toggle quote (18 lines)
>> (append-map rhs-file-names
>> - (split-on-nul
>> - (call-with-input-file environ
>> - get-string-all))))
>> + (catch 'system-error
>> + (lambda _
>> + (split-on-nul
>> + (call-with-input-file environ
>> + get-string-all)))
>> + (lambda args
>> + (if (= EIO (system-error-errno args))
>> + '()
>> + (apply throw args))))))
>
> This may be papering over a real problem. Before doing that, I think
> “we” :-) should investigate why procfs returns EIO in some cases and
> look into fixing it.
Sure, let "us" look into that! :)
Toggle quote (5 lines)
> Then maybe we can still have the ‘catch’ above, but this time as a
> temporary measure and with a reference to the upstream issue/commit.
>
> WDYT?
Sure, thanks.
So...I think that I found the problem: Using guile-3.0.[34]. This patch
Toggle snippet (23 lines)
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index a32bd33293..b191a7b93b 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -312,14 +312,14 @@ without requiring the source code to be rewritten.")
;; TODO: Make this 'guile-3.0' on the next rebuild cycle.
(package
(inherit guile-3.0)
- (version "3.0.4")
+ (version "3.0.2")
(source (origin
(inherit (package-source guile-3.0))
(uri (string-append "mirror://gnu/guile/guile-"
version ".tar.xz"))
(sha256
(base32
- "0c8dkyvs6xbxp7rgnhkyakajzhakay7qn9kahj1mj49x5vf4fybb"))))))
+ "12lziar4j27j9whqp2n18427q45y9ghq7gdd8lqhmj1k0lr7vi2k"))))))
(define-public guile-next
(deprecated-package "guile-next" guile-3.0))
fixes guix build...(terrible!) What shall "we" do with this, maybe
"someone" wants to have a look? Guess this should find its way into a
Guile bug report?
[later...]
I checked-out guile master on Debian/Hurd and ran the Guile test suite,
which (apart from known failures) passed. Leaving that for now.
So, then it "must" be our cross-compiled guile-3.0.4 for the Hurd; best
to check that, right? Look:
Toggle snippet (85 lines)
root@guixydevel ~/guile# ./check-guile -i /run/current-system/profile/bin/guile
Testing /run/current-system/profile/bin/guile ...
with GUILE_LOAD_PATH=/root/guile/test-suite:/run/current-system/profile/share/guile/site/3.0
WARNING: Use of `load' in declarative module (test-suite guile-test). Add #:declarative? #f to your define-module invocation.
Running 00-initial-env.test
Running 00-repl-server.test
Running 00-socket.test
UNRESOLVED: 00-socket.test: AF_INET6/SOCK_STREAM: bind
UNRESOLVED: 00-socket.test: AF_INET6/SOCK_STREAM: bind/sockaddr
UNRESOLVED: 00-socket.test: AF_INET6/SOCK_STREAM: listen
UNRESOLVED: 00-socket.test: AF_INET6/SOCK_STREAM: connect
UNRESOLVED: 00-socket.test: AF_INET6/SOCK_STREAM: connect/sockaddr
UNRESOLVED: 00-socket.test: AF_INET6/SOCK_STREAM: accept
[...]
Running asyncs.test
ERROR: asyncs.test: preemption via sigprof - arguments: ((system-error "setitimer" "~A" ("Function not implemented") (1073741902)))
[...]
Running bytevectors.test
FAIL: bytevectors.test: 2.8 Operations on IEEE-754 Representations: bytevector-ieee-single-native-{ref,set!} (compile -O2)
FAIL: bytevectors.test: 2.8 Operations on IEEE-754 Representations: bytevector-ieee-double-native-{ref,set!} (compile -O2)
[...]
Running ftw.test
ERROR: ftw.test: file-system-fold: test-suite - arguments: ((match-error "match" "no matching pattern" ((error "/tmp/guix-build-guile-3.0.4.drv-0/guile-3.0.4/test-suite"))))
FAIL: ftw.test: file-system-fold: test-suite (never enter) - arguments: (expected-value ((skip "/tmp/guix-build-guile-3.0.4.drv-0/guile-3.0.4/test-suite")) actual-value ((error "/tmp/guix-build-guile-3.0.4.drv-0/guile-3.0.4/test-suite")))
FAIL: ftw.test: file-system-fold: test-suite/lib.scm (flat file) - arguments: (expected-value ((leaf "/tmp/guix-build-guile-3.0.4.drv-0/guile-3.0.4/test-suite/test-suite/lib.scm")) actual-value ((error "/tmp/guix-build-guile-3.0.4.drv-0/guile-3.0.4/test-suite/test-suite/lib.scm")))
UNRESOLVED: ftw.test: file-system-fold: EACCES
ERROR: ftw.test: file-system-tree: test-suite (never enter) - arguments: ((match-error "match" "no matching pattern" #f))
ERROR: ftw.test: file-system-tree: test-suite/* - arguments: ((match-error "match" "no matching pattern" #f))
ERROR: ftw.test: file-system-tree: test-suite (recursive) - arguments: ((match-error "match" "no matching pattern" #f))
ERROR: ftw.test: scandir: top-srcdir - arguments: ((match-error "match" "no matching pattern" #f))
ERROR: ftw.test: scandir: test-suite - arguments: ((match-error "match" "no matching pattern" #f))
FAIL: ftw.test: scandir: no select
Running popen.test
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /root/guile/module/ice-9/command-line.scm
;;; compiling /root/guile/module/system/base/compile.scm
;;; it seems /root/guile/module/system/base/compile.scm
;;; is part of the compiler; skipping auto-compilation
;;; compiling /root/guile/module/system/base/language.scm
;;; WARNING: compilation of /root/guile/module/system/base/language.scm failed:
;;; In procedure variable-ref: variable is unbound: #<variable 3882d0 value: #<undefined>>
;;; compiling /root/guile/module/system/base/syntax.scm
[hmm?]
Running ports.test
ERROR: ports.test: %file-port-name-canonicalization: absolute canonicalization from ice-9 - arguments: ((system-error "canonicalize-path" "~A" ("No such file or directory") (1073741826)))
[...]
Running signals.test
ERROR: signals.test: setitimer: current itimers are 0: ITIMER_VIRTUAL - arguments: ((system-error "setitimer" "~A" ("Function not implemented") (1073741902)))
ERROR: signals.test: setitimer: current itimers are 0: ITIMER_PROF - arguments: ((system-error "setitimer" "~A" ("Function not implemented") (1073741902)))
ERROR: signals.test: setitimer: setting values correctly: initial setting - arguments: ((system-error "setitimer" "~A" ("Function not implemented") (1073741902)))
ERROR: signals.test: setitimer: setting values correctly: reset to zero - arguments: ((system-error "setitimer" "~A" ("Function not implemented") (1073741902)))
ERROR: signals.test: setitimer: usecs > 1e6: initial setting - arguments: ((system-error "setitimer" "~A" ("Function not implemented") (1073741902)))
ERROR: signals.test: setitimer: usecs > 1e6: reset to zero - arguments: ((system-error "setitimer" "~A" ("Function not implemented") (1073741902)))
[...]
Running srfi-18.test
FAIL: srfi-18.test: thread-sleep!: thread sleeps fractions of a second
[...]
Running srfi-4.test
FAIL: srfi-4.test: f32 vectors: f32vector-ref
FAIL: srfi-4.test: f32 vectors: f32vector-set!/ref
FAIL: srfi-4.test: f32 vectors: f32vector->list/array->list
FAIL: srfi-4.test: f64 vectors: f64vector-ref
FAIL: srfi-4.test: f64 vectors: f64vector-set!/ref
FAIL: srfi-4.test: f64 vectors: f64vector->list/array->list
FAIL: srfi-4.test: c32 vectors: c32vector-ref
FAIL: srfi-4.test: c32 vectors: c32vector-set!/ref
FAIL: srfi-4.test: c32 vectors: c32vector->list/array->list
FAIL: srfi-4.test: c32 vectors: array-ref
FAIL: srfi-4.test: c64 vectors: c64vector-ref
FAIL: srfi-4.test: c64 vectors: c64vector-set!/ref
FAIL: srfi-4.test: c64 vectors: c64vector->list/list->c64vector
FAIL: srfi-4.test: c64 vectors: c64vector->list/array->list
FAIL: srfi-4.test: c64 vectors: array-ref
[...]
Running suspendable-ports.test
warning: call to primitive-fork while multiple threads are running;
further behavior unspecified. See "Processes" in the
manual, for more information.
ERROR: suspendable-ports.test: %file-port-name-canonicalization: absolute canonicalization from ice-9 - arguments: ((system-error "canonicalize-path" "~A" ("No such file or directory") (1073741826)))
[...]
Running weaks.test
ERROR: weaks.test: weak-hash: assoc can do anything - arguments: ((out-of-range #f "Value out of range ~S to ~S: ~S" (1 4294967295 18446744073709551615) (18446744073709551615)))
Some of these are "known" and I didn't run a "baseline" using 3.0.2
(which works). However the srfi-4 and bytevector look real bad to me.
(FTW could also be real bad, but running "find-files" from (guix build
utils) by hand just works; looks like a compilation-time file name
problem with the/how I ran the/ test-suite.?)
Greetings,
Janneke
--