[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#36378: Guix Cuirass Issue with Input channels
From: |
Clément Lassieur |
Subject: |
bug#36378: Guix Cuirass Issue with Input channels |
Date: |
Sun, 17 Nov 2019 03:38:58 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) |
Hi Reza and Ludo,
Reza Alizadeh Majd <address@hidden> 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
- bug#36378: Guix Cuirass Issue with Input channels,
Clément Lassieur <=