commit:     f2c3eeb37e01593c2b3d662745b817695dbe1dd3
Author:     Eli Schwartz <eschwartz <AT> gentoo <DOT> org>
AuthorDate: Tue Jun 17 16:24:50 2025 +0000
Commit:     Eli Schwartz <eschwartz <AT> gentoo <DOT> org>
CommitDate: Tue Jun 17 19:04:11 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f2c3eeb3

dev-libs/protobuf: use dot-a.eclass

... to avoid installing broken static libraries w/ LTO.

Only libupb installs a static library. dot-a works by adding
-ffat-lto-objects, which builds everything twice, so -- just like for
packages which have USE=static-libs -- we skip using it based on USE
conditions.

Closes: https://bugs.gentoo.org/958064
Acked-by: Paul Zander <negril.nx+gentoo <AT> gmail.com>
Signed-off-by: Eli Schwartz <eschwartz <AT> gentoo.org>

 dev-libs/protobuf/protobuf-27.5.ebuild | 7 ++++++-
 dev-libs/protobuf/protobuf-28.0.ebuild | 7 ++++++-
 dev-libs/protobuf/protobuf-29.4.ebuild | 7 ++++++-
 dev-libs/protobuf/protobuf-30.2.ebuild | 7 ++++++-
 dev-libs/protobuf/protobuf-31.1.ebuild | 7 ++++++-
 5 files changed, 30 insertions(+), 5 deletions(-)

diff --git a/dev-libs/protobuf/protobuf-27.5.ebuild 
b/dev-libs/protobuf/protobuf-27.5.ebuild
index 3c5e73019120..16f078b651a7 100644
--- a/dev-libs/protobuf/protobuf-27.5.ebuild
+++ b/dev-libs/protobuf/protobuf-27.5.ebuild
@@ -3,7 +3,7 @@
 
 EAPI=8
 
-inherit cmake-multilib elisp-common multilib
+inherit cmake-multilib dot-a elisp-common multilib
 
 # NOTE from https://github.com/protocolbuffers/protobuf/blob/main/.gitmodules
 ABSEIL_BRANCH="lts_2023_08_02"
@@ -76,6 +76,10 @@ src_prepare() {
 }
 
 multilib_src_configure() {
+       # Currently, the only static library is libupb (and there is no
+       # USE=static-libs), so optimize away the fat-lto build time penalty.
+       use libupb && lto-guarantee-fat
+
        local mycmakeargs=(
                -Dprotobuf_ABSL_PROVIDER="package"
                -Dprotobuf_JSONCPP_PROVIDER="package"
@@ -135,6 +139,7 @@ src_test() {
 }
 
 multilib_src_install_all() {
+       use libupb && strip-lto-bytecode
        find "${ED}" -name "*.la" -delete || die
 
        if [[ ! -f "${ED}/usr/$(get_libdir)/libprotobuf$(get_libname 
${SLOT#*/})" ]]; then

diff --git a/dev-libs/protobuf/protobuf-28.0.ebuild 
b/dev-libs/protobuf/protobuf-28.0.ebuild
index 2621d4f7ba83..432576d6396c 100644
--- a/dev-libs/protobuf/protobuf-28.0.ebuild
+++ b/dev-libs/protobuf/protobuf-28.0.ebuild
@@ -3,7 +3,7 @@
 
 EAPI=8
 
-inherit cmake-multilib elisp-common multilib
+inherit cmake-multilib dot-a elisp-common multilib
 
 # NOTE from https://github.com/protocolbuffers/protobuf/blob/main/.gitmodules
 ABSEIL_BRANCH="lts_2023_08_02"
@@ -78,6 +78,10 @@ src_prepare() {
 }
 
 multilib_src_configure() {
+       # Currently, the only static library is libupb (and there is no
+       # USE=static-libs), so optimize away the fat-lto build time penalty.
+       use libupb && lto-guarantee-fat
+
        local mycmakeargs=(
                -Dprotobuf_ABSL_PROVIDER="package"
                -Dprotobuf_JSONCPP_PROVIDER="package"
@@ -138,6 +142,7 @@ src_test() {
 }
 
 multilib_src_install_all() {
+       use libupb && strip-lto-bytecode
        find "${ED}" -name "*.la" -delete || die
 
        if [[ ! -f "${ED}/usr/$(get_libdir)/libprotobuf$(get_libname 
${SLOT#*/})" ]]; then

diff --git a/dev-libs/protobuf/protobuf-29.4.ebuild 
b/dev-libs/protobuf/protobuf-29.4.ebuild
index 1d23dc9b0ce9..ea46bda56419 100644
--- a/dev-libs/protobuf/protobuf-29.4.ebuild
+++ b/dev-libs/protobuf/protobuf-29.4.ebuild
@@ -3,7 +3,7 @@
 
 EAPI=8
 
-inherit cmake-multilib elisp-common multilib
+inherit cmake-multilib dot-a elisp-common multilib
 
 # NOTE from https://github.com/protocolbuffers/protobuf/blob/main/.gitmodules
 ABSEIL_BRANCH="lts_2023_08_02"
@@ -80,6 +80,10 @@ src_prepare() {
 }
 
 multilib_src_configure() {
+       # Currently, the only static library is libupb (and there is no
+       # USE=static-libs), so optimize away the fat-lto build time penalty.
+       use libupb && lto-guarantee-fat
+
        local mycmakeargs=(
                -Dprotobuf_ABSL_PROVIDER="package"
                -Dprotobuf_JSONCPP_PROVIDER="package"
@@ -147,6 +151,7 @@ src_test() {
 }
 
 multilib_src_install_all() {
+       use libupb && strip-lto-bytecode
        find "${ED}" -name "*.la" -delete || die
 
        if [[ ! -f "${ED}/usr/$(get_libdir)/libprotobuf$(get_libname 
${SLOT#*/})" ]]; then

diff --git a/dev-libs/protobuf/protobuf-30.2.ebuild 
b/dev-libs/protobuf/protobuf-30.2.ebuild
index 4b1ed75bf6ee..7f6d90ae5901 100644
--- a/dev-libs/protobuf/protobuf-30.2.ebuild
+++ b/dev-libs/protobuf/protobuf-30.2.ebuild
@@ -3,7 +3,7 @@
 
 EAPI=8
 
-inherit cmake-multilib elisp-common multilib
+inherit cmake-multilib dot-a elisp-common multilib
 
 # NOTE from 
https://github.com/protocolbuffers/protobuf/blob/main/cmake/dependencies.cmake
 ABSEIL_MIN_VER="20250127.0"
@@ -77,6 +77,10 @@ src_prepare() {
 }
 
 multilib_src_configure() {
+       # Currently, the only static library is libupb (and there is no
+       # USE=static-libs), so optimize away the fat-lto build time penalty.
+       use libupb && lto-guarantee-fat
+
        local mycmakeargs=(
                -Dprotobuf_BUILD_CONFORMANCE="$(usex test "$(usex 
conformance)")"
                -Dprotobuf_BUILD_LIBPROTOC="$(usex libprotoc)"
@@ -143,6 +147,7 @@ src_test() {
 }
 
 multilib_src_install_all() {
+       use libupb && strip-lto-bytecode
        find "${ED}" -name "*.la" -delete || die
 
        if [[ ! -f "${ED}/usr/$(get_libdir)/libprotobuf$(get_libname 
"${SLOT#*/}")" ]]; then

diff --git a/dev-libs/protobuf/protobuf-31.1.ebuild 
b/dev-libs/protobuf/protobuf-31.1.ebuild
index 71bf1e316dd2..dbfa1f78724d 100644
--- a/dev-libs/protobuf/protobuf-31.1.ebuild
+++ b/dev-libs/protobuf/protobuf-31.1.ebuild
@@ -3,7 +3,7 @@
 
 EAPI=8
 
-inherit cmake-multilib elisp-common multilib
+inherit cmake-multilib dot-a elisp-common multilib
 
 # NOTE from 
https://github.com/protocolbuffers/protobuf/blob/main/cmake/dependencies.cmake
 ABSEIL_MIN_VER="20250127.0"
@@ -77,6 +77,10 @@ src_prepare() {
 }
 
 multilib_src_configure() {
+       # Currently, the only static library is libupb (and there is no
+       # USE=static-libs), so optimize away the fat-lto build time penalty.
+       use libupb && lto-guarantee-fat
+
        local mycmakeargs=(
                -Dprotobuf_BUILD_CONFORMANCE="$(usex test "$(usex 
conformance)")"
                -Dprotobuf_BUILD_LIBPROTOC="$(usex libprotoc)"
@@ -143,6 +147,7 @@ src_test() {
 }
 
 multilib_src_install_all() {
+       use libupb && strip-lto-bytecode
        find "${ED}" -name "*.la" -delete || die
 
        if [[ ! -f "${ED}/usr/$(get_libdir)/libprotobuf$(get_libname 
"${SLOT#*/}")" ]]; then

Reply via email to