Hi Pjotr, Pjotr Prins <pjotr.publi...@thebird.nl> writes:
> Another thing I find a little strange. When I install a package or an > environment it completes fine. When I add then --no-substitutes flag > and it always builds stuff like openssl and libgcrypt, pango and such > from source. > > I.e., it creates a build system (I suppose). If the install is > complete it should not have to do that. > > Even if I do > > guix environment -C guix > > (which should include a build system, right?) and after completion > run the same with --no-substitutes it starts to build right away. > > Any thoughts on that? My first guess is that it has to do with grafting. If I'm not mistaken, in order to generate a graft derivation (.drv file), we need to know which store items are referenced in the ungrafted outputs. When substitutes are enabled, Guix can get the lists of references from the substitute servers. When --no-substitutes is passed, and the ungrafted outputs are not in the local store, they must be locally built in order to determine the set of references. Or at least that's my guess. Ludovic could answer more definitively, as he wrote the relevant code. Mark