Subject: bug#39926: Regression introduced by Shepherd 0.7.0 ('make check-system TESTS=btrfs-root-os' fails)

From: Maxim Cournoyer <[email-masked]>
Date: Fri, 06 Mar 2020 23:40:18 -0500

Hello Ludovic!

Ludovic Courtès <[email-masked]> writes:

> Hi Maxim,
>
> Maxim Cournoyer <[email-masked]> skribis:
>
>> So, it seems that updating shepherd to 0.7.0 caused this regression
>> (commit 205c1e04e04b9a9338c7219ff82bd13f000fb8c8).
>
> Could it be something similar to <https://bugs.gnu.org/39671>, fixed in
> commit 00500449b0d53bb9219608a3cbee8faf7a3edae1?
>
> Thanks,
> Ludo’.

I've reviewed the problem linked above, and the various places we still
have setenvs before forking a process with Shepherd, and haven't found a
problematic usage so far.

I've ran the following again:

--8<---------------cut here---------------start------------->8---
guix build --verbosity=10 /gnu/store/l6p6jnwn844hyfwfazg39i7mj4v3z9ac-btrfs-root-os.drv |& strings
--8<---------------cut here---------------end--------------->8---

The |& strings part prevents SeaBIOS from resetting my terminal emulator
and loosing parts of the scroll buffer.  Not really needed here, but
handy sometimes.

The failed derivation build ends with:

marionette is ready
;;; (uname #("Linux" "gnu" "5.4.24-gnu" "#1 SMP 1" "x86_64"))
builder for `/gnu/store/s3ba2v7cl8x0v7wi8xg3xrpm5216i3jf-installation.drv' failed with exit code 1

Right after outputing what seems to be the result of evaluating
'uname'.  Opening up the builder code referenced in that derivation,
/gnu/store/jv133gqxz1wj053vjzpnk6rkr6409lv1-btrfs-root-os-builder, I
could find:

--8<---------------cut here---------------start------------->8---
(test-assert "uname"
    (match
	(marionette-eval
	 (quote
	  (uname))
	 marionette)
      (#("Linux" host-name version _ architecture)
       (and
	(string=? host-name "liberigilo")
	(string-prefix? "5.4.24" version)
	(string-prefix? architecture %host-type)))))
--8<---------------cut here---------------end--------------->8---

Comparing with the above uname output, we can see that it validates the
hostname matches against "liberigilo", yet it is "gnu"!  Perhaps
Shepherd 0.7.0 introduced some problem with the hostname service?

Maxim