Fwd: enabling link time optimizations in package builds
Chris Lamb
chris at reproducible-builds.org
Fri Jun 17 09:12:24 UTC 2022
Hi Roland,
> would enabling LTO cause reproducible issues?
> If I remember correctly, Bernhard mentioned some issues, which got
> 'solved' by using less parallel builds (-j1 or -j4?).
Good question. There was definitely at least one LTO-related issue in the
past. Take, for instance, this bug report from 2015 about "FAT" LTO objects:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66305
I don't know whether this is still valid and/or we would encounter it
with Doko's proposal, however.
// Chris
> -------- Forwarded Message --------
> Subject: enabling link time optimizations in package builds
> Resent-Date: Fri, 17 Jun 2022 08:28:51 +0000 (UTC)
> Resent-From: debian-devel at lists.debian.org
> Date: Fri, 17 Jun 2022 10:18:43 +0200
> From: Matthias Klose <doko at debian.org>
> To: debian-devel at lists.debian.org <debian-devel at lists.debian.org>
> CC: debian-ports at lists.debian.org <debian-ports at lists.debian.org>
>
> Link time optimizations are an optimization that helps with a single
> digit percent number optimizing both for smaller size, and better speed.
> These optimizations are available for some time now in GCC. Link time
> optimizations are also at least turned on in other distros like Fedora,
> OpenSuse (two years) and Ubuntu (one year).
>
> Details at https://wiki.debian.org/ToolChain/LTO
>
> The proposal is to turn on LTO by default on most 64bit release
> architectures. Not proposing to do this on 32bit architectures because
> of the limited address space at link time, and up to now nobody tested
> LTO on 32bit archs. In test rebuilds, there were 373 packages (dd-list
> in the wiki page) found not to build with link time optimizations for
> various reasons. These range from easily fixable issues in symbols
> files to some upstream issues. The idea is to fix as many of these as
> possible, and then change the packaging for the others to just turn off
> LTO in the package build.
>
> To explicitly turn on LTO for a package build:
>
> export DEB_BUILD_MAINT_OPTIONS=optimize=+lto
>
> to explicitly disable LTO:
>
> export DEB_BUILD_MAINT_OPTIONS=optimize=-lto
>
> The idea is to file wishlist bug reports for those 373 packages and then
> see how far we get, and if it's feasible to already turn on LTO for
> bookworm. If not, it should be turned on by default for the following
> release.
More information about the rb-general
mailing list