[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#48721] [PATCH v2] gnu: gcc-8: Make static libs reproducible
From: |
Chris Marusich |
Subject: |
[bug#48721] [PATCH v2] gnu: gcc-8: Make static libs reproducible |
Date: |
Fri, 04 Jun 2021 00:23:16 -0700 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) |
Hi Carl,
Thank you so much for looking into this! The patch looks reasonable to
me. I am definitely curious to try a fixed version of GCC (8 or
otherwise) to see if it helps to solve 41669!
Carl Dong <contact@carldong.me> writes:
> Here's a v2 of the patch, let me know if this suffices!
>
>> Well done. Did you observe it in practice? (On ‘core-updates’ maybe?)
>
> Thanks! Yes, we observed it when switching back from gcc-9 to gcc-8 for
> compiling Bitcoin Core. We use -static-libstdc++, which means that any
> non-reproducibility in libstdc++.a propagates into our produced binaries as
> well.
>
> To be clear, I was only able to identify the problem and fix thanks to your
> patch here:
> https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/patches/dico-libtool-deterministic.patch?h=b6094b1f0a6760b9f5296364cf5edb8a2e64953c
>
>
>> I’m surprised that this is still an issue since this was fixed in
>> Libtool proper long ago, probably before GCC 8 was released.
>
> Right, unfortunately GCC maintains their own version of libtool, which hasn't
> been synced with upstream for a while. I documented the details here:
> https://reproducible-builds.org/docs/archives/#gnu-libtool
>
>> The patch is big, but it looks like using ‘substitute*’ wouldn’t be an
>> easy task, so maybe it’s better this way. WDYT?
>
> Right, I think it'd be hard to construct a robust substitute* for this that
> doesn't have false negatives/positives.
I agree; a patch seems best.
> ---
>
> This fixes the nonreproducibility in gcc documented here:
> https://reproducible-builds.org/docs/archives/#gnu-libtool
>
> * gnu/packages/patches/gcc-8-sort-libtool-find-output.patch: New patch.
> * gnu/local.mk (dist_patch_DATA): Register it.
> * gnu/packages/gcc.scm (gcc-8)[source]: Apply it.
Can this patch also be applied to earlier versions of GCC, such as
gcc-7, which is currently the default GCC used for basically everything
on Guix's master branch? Or is it too different?
--
Chris
signature.asc
Description: PGP signature