Subject: bug#24712: Grafting of multiple-output dependencies is mishandled

From: Mark H Weaver <[email-masked]>
Date: Mon, 17 Oct 2016 23:22:53 -0400

[email-masked] (Ludovic Courtès) writes:

> [email-masked] (Ludovic Courtès) skribis:
>
>> Mark reported on IRC that gnome-session, as of v0.11.0-1639-g34f9582,
>> refers to the grafted “out” of glib, but at the same time refers to the
>> *ungrafted* “bin” output of glib:
>>
>> $ ./pre-inst-env guix build gnome-session
>> /gnu/store/rchskrbc42yjlb85lq8zigpvynwc2zz7-gnome-session-3.20.2
>> $ guix gc -R /gnu/store/rchskrbc42yjlb85lq8zigpvynwc2zz7-gnome-session-3.20.2|grep glib-2
>> /gnu/store/l1s4cw9g58hmcpd2qgbckfl228143qzx-glib-2.48.0
>> /gnu/store/c4rjjznraqnw7wk7zwr8ndmq7bdmj51q-glib-2.48.0-bin
>> $ ./pre-inst-env guix build glib
>> /gnu/store/ya5d1r6bvph3m5nisjywrnkvffpdrjfn-glib-2.48.0-bin
>> /gnu/store/jav2d6c39k3amv4k1670845li7284a6q-glib-2.48.0-doc
>> /gnu/store/77f9q6kvgrrwhqbzxzc10bwdwq6kd690-glib-2.48.0
>> $ ./pre-inst-env guix build glib --no-grafts
>> /gnu/store/c4rjjznraqnw7wk7zwr8ndmq7bdmj51q-glib-2.48.0-bin
>> /gnu/store/ib12bfrx83aawhabpp0rijgmm61gi0wg-glib-2.48.0-doc
>> /gnu/store/l1s4cw9g58hmcpd2qgbckfl228143qzx-glib-2.48.0
>
> I believe this is fixed by 3d47aa81ba4c19b45ce9a9ff0ece0252777ea8ed.

Indeed, this seems to have improved things, thanks!

Unfortunately:

> Mark, could you check with the Bash replacement you wanted to add?

I tried it, and now *every* derivation fails, even simple things like
imported-module compiles, because 'guile-final' crashes while booting
within the build container.  Outside of the build container, it works
fine.

To make a long story short, it turns out that #24703 is the cause.  My
'guile-final' is grafted, using a 'glibc-final' grafted to use the new
Bash.  The only problem is, 'glibc-final' is still trying to load its
'gconv' modules from the ungrafted 'glibc-final'.  Thanks to 3d47aa81,
there are no longer any *visible* references to the ungrafted
'glibc-final', so it's no longer being included in the build
environment.

      Mark