Hi Morgan, Morgan Arnold <morgan.arn...@proton.me> writes:
> Hi all, > >> I'm not sure if what I'm proposing would actually work. > > How prophetic. > > I did some more testing with the proposed change to `derivation`, and > it seems to be causing a weird issue. I didn't think that propagating > non-substitutability would be much of a problem, since there are very > few non-substitutable packages, but I was surprised to find that this > change makes almost all packages non-substitutable! I did some > REPL-ing to find the culprit, and it when I traced it back, I found > that all of my non-substitutable derivations appeared to be so because > their dependency graph included a derivation called `#<derivation > /gnu/store/qbrwrmdgnfx3p9gl499f5pyhv0fcnw0a-gcc-11.4.0.drv => > /gnu/store/d69awcc5wahh71amx0dmgaimsdvvp2bg-gcc-11.4.0-lib > 7fc7c9bb99b0>`. That's probably the GCC implicitly added by gnu-build-system, which is listed in the %final-inputs variable. > Unfortunately, I cannot for the life of me figure out what this > derivation is, or why it isn't substitutable (all of its inputs are > substitutable, and I can't find any relevant package explicitly marked > as non-substitutable). I wonder if maybe it has something to do with > the `gnu-build-system`? It appears to be an input of `bash-minimal`, > which is what leads me to that suspicion. If I could figure out what > this derivation is and why it's non-substitutable, I think that the > change that the proposed change to `derivation` would work (and, in > some sense, implement what ought intuitively to be the default > behaviour, as Brian noted). I'm not sure what's wrong, but I think we could start by investigating why this changes causes 29 new failures when running: --8<---------------cut here---------------start------------->8--- export SCM_LOG_DRIVER_FLAGS="--brief=no --errors-only=yes" VERBOSE=1 make check TESTS=tests/derivations.scm $ make check TESTS=tests/derivations.scm make check-recursive make[1] : on entre dans le répertoire « /home/maxim/src/guix-spare » Making check in po/guix make[2] : on entre dans le répertoire « /home/maxim/src/guix-spare/po/guix » make[2]: Rien à faire pour « check ». make[2] : on quitte le répertoire « /home/maxim/src/guix-spare/po/guix » Making check in po/packages make[2] : on entre dans le répertoire « /home/maxim/src/guix-spare/po/packages » make[2]: Rien à faire pour « check ». make[2] : on quitte le répertoire « /home/maxim/src/guix-spare/po/packages » make[2] : on entre dans le répertoire « /home/maxim/src/guix-spare » Compiling Scheme modules... Compiling Scheme modules... Compiling Scheme modules... Compiling Scheme modules... Compiling Scheme modules... Compiling Scheme modules... Compiling Scheme modules... Compiling Scheme modules... make check-TESTS check-local make[3] : on entre dans le répertoire « /home/maxim/src/guix-spare » make[4] : on entre dans le répertoire « /home/maxim/src/guix-spare » PASS: tests/derivations.scm - parse & export PASS: tests/derivations.scm - add-to-store, flat PASS: tests/derivations.scm - add-to-store, recursive PASS: tests/derivations.scm - derivation with no inputs PASS: tests/derivations.scm - build derivation with 1 source FAIL: tests/derivations.scm - derivation fails but keep going PASS: tests/derivations.scm - identical files are deduplicated PASS: tests/derivations.scm - built-in-builders PASS: tests/derivations.scm - unknown built-in builder PASS: tests/derivations.scm - 'download' built-in builder PASS: tests/derivations.scm - 'download' built-in builder, invalid hash PASS: tests/derivations.scm - 'download' built-in builder, not found PASS: tests/derivations.scm - 'download' built-in builder, not fixed-output PASS: tests/derivations.scm - 'download' built-in builder, no fixed-output hash PASS: tests/derivations.scm - 'download' built-in builder, check mode PASS: tests/derivations.scm - 'git-download' built-in builder PASS: tests/derivations.scm - 'git-download' built-in builder, invalid hash PASS: tests/derivations.scm - 'git-download' built-in builder, invalid commit PASS: tests/derivations.scm - 'git-download' built-in builder, not found PASS: tests/derivations.scm - derivation-name PASS: tests/derivations.scm - derivation-output-names PASS: tests/derivations.scm - offloadable-derivation? PASS: tests/derivations.scm - substitutable-derivation? PASS: tests/derivations.scm - fixed-output-derivation? PASS: tests/derivations.scm - fixed-output-derivation?, no hash PASS: tests/derivations.scm - fixed-output derivation PASS: tests/derivations.scm - fixed-output derivation: output paths are equal PASS: tests/derivations.scm - fixed-output derivation, recursive PASS: tests/derivations.scm - fixed-output derivation, invalid hash size PASS: tests/derivations.scm - derivation with a fixed-output input PASS: tests/derivations.scm - derivation with duplicate fixed-output inputs PASS: tests/derivations.scm - derivation with equivalent fixed-output inputs PASS: tests/derivations.scm - multiple-output derivation PASS: tests/derivations.scm - multiple-output derivation, non-alphabetic order PASS: tests/derivations.scm - read-derivation vs. derivation PASS: tests/derivations.scm - read-derivation with hash = #f PASS: tests/derivations.scm - multiple-output derivation, derivation-path->output-path PASS: tests/derivations.scm - user of multiple-output derivation PASS: tests/derivations.scm - derivation with #:references-graphs PASS: tests/derivations.scm - derivation #:allowed-references, ok PASS: tests/derivations.scm - derivation #:allowed-references, not allowed PASS: tests/derivations.scm - derivation #:allowed-references, self allowed PASS: tests/derivations.scm - derivation #:allowed-references, self not allowed PASS: tests/derivations.scm - derivation #:disallowed-references, ok PASS: tests/derivations.scm - derivation #:disallowed-references, not ok PASS: tests/derivations.scm - derivation #:leaked-env-vars PASS: tests/derivations.scm - build derivation with coreutils PASS: tests/derivations.scm - build-expression->derivation and invalid module name FAIL: tests/derivations.scm - build-expression->derivation and builder encoding FAIL: tests/derivations.scm - build-expression->derivation and derivation-prerequisites FAIL: tests/derivations.scm - derivation-prerequisites and valid-derivation-input? FAIL: tests/derivations.scm - build-expression->derivation without inputs FAIL: tests/derivations.scm - build-expression->derivation and max-silent-time FAIL: tests/derivations.scm - build-expression->derivation and timeout FAIL: tests/derivations.scm - build-derivations with specific output FAIL: tests/derivations.scm - build-expression->derivation and derivation-build-plan FAIL: tests/derivations.scm - derivation-build-plan when outputs already present FAIL: tests/derivations.scm - derivation-build-plan and substitutes FAIL: tests/derivations.scm - derivation-build-plan and substitutes, non-substitutable build FAIL: tests/derivations.scm - derivation-build-plan and substitutes, non-substitutable dep FAIL: tests/derivations.scm - derivation-build-plan and substitutes, local build FAIL: tests/derivations.scm - derivation-build-plan in 'check' mode FAIL: tests/derivations.scm - derivation-build-plan, topological ordering FAIL: tests/derivations.scm - derivation-input-fold FAIL: tests/derivations.scm - substitution-oracle and #:substitute? #f FAIL: tests/derivations.scm - build-expression->derivation with expression returning #f FAIL: tests/derivations.scm - build-expression->derivation with two outputs FAIL: tests/derivations.scm - build-expression->derivation with one input FAIL: tests/derivations.scm - build-expression->derivation with modules FAIL: tests/derivations.scm - build-expression->derivation: same fixed-output path FAIL: tests/derivations.scm - build-expression->derivation with a fixed-output input FAIL: tests/derivations.scm - build-expression->derivation produces recursive fixed-output FAIL: tests/derivations.scm - build-expression->derivation uses recursive fixed-output FAIL: tests/derivations.scm - build-expression->derivation with #:references-graphs FAIL: tests/derivations.scm - derivation-properties FAIL: tests/derivations.scm - map-derivation PASS: tests/derivations.scm - map-derivation, sources =================================================== GNU Guix 1.3.0.77462-364394: ./test-suite.log =================================================== # TOTAL: 77 # PASS: 48 # SKIP: 0 # XFAIL: 0 # FAIL: 29 # XPASS: 0 # ERROR: 0 .. contents:: :depth: 2 --8<---------------cut here---------------end--------------->8--- -- Thanks, Maxim