Subject: bug#57215: ci: Fail to evaluate Guix specification

From: Mathieu Othacehe <[email-masked]>
Date: Tue, 16 Aug 2022 09:56:02 +0200

Hello,

Some news on this one: I discovered that the evaluation failure of the
"guix" specification is correlated with the selected systems. When
disabling "aarch64-linux" and "powerpc64le-linux", the evaluation
succeeded.

Now, when running:

--8<---------------cut here---------------start------------->8---
mathieu@berlin ~$ guix pull -s powerpc64le-linux -v3 
Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
Building from this channel:
  guix      https://git.savannah.gnu.org/git/guix.git   0598b5d
building /gnu/store/m7ppw9lb65g99dajwkb56w05zqmydsdh-guile-bootstrap-2.0.drv...
@ unsupported-platform /gnu/store/m7ppw9lb65g99dajwkb56w05zqmydsdh-guile-bootstrap-2.0.drv powerpc64le-linux
while setting up the build environment: a `powerpc64le-linux' is required to build `/gnu/store/m7ppw9lb65g99dajwkb56w05zqmydsdh-guile-bootstrap-2.0.drv', but I am a `x86_64-linux'
builder for `/gnu/store/m7ppw9lb65g99dajwkb56w05zqmydsdh-guile-bootstrap-2.0.drv' failed with exit code 1
build of /gnu/store/m7ppw9lb65g99dajwkb56w05zqmydsdh-guile-bootstrap-2.0.drv failed
View build log at '/var/log/guix/drvs/m7/ppw9lb65g99dajwkb56w05zqmydsdh-guile-bootstrap-2.0.drv.gz'.
--8<---------------cut here---------------end--------------->8---

It fails in the same way with aarch64-linux. That's because there's no
offload or binfmt mechanism on berlin at the moment.

I restored the /etc/guix/machines.scm to enable offloading, and
suddenly "aarch64-linux" system is working again for the "guix"
specification. "powerpc64le-linux" is still failing as we do not have a
machine for that architecture currently available: p9.tobias.gr is
commented out.

Tobias, I'm not sure to remember why?

Now there are multiple unclear points to me:

1. Why do we need an available machine with the foreign architecture to
compute the corresponding "guix" derivation? Note that the evaluation of
package derivations for foreign systems works even though a
corresponding machine is not available:

--8<---------------cut here---------------start------------->8---
mathieu@berlin ~$ guix build -s powerpc64le-linux -d hello
/gnu/store/spzmh79qi21k26p15w27r3jjg95szg17-hello-2.12.1.drv
--8<---------------cut here---------------end--------------->8---

2. Why the following traces are not reported back by the inferior in
charge of the evaluation of the "guix" derivation?

--8<---------------cut here---------------start------------->8---
@ unsupported-platform /gnu/store/m7ppw9lb65g99dajwkb56w05zqmydsdh-guile-bootstrap-2.0.drv powerpc64le-linux
while setting up the build environment: a `powerpc64le-linux' is required to build `/gnu/store/m7ppw9lb65g99dajwkb56w05zqmydsdh-guile-bootstrap-2.0.drv', but I am a `x86_64-linux'
builder for `/gnu/store/m7ppw9lb65g99dajwkb56w05zqmydsdh-guile-bootstrap-2.0.drv' failed with exit code 1
build of /gnu/store/m7ppw9lb65g99dajwkb56w05zqmydsdh-guile-bootstrap-2.0.drv failed
--8<---------------cut here---------------end--------------->8---

3. Why does the "cuirass evaluate" process crashes when an inferior
crashes (see the backtrace in my previous email)?

I'll try to come-up with simple reproducers for those different points.

In the meantime, the "guix" specification is working again for
x86_64-linux, i686-linux and aarch64-linux systems which is a good news.

Thanks,

Mathieu