Upgrade to abseil-cpp/20260526.0#112
Draft
matthewtlam wants to merge 1 commit into
Draft
Conversation
abseil-cpp/20260526.0 has two BCR packaging issues that need local workarounds, plus it introduced breaking API changes that required upgrading the rest of the dependency stack. BCR issues fixed via a local registry (registry/): - Missing `compatibility_level = 1` in the BCR MODULE.bazel entry (field defaults to 0, causing Bazel's MVS to reject it). - Removed `absl/utility:if_constexpr` compat shim (added back via a source patch), still referenced by the protobuf 29 build graph. API breaking changes required upgrading the whole dep stack: - `absl::Nonnull<T>` template alias removed (replaced by `absl_nonnull` attribute); fuzztest 20241028.0 used the old form → bump to 20260219.0. - `absl/random/bit_gen_ref.h` dropped its transitive include of `absl/random/internal/distribution_caller.h`; fuzztest 20260219.0's `fuzzing_bit_gen.h` relied on that → patch adds forward declarations. - gutil 20250502.0 pulled in grpc/googleapis, whose older protobuf usage was incompatible with the required protobuf upgrade → bump gutil to 20260309.0.bcr.1 (which dropped grpc and targets protobuf 33.5). Dep versions changed: abseil-cpp 20240722.0 -> 20260526.0 protobuf 29.0 -> 33.5 gutil 20250502.0 -> 20260309.0.bcr.1 re2 2024-07-02.bcr.1 -> 2025-11-05.bcr.1 googletest 1.15.2 -> 1.17.0.bcr.2 fuzztest 20241028.0 -> 20260219.0 benchmark 1.9.4 -> 1.9.5 All 17 tests pass. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Upgrades the Bazel dependency graph to
abseil-cpp/20260526.0(from20240722.0), along with all transitive deps that needed to move to keep up.What changed
abseil-cpp:20240722.0→20260526.0protobuf:29.0→33.5gutil:20250502.0→20260309.0.bcr.1(dropped grpc dependency)re2:2024-07-02.bcr.1→2025-11-05.bcr.1googletest:1.15.2→1.17.0.bcr.2fuzztest:20241028.0→20260219.0google_benchmark:1.9.4→1.9.5All 17 tests pass.
Non-obvious workarounds
Three separate categories of issues required patches or workarounds:
1. BCR packaging bug: missing
compatibility_levelThe BCR entry for
abseil-cpp/20260526.0omitscompatibility_level = 1(defaulting to 0), which makes Bazel's MVS treat it as incompatible with any module that declared a dep on an earlier abseil version atcompatibility_level = 1. This causes a hard resolution failure.Fixed by adding a local Bazel registry (
registry/) with a correctedMODULE.bazelfor abseil, prepended via.bazelrc:2. BCR packaging bug: missing
absl/utility:if_constexprabseil-cpp/20260526.0removedabsl/utility:if_constexpr(a pre-C++17 compatibility shim). Protobuf 29 still referenced it, but upgrading protobuf to 30 brokegutil(which requirespy_proto_library, removed in protobuf 30). The fix was to add the header and Bazel target back via a source patch in the local registry (registry/modules/abseil-cpp/20260526.0/patches/if_constexpr_compat.patch), restoring backward compatibility without touching protobuf.3. Layering cleanup: removed transitive include in
absl/random/bit_gen_ref.habseil-cpp/20260526.0removed a transitive include ofabsl/random/internal/distribution_caller.hfrombit_gen_ref.h.fuzztest/20260219.0'sfuzzing_bit_gen.hhadfrienddeclarations forabsl::random_internal::DistributionCallerandabsl::random_internal::MockHelpersthat relied on this transitive exposure. Adding explicit#includeordepswasn't viable (those targets have package-private visibility in abseil). Fixed by forward-declaring the two types directly infuzzing_bit_gen.hvia asingle_version_overridepatch (patches/fuzztest_20260219.0_abseil_random_internal_compat.patch).