On 01-08-2022 14:49, Andrew Tropin wrote:

However this one is incorrect as it would lead (ice-9 string-fun) from
the host Guile to be imported into the build environment, thereby making
the result dependent on the version of Guile that is used “outside” (you
may have seen a warning like “importing (ice-9 string-fun) from the
host”.)
Why so?  I expected modules closure to be compiled on build side and
provided to activation script via preset load-path.

This is true, and this causes the problem that Ludo' describes:

Two problems:

* (ice-9 string-fun) is part of Guile, so compiling it again is pointless (and potentially harmful, if ice-9/string-fun.scm contains a reference /gnu/store/.../some-target-specific-library.so)

* a form of non-determinism and non-reproducibility -- you are copying the modules from the Guile that 'guix' is run with, instead of always using the modules from the Guile that is defined inside Guix.

* additionally, maybe the inside-Guix and what-Guix-is-compiled-with Guile expect different behaviour of (ice-9 string-fun), causing bugs

Greetings,
Maxime.