GNU bug report logs - #36378
Guix Cuirass Issue with Input channels

Previous Next

Package: guix;

Reported by: "Reza Alizadeh Majd" <r.majd <at> pantherx.org>

Date: Tue, 25 Jun 2019 15:17:02 UTC

Severity: normal

Done: clement <at> lassieur.org (Clément Lassieur)

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: clement <at> lassieur.org (Clément Lassieur)
To: Reza Alizadeh Majd <r.majd <at> pantherx.org>, Ludovic Courtès <ludo <at> gnu.org>
Cc: 36378 <at> debbugs.gnu.org
Subject: bug#36378: Guix Cuirass Issue with Input channels
Date: Sun, 17 Nov 2019 03:38:58 +0100
Hi Reza and Ludo,

Reza Alizadeh Majd <r.majd <at> 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




This bug report was last modified 5 years and 168 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.