[bootstrappable] Re: diverse double compilation: using $ORIGIN?
- From: Jan Nieuwenhuizen <janneke@xxxxxxx>
- To: ludo@xxxxxxx (Ludovic Courtès)
- Date: Fri, 10 Nov 2017 20:19:17 +0100
Jan Nieuwenhuizen writes:
Usage: guix build gcc-dcc
Building gcc-dcc tests the diverse double compilation property
of the gcc that Guix is using.
* gnu/packages/bootstrappable.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
Awesome! Does it build fine out-of-the-box? I didn’t expect it to be
“this easy.” :-)
I got very positive feedback from a slightly guix-sceptic person saying
something like: you lisp guys can do quite a lot with very little code.
However, all this patch adds is a test that fails: gcc built with gcc is
not bit-for-bit the same as gcc built with clang.
Since then I have included the build-path-prefix-map patch, use -rpath
$ORIGIN instead of -rpath "-lib", switched to gcc-7.2.0. Still, no
bit-reproducibility.
I'll be sending updated patches soon.
Well, that took more time than I expected.
I switched from 7.2.0 to 4.7.4 as the first target for diverse double
compilation as it seems that 7.2 uses some non-reproducible hash map
that I cannot track down _and_ 4.7.x is the latest bootstrappable gcc.
Finally, I succeeded in building repro-gcc@4.7.4 using $ORIGIN for
rpath. However, gcc-ddc@4.7.4 still shows that some absolute file names
are embedded in bin/gcc (yes, I know cpp, cc1 and ../lib* hold most of
the functionality):
/gnu/store/zw672zcmykdwzm4x7l098hb94c34ak85-repro-gcc-4.7.4/bin/
/gnu/store/zw672zcmykdwzm4x7l098hb94c34ak85-repro-gcc-4.7.4/lib/gcc/
/gnu/store/zw672zcmykdwzm4x7l098hb94c34ak85repro-gcc-4.7.4._ROOT
the first one most probably comes from
static const char *const standard_bindir_prefix = STANDARD_BINDIR_PREFIX;
I haven't looked a the other two yet. I'm attaching the diffoscope diff
and the new patch. Could do with some help here.
Thanks,
janneke
Other related posts: