Ludovic Courtès writes: Hello,
A new day! > "Jan (janneke) Nieuwenhuizen" <jann...@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...) >> - (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. >> (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! :) > 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 --8<---------------cut here---------------start------------->8--- 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)) --8<---------------cut here---------------end--------------->8--- 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: --8<---------------cut here---------------start------------->8--- 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))) --8<---------------cut here---------------end--------------->8--- 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 -- Jan Nieuwenhuizen <jann...@gnu.org> | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com