fanquake
commented at 3:19 PM on May 11, 2026:
member
We don't use LTO in release builds, and neither do any of our dependencies, so disable support in GCC. This reduces what needs to be compiled when building the Guix toolchain. It would also make it clear if something started using it.
Also disable Native Language Support as this is also not needed:
The --enable-nls option enables Native Language Support (NLS), which lets GCC output diagnostics in languages other than American English. Native Language Support is enabled by default if not doing a canadian cross build.
If your review is incorrectly listed, please copy-paste <code><!--meta-tag:bot-skip--></code> into the comment that the bot should ignore.
<!--174a7506f384e20aa4161008e828411d-->
Conflicts
Reviewers, this pull request conflicts with the following ones:
#25573 (guix: produce a -static-pie bitcoind by fanquake)
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.
<!--5faf32d7da4f0f540f40219e4f7537a3-->
fanquake marked this as ready for review on May 11, 2026
winterrdog
commented at 8:14 PM on May 16, 2026:
contributor
in the PR description:
saves some compilation
i'd like to assume you meant 'saves some compilation time' rather than 'saves some compilation' - is that right ?
fanquake force-pushed on May 20, 2026
fanquake
commented at 3:52 PM on May 20, 2026:
member
i'd like to assume you meant 'saves some compilation time' rather than 'saves some compilation' - is that right ?
Maybe both? Skipping LTO means compiling less stuff (albeit not much) in Guix, when building the toolchain, which ultimately saves some time (across 6 toolchains).
winterrdog
commented at 6:03 PM on May 20, 2026:
contributor
Skipping LTO means compiling less stuff (albeit not much) in Guix, when building the toolchain, which ultimately saves some time (across 6 toolchains).
correct!
how about updating it to something like: 'This reduces what needs to be compiled and saves some compilation time when building the toolchain'? that way it captures both aspects you mentioned in turn making the description clearer
(just a suggestion though, no worries either way!)
fanquake force-pushed on May 28, 2026
fanquake force-pushed on Jun 2, 2026
sedited
commented at 12:31 PM on June 8, 2026:
contributor
Concept ACK
maflcko added the label DrahtBot Guix build requested on Jun 9, 2026
sedited
commented at 12:43 PM on June 9, 2026:
contributor
guix: mirror some arguments from linux-gcc to mingw-w64-gcc63809be6d1
guix: pass --disable-tm-clone-registry to base GCC
We don't need support for transactional memory.
> Disable TM clone registry in libgcc. It is enabled in libgcc by default.
> This option helps to reduce code size for embedded targets which do
> not use transactional memory.
https://gcc.gnu.org/install/configure.html
313ed191e9
fanquake force-pushed on Jul 3, 2026
fanquake
commented at 2:36 PM on July 3, 2026:
member
@willcl-ark not sure what has happened there. I've done builds on two different machines (x86_64 & aarch64) at 313ed191e9d46bb19012e677e9a8ec3c95d693b7, and getting:
nkaretnikov
commented at 6:47 AM on July 11, 2026:
none
ACK313ed191e9d46bb19012e677e9a8ec3c95d693b7.
Review comments below.
Nits:
Avoid swapping lines to make diffs easier to review. Example: posix and ssp flags are swapped on mingw. Same for linux.
The change from an ordinary quasiquote to a gexp is not mentioned in the PR. This limits the minimum supported Guix version, but it is not an issue because the syntax is used elsewhere in the codebase and the project pins the Guix version (to c5eee3336cc1d10a3cc1c97fde2809c3451624d3). Gexps in arguments are available since 1.3.0, May 2021 (see compatibility note here and release date here). Gexps is also the preferred syntax. Also, the trailing commas used before were actually no-op quasiquotes.
--enable-gprofng=no added to mingw, not mentioned in the PR description. Was part of linux flags before.
--disable-libsanitizer is not mentioned in the PR description. Not an issue because it should not be used with release builds, it was also part of linux flags before.
Minor:
--disable-tm-clone-registry is added only to linux-base-gcc, not mingw-w64-base-gc. Is this not available on mingw? Also not mentioned in the PR description.
depends/Makefile:45 has an LTO setting (but it's empty/off). Not sure whether that one should be removed as well.
Hashes on that commit (same as multiple people above):
Avoid swapping lines to make diffs easier to review. Example: posix and ssp flags are swapped on mingw. Same for linux.
Lines are being swapped on purpose.
depends/Makefile:45 has an LTO setting (but it's empty/off). Not sure whether that one should be removed as well.
No, this can remain.
--disable-tm-clone-registry is added only to linux-base-gcc, not mingw-w64-base-gc. Is this not available on mingw?
It's only valid on Linux.
You've mentioned a number of times about things being missing from the PR description; I don't think the PR description needs to duplicate the entire content of all commits/commit messages, however I might add some more content.
This is a metadata mirror of the GitHub repository
bitcoin/bitcoin.
This site is not affiliated with GitHub.
Content is generated from a GitHub metadata backup.
generated: 2026-07-16 05:51 UTC
This site is hosted by @0xB10C More mirrored repositories can be found on mirror.b10c.me