Skip to content

protobuf: conflict with abseil-cpp@20250512: for @26:29 - #6070

Open
zackgalbreath wants to merge 1 commit into
spack:developfrom
zackgalbreath:protobuf_abseil_cxx17
Open

protobuf: conflict with abseil-cpp@20250512: for @26:29#6070
zackgalbreath wants to merge 1 commit into
spack:developfrom
zackgalbreath:protobuf_abseil_cxx17

Conversation

@zackgalbreath

@zackgalbreath zackgalbreath commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

The absl::if_constexpr target was removed in the 20250512 release of abseil-cpp. protobuf attempts to link to it in versions 26:29

@spackbot-triage spackbot-triage Bot added update-package Modifications to packages in the repository conflicts Modifications with a `conflicts()` directive labels Aug 12, 2026
@spackbot-triage
spackbot-triage Bot requested a review from hyoklee August 12, 2026 22:41
bernhardkaindl
bernhardkaindl previously approved these changes Aug 13, 2026

@bernhardkaindl bernhardkaindl left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@zackgalbreath, a nitpick would be that protobuf@23:25 ^abseil-cpp@20260107.1 are building (at least with gcc@14 and gcc@16):

spack find protobuf@:29 +shared ^abseil-cpp@20260107.1
-- linux-ubuntu24.04-x86_64_v4 / %c,cxx=gcc@14.3.0 --------------
protobuf@23.3  protobuf@24.3  protobuf@25.3

-- linux-ubuntu24.04-x86_64_v4 / %c,cxx=gcc@16.0.1 --------------
protobuf@23.3  protobuf@24.3  protobuf@25.3
==> 6 installed packages

Below protobuf@23, there are older errors. Because these are older versions, I refrain from suggesting to add a special exception for them just to allow them to use ^abseil-cpp@20260107.1. I'd assume the older versions could be deprecated, but that would be separate discussion, I guess.

@bernhardkaindl

bernhardkaindl commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Besides the approved conflict on abseil-cpp@20250512: for @:29, these are the gcc version conflicts I found:

    # GCC version limits of older protobuf versions:
    conflicts("%gcc@15:", when="@22.2 +shared")  # single release broken for gcc >= 15
    conflicts("%gcc@13:", when="@:3.2.0 +shared")
    conflicts("%gcc@11:", when="@:3.1.0 +shared")

They can be added in a separate PR of course and are for much older versions only. These are my 189 builds of protobuf grouped by compiler version, not every entry is covered, but the edges of what builds are covered (it's a wide table,

spack find protobuf # ("protobuf@" removed to not be a wide table):
-- linux-ubuntu24.04-x86_64_v4 / %c,cxx=gcc@10.5.0 --------------
3.0.2  3.1.0  3.2.0  3.3.0  3.4.0  3.4.1  3.5.0

-- linux-ubuntu24.04-x86_64_v4 / %c,cxx=gcc@11.5.0 --------------
3.5.0.1  3.5.2  3.7.1  3.9.2   3.11.0  3.11.3  3.12.1
3.5.1    3.6.1  3.8.0  3.10.0  3.11.1  3.11.4  3.12.3
3.5.1.1  3.7.0  3.9.1  3.10.1  3.11.2  3.12.0

-- linux-ubuntu24.04-x86_64_v4 / %c,cxx=gcc@12.4.0 --------------
3.3.0  3.4.1  3.5.0.1  3.5.1.1  3.6.1  3.14.0  3.15.1  21.12
3.4.0  3.5.0  3.5.1    3.5.2    3.7.0  3.15.0  3.15.2

-- linux-ubuntu24.04-x86_64_v4 / %c,cxx=gcc@13.3.0 --------------
3.3.0    3.9.1   3.11.3  3.14.0  3.15.4  3.18.0  3.20.2  21.7
3.4.0    3.9.2   3.11.4  3.15.0  3.15.4  3.18.2  3.20.3  21.9
3.4.1    3.10.0  3.12.0  3.15.0  3.15.5  3.19.2  21.1    21.12
3.5.0    3.10.1  3.12.1  3.15.1  3.15.7  3.19.3  21.2    21.12
3.5.0.1  3.11.0  3.12.2  3.15.1  3.16.0  3.19.4  21.3    22.2
3.5.1    3.11.1  3.12.3  3.15.2  3.17.0  3.20.0  21.4    22.2
3.8.0    3.11.2  3.13.0  3.15.2  3.17.3  3.20.1  21.5

-- linux-ubuntu24.04-x86_64_v4 / %c,cxx=gcc@14.3.0 --------------
3.3.0  3.4.1  21.12  23.3  25.3  33.1  34.1
3.4.0  21.9   22.2   24.3  33.0  34.0

-- linux-ubuntu24.04-x86_64_v4 / %c,cxx=gcc@15.2.0 --------------
3.3.0  3.4.0  3.4.1  21.4  21.5  21.7  21.9  21.12  28.2

-- linux-ubuntu24.04-x86_64_v4 / %c,cxx=gcc@16.0.1 --------------
3.3.0    3.7.0   3.11.2  3.15.4  3.19.3  21.4   25.3  32.1
3.4.0    3.7.1   3.11.3  3.15.5  3.19.4  21.5   25.3  33.0
3.4.1    3.8.0   3.11.4  3.15.7  3.20.0  21.7   26.1  33.1
3.5.0    3.9.1   3.12.0  3.16.0  3.20.1  21.9   27.5  34.0
3.5.0.1  3.9.2   3.12.1  3.17.0  3.20.2  21.12  28.2  34.1
3.5.1    3.10.0  3.12.2  3.17.3  3.20.3  23.3   28.3
3.5.1.1  3.10.1  3.15.0  3.18.0  21.1    23.3   29.3
3.5.2    3.11.0  3.15.1  3.18.2  21.2    24.3   30.2
3.6.1    3.11.1  3.15.2  3.19.2  21.3    24.3   31.1

-- linux-ubuntu24.04-x86_64_v4 / %c,cxx=rocmcc@7.2.3 ------------
3.12.2  3.13.0
==> 189 installed packages

The `absl::if_constexpr` target was removed in the 20250512 release
of abseil-cpp. protobuf attempts to link to it in versions 26:29

Signed-off-by: Zack Galbreath <zack.galbreath@kitware.com>
@zackgalbreath

Copy link
Copy Markdown
Contributor Author

protobuf@23:25 ^abseil-cpp@20260107.1 are building (at least with gcc@14 and gcc@16):

You're right, thanks for pointing this out. I took a closer look and I found that protobuf v26 - v29 link against absl::if_constexpr. I updated this PR accordingly.

@zackgalbreath zackgalbreath changed the title protobuf: conflict with abseil-cpp@20250512: for @:29 protobuf: conflict with abseil-cpp@20250512: for @26:29 Aug 13, 2026
@bernhardkaindl

bernhardkaindl commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Ack, approved, no further concerns from my side.

As a hint: With other errors (I guess related to not supported cxxstd or so), versions below 23 ("protobuf@:22") also don't compile with ^abseil-cpp@20260107.1 (maybe related: the abseil-cpp recipe sets cxxstd=17 for it) - at least with the gcc version (14 or 16) I used. I assume these might be candidates for deprecation, but I leave that to the experts. 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

conflicts Modifications with a `conflicts()` directive update-package Modifications to packages in the repository

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants