Subject: bug#55273: [email-masked] (irreproducibly?) fails to build and output is non-deterministic

From: Maxime Devos <[email-masked]>
Date: Fri, 06 May 2022 20:23:09 +0200

Maxime Devos schreef op vr 06-05-2022 om 20:09 [+0200]:
> Some interesting things:
> 
> (git/diff.go)
> │ │ │ │ │ │ ├── strings --all --bytes=8 {}
> │ │ │ │ │ │ │ @@ -89,14 +89,15 @@
> │ │ │ │ │ │ │   ( 0(8 @ D8\
> │ │ │ │ │ │ │  B((4B@JP
> │ │ │ │ │ │ │  Guile 3.0.7
> │ │ │ │ │ │ │  libgit2->procedure@@git/bindings
> │ │ │ │ │ │ │  raise-git-error@@git/bindings
> │ │ │ │ │ │ │  diff-fold
> │ │ │ │ │ │ │  git/diff.scm
> │ │ │ │ │ │ │ +git/bindings.scm
> │ │ │ │ │ │ │  ice-9/boot-9.scm
> │ │ │ │ │ │ │  libgit2->procedure@@git/bindings
> │ │ │ │ │ │ │  raise-git-error@@git/bindings
> │ │ │ │ │ │ │  diff-fold
> │ │ │ │ │ │ │  DIFF-OPTIONS-VERSION
> │ │ │ │ │ │ │  GIT-SUBMODULE-IGNORE-UNSPECIFIED
> │ │ │ │ │ │ │  GIT-SUBMODULE-IGNORE-NONE
> 
> 
> A similar +git/bindings.scm exists for git/fetch.go, git/tree.go and
> other go files.
> 

Maybe the following is relevant
(https://wingolog.org/archives/2021/05/13/cross-module-inlining-in-guile)
:

> There are a few caveats about this facility, and they are
sufficiently sharp that I should probably fix them some day. The first
one is that for an imported module to expose inlinable definitions, the
imported module needs to have been compiled already, not loaded from
source. When you load a module from source using the interpreter
instead of compiling it first, the pipeline is optimized for minimizing
the latency between when you ask for the module and when it is
available. There's no time to analyze the module to determine which
exports are inlinable and so the module exposes no inlinable exports.

Currently, GUILE_AUTO_COMPILE=0 is set, so dependencies are not
compiled before compiling dependent modules -- except when if one of
the modules was compiled already!  Maybe removing
'GUILE_AUTO_COMPILE=0' will fix things?

Greetings,
Maxime.