From 200ca2e1ee33d53d990bc4485f8ac42dacea8c2d Mon Sep 17 00:00:00 2001 From: Mehdi Chinoune Date: Fri, 19 Nov 2021 08:14:23 +0100 Subject: [PATCH] pacman: Fix LTO-ing staticlibs --- pacman/0021-fix-lto-staticlibs.patch | 29 ++++++++++++++++++++++++++++ pacman/PKGBUILD | 11 +++++++---- 2 files changed, 36 insertions(+), 4 deletions(-) create mode 100644 pacman/0021-fix-lto-staticlibs.patch diff --git a/pacman/0021-fix-lto-staticlibs.patch b/pacman/0021-fix-lto-staticlibs.patch new file mode 100644 index 00000000..29f5a5fa --- /dev/null +++ b/pacman/0021-fix-lto-staticlibs.patch @@ -0,0 +1,29 @@ +From f578b472aa42851f8a142de20cd8c70664c60248 Mon Sep 17 00:00:00 2001 +From: Mehdi Chinoune +Date: Sat, 13 Nov 2021 08:27:49 +0100 +Subject: [PATCH] Fix building staticlibs with LTO + +Unless `-ffat-lto-objects` get passed to the compiler, It will only generate LTO bytecode. + +see: +https://wiki.ubuntu.com/ToolChain/LTO : Implementation +https://fedoraproject.org/wiki/Changes/LTOBuildImprovements +--- + scripts/libmakepkg/buildenv/lto.sh.in | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/scripts/libmakepkg/buildenv/lto.sh.in b/scripts/libmakepkg/buildenv/lto.sh.in +index 8e7be66a5..c216a24fa 100644 +--- a/scripts/libmakepkg/buildenv/lto.sh.in ++++ b/scripts/libmakepkg/buildenv/lto.sh.in +@@ -33,5 +33,10 @@ buildenv_lto() { + if check_option "lto" "y"; then + CFLAGS+=" -flto" + CXXFLAGS+=" -flto" ++ LDFLAGS+=" -flto" ++ if check_option "staticlibs" "y"; then ++ CFLAGS+=" -ffat-lto-objects" ++ CXXFLAGS+=" -ffat-lto-objects" ++ fi + fi + } diff --git a/pacman/PKGBUILD b/pacman/PKGBUILD index d8519bcc..ef06a3ee 100644 --- a/pacman/PKGBUILD +++ b/pacman/PKGBUILD @@ -4,7 +4,7 @@ pkgname=pacman pkgver=6.0.1 -pkgrel=6 +pkgrel=7 pkgdesc="A library-based package manager with dependency support (MSYS2 port)" arch=('i686' 'x86_64') url="https://www.archlinux.org/pacman/" @@ -61,7 +61,8 @@ source=(pacman-${pkgver}::git+https://gitlab.archlinux.org/pacman/pacman.git#com 0017-Export-CC-and-CXX-variables-explicitly.patch 0018-pacman.c-handle-cr-on-stdin-as-well.patch 0019-Add-a-CI-job.patch - 0020-Strip-static-libraries-as-well.patch) + 0020-Strip-static-libraries-as-well.patch + 0021-fix-lto-staticlibs.patch) validpgpkeys=('6645B0A8C7005E78DB1D7864F99FFE0FEAE999BD' # Allan McRae 'B8151B117037781095514CA7BBDFFC92306B1121') # Andrew Gregory (pacman) sha256sums=('SKIP' @@ -88,7 +89,8 @@ sha256sums=('SKIP' '5029415842e9c51dd8aa6e380636316cf3f8f2b3ef0ae3f9430658213cb56a2a' '0ac2184c8419041f2948517a1c8b66ed740cf0bb1ac5856b384008495317e87b' '17604e359cbc1666b678359a5f46b5f822ca0d3a62c6c672b74d45399d78ab5e' - '7e1b6df6806a62e69ec072188bb5fdc6575d030e7ac140cee191d0fdf78454a5') + '7e1b6df6806a62e69ec072188bb5fdc6575d030e7ac140cee191d0fdf78454a5' + '45dadd786e1dd64fda7cff3efcf2f5e0b873b2a80b42a41a21448686b4db0fe6') apply_git_am_with_msg() { for _patch in "$@" @@ -124,7 +126,8 @@ prepare() { 0017-Export-CC-and-CXX-variables-explicitly.patch \ 0018-pacman.c-handle-cr-on-stdin-as-well.patch \ 0019-Add-a-CI-job.patch \ - 0020-Strip-static-libraries-as-well.patch + 0020-Strip-static-libraries-as-well.patch \ + 0021-fix-lto-staticlibs.patch } build() {