Hi Reza and Ludo, Reza Alizadeh Majd <r.m...@pantherx.org> writes:
> adding additional inputs to cuirass specification with name started > with `p` letter, fails the evaluation of specification. Thank you for reporting this! It actually fails with names that come after the first input (in this case: "guix") in alphabetical order. > considering following specification: > > (list > '((#:name . "hello-spec") > (#:load-path-inputs . ("guix")) > (#:package-path-inputs . ()) > (#:proc-input ."guix") > (#:proc-file . "build-aux/cuirass/gnu-system.scm") > (#:proc . cuirass-jobs) > (#:proc-args . ((subset . "hello") > (systems . ("x86_64-linux")))) > (#:inputs . (((#:name . "guix") > (#:url . "git://git.savannah.gnu.org/guix.git") > (#:load-path . ".") > (#:branch . "master") > (#:no-compile? . #t)) > ((#:name . "pkginput") > (#:url . "git://git.savannah.gnu.org/guix/guix-cuirass.git") > (#:load-path . ".") > (#:branch . "master") > (#:no-compile? . #t)) > )))) It's because the 'proc' you use (CUIRASS-JOBS, from the Guix repository), interprets the first input it finds as a Guix checkout. There's a comment about this[1]: ;; Extract metadata about the 'guix' checkout. Its key in ARGUMENTS may ;; vary, so pick up the first one that's neither 'subset' nor 'systems'. The argument list you sent to 'proc' looked like this: '((pkginput (no-compile? . #t) (load-path . ".") (revision . "8bf095fc503ddac18a9457e1379e497ae16324fa") (file-name . "/gnu/store/fcq3axxh5kpva6kphi58ibklfz4wnbnr-cuirass-8bf095f")) (guix (no-compile? . #t) (load-path . ".") (revision . "3e9ca3358a8cfffaeb4997389bb767065e70876a") (file-name . "/gnu/store/5nmsf6464vhdifmvzassp3b3cwfis5j4-guix-3e9ca33")) (subset . "hello")) so the 'proc' thought 'pkginput' was a Guix checkout and tried to build Guix with a Cuirass source, which obviously doesn't work. (It fails line 60 of [1].) If the input name were "cuirass" instead of "pkginput", you would have sent: '((guix (no-compile? . #t) (load-path . ".") (revision . "3e9ca3358a8cfffaeb4997389bb767065e70876a") (file-name . "/gnu/store/5nmsf6464vhdifmvzassp3b3cwfis5j4-guix-3e9ca33")) (cuirass (no-compile? . #t) (load-path . ".") (revision . "8bf095fc503ddac18a9457e1379e497ae16324fa") (file-name . "/gnu/store/fcq3axxh5kpva6kphi58ibklfz4wnbnr-cuirass-8bf095f")) (subset . "hello")) And it would have worked. So it's indeed a bug in Guix, introduced by commit b5f8c2c88543158e8aca76aa98f9009f6b9e743a (hydra: Compute jobs in an inferior). We can't just take the first input we find, build it and open an inferior for it. I believe we should take the input whose name is "guix" (as we do with manifests[2]). What do you think? Clément [1]: https://git.savannah.gnu.org/cgit/guix.git/tree/build-aux/hydra/gnu-system.scm#n40 [2]: https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/ci.scm#n361