Add Bazel9 test

#test-continuous

PiperOrigin-RevId: 908263056
This commit is contained in:
Jie Luo 2026-04-30 10:50:28 -07:00 committed by Copybara-Service
parent 5be0a43cd6
commit 90ad7e9788
20 changed files with 123 additions and 344 deletions

View file

@ -1 +1 @@
USE_BAZEL_VERSION=8.0.1
USE_BAZEL_VERSION=8.6.0

View file

@ -3,6 +3,11 @@ build --cxxopt=-std=c++17 --host_cxxopt=-std=c++17
# TODO: ErrorProne's SelfAssertions are violated in protobuf's test
build --javacopt=-Xep:SelfAssertion:WARN
# Disable prebuilt protoc on CI. On both main and release branches,
# PROTOBUF_VERSION ordinarily points to the next release, which doesn't
# exist and therefore doesn't have a prebuilt yet.
#build --@com_google_protobuf//bazel/toolchains:prefer_prebuilt_protoc=false
# This flag works around some issues with Rust linking.
build --@rules_rust//rust/settings:experimental_use_cc_common_link=True
@ -39,5 +44,10 @@ common --enable_platform_specific_config
common --incompatible_check_testonly_for_output_files
# Import Bazel 9 specific flags (such as --repo_contents_cache)
# TODO: Remove it when --repo_contents_cache issue
# has been resolved in bazel
try-import-if-bazel-version >=9.0.0 %workspace%/ci/bazel9.bazelrc
# Use clang-cl by default on Windows (see https://github.com/protocolbuffers/protobuf/issues/20085).
build:windows --extra_toolchains=@local_config_cc//:cc-toolchain-x64_windows-clang-cl --extra_execution_platforms=//build_defs:x64_windows-clang-cl --host_platform=//build_defs:x64_windows-clang-cl

View file

@ -27,7 +27,7 @@ jobs:
fail-fast: false
matrix:
runner: [ ubuntu, windows, macos ]
bazelversion: [ '8.0.0' ]
bazelversion: [ '8.6.0', '9.0.0' ]
bzlmod: [ true, false ]
toolchain_resolution:
# Default flags, uses from prebuilt protoc
@ -36,6 +36,9 @@ jobs:
- "--incompatible_enable_proto_toolchain_resolution=false"
# Uses protoc from source.
- "--@com_google_protobuf//bazel/flags:prefer_prebuilt_protoc=false"
exclude:
- bazelversion: '9.0.0'
bzlmod: false
runs-on: ${{ matrix.runner }}-latest
name: ${{ matrix.continuous-only && inputs.continuous-prefix || '' }} Examples ${{ matrix.runner }} ${{ matrix.bazelversion }}${{ matrix.bzlmod && ' (bzlmod)' || '' }} ${{ matrix.toolchain_resolution && ' (toolchain resolution)' || '' }}
steps:
@ -84,7 +87,7 @@ jobs:
fail-fast: false
matrix:
runner: [ ubuntu, windows, macos ]
bazelversion: [ '8.0.0' ]
bazelversion: [ '8.6.0', '9.0.0' ]
bzlmod: [ true ]
toolchain_resolution:
# Default flags, uses from prebuilt protoc
@ -122,7 +125,7 @@ jobs:
- name: Run tests
uses: protocolbuffers/protobuf-ci/bazel-docker@v5
with:
image: us-docker.pkg.dev/protobuf-build/containers/common/linux/bazel:8.0.1-d415763a389bb62a6f126b08c992e83f9f7dc1b4
image: us-docker.pkg.dev/protobuf-build/containers/common/linux/bazel:9.0.0-7932bf8b25fb76a111e7257d151a6a58d5c3c671
credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }}
bazel-cache: "bazel-tests"
bazel: test //bazel/...
@ -145,4 +148,4 @@ jobs:
credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }}
bazel-cache: "bazel-tests-${{ matrix.runner }}"
bazel: test //bazel/...
version: 8.0.1
version: 8.6.0

View file

@ -44,6 +44,10 @@ jobs:
cache_key: Bazel8
image: "us-docker.pkg.dev/protobuf-build/containers/common/linux/bazel:8.0.1-d415763a389bb62a6f126b08c992e83f9f7dc1b4"
targets: "//src/... //third_party/utf8_range/..."
- config: { name: "Bazel9", flags: "--cxxopt=-Wno-self-assign-overloaded" }
cache_key: Bazel9
image: "us-docker.pkg.dev/protobuf-build/containers/common/linux/bazel:9.0.0-7932bf8b25fb76a111e7257d151a6a58d5c3c671"
targets: "//src/... //third_party/utf8_range/..."
- config: { name: "TCMalloc" }
cache_key: TcMalloc
image: "us-docker.pkg.dev/protobuf-build/containers/test/linux/tcmalloc:8.0.1-d415763a389bb62a6f126b08c992e83f9f7dc1b4"

View file

@ -30,23 +30,27 @@ jobs:
include:
- name: OpenJDK 8
cache_key: '8'
image: us-docker.pkg.dev/protobuf-build/containers/test/linux/java:8.0.1-8-b77fdae6d4771789dfc66a56bf8d806354e8011a
image: us-docker.pkg.dev/protobuf-build/containers/test/linux/java:9.0.0-11-1c31a2985011c75c33dcdf646fc86898aac1ec5d
# TODO: b/318555165 - enable the layering check. Currently it does
# not work correctly with the toolchain in this Docker image.
targets: //java/... //java/internal:java_version --features=-layering_check
flags: --java_language_version=8
- name: OpenJDK 11
cache_key: '11'
image: us-docker.pkg.dev/protobuf-build/containers/test/linux/java:8.0.1-11-b77fdae6d4771789dfc66a56bf8d806354e8011a
image: us-docker.pkg.dev/protobuf-build/containers/test/linux/java:9.0.0-11-1c31a2985011c75c33dcdf646fc86898aac1ec5d
targets: //java/... //java/internal:java_version //compatibility/...
continuous-only: true
- name: OpenJDK 17
cache_key: '17'
image: us-docker.pkg.dev/protobuf-build/containers/test/linux/java:8.0.1-17-168f9c9d015a0fa16611e1e9eede796fe9bfbb69
image: us-docker.pkg.dev/protobuf-build/containers/test/linux/java:9.0.0-17-1c31a2985011c75c33dcdf646fc86898aac1ec5d
targets: //java/... //java/internal:java_version //compatibility/...
- name: OpenJDK 21 bazel 8
cache_key: 'bazel8'
image: us-docker.pkg.dev/protobuf-build/containers/test/linux/java:8.6.0-21-856ad422dddd3b8fbd85e36129496b37bba174ef
targets: //java/... //java/internal:java_version //compatibility/...
- name: OpenJDK 21
cache_key: '21'
image: us-docker.pkg.dev/protobuf-build/containers/test/linux/java:8.0.1-21-7932bf8b25fb76a111e7257d151a6a58d5c3c671
image: us-docker.pkg.dev/protobuf-build/containers/test/linux/java:9.0.0-21-1c31a2985011c75c33dcdf646fc86898aac1ec5d
targets: //java/... //java/internal:java_version //compatibility/...
# TODO: b/395623141 - restore this test once runtime uses / emulates aarch64.
# - name: aarch64
@ -101,7 +105,7 @@ jobs:
- name: Generate maven artifacts with bazel and install using maven
uses: protocolbuffers/protobuf-ci/bazel-docker@v5
with:
image: us-docker.pkg.dev/protobuf-build/containers/test/linux/java:8.0.1-11-b77fdae6d4771789dfc66a56bf8d806354e8011a
image: us-docker.pkg.dev/protobuf-build/containers/test/linux/java:9.0.0-11-1c31a2985011c75c33dcdf646fc86898aac1ec5d
credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }}
bazel-cache: java_linux/11
bash: |

View file

@ -35,12 +35,14 @@ jobs:
- { name: Ruby 3.2, ruby: ruby-3.2.6, continuous-only: true }
- { name: Ruby 3.3, ruby: ruby-3.3.6, continuous-only: true }
- { name: Ruby 3.4, ruby: ruby-3.4.1, continuous-only: true }
# TODO: Remove the image property in the two entries below and update the configuration
# used by all the images the next time there is an update to the Dockerfile
- { name: Ruby 4.0, ruby: ruby-4.0.0, ffi: NATIVE, image: 'us-docker.pkg.dev/protobuf-build/containers/test/linux/ruby:8.0.1-ruby-4.0.0-f1c24ed6acfbf6ec709b0de2f702209c9d3ac659' }
- { name: Ruby 4.0, ruby: ruby-4.0.0, ffi: FFI, image: 'us-docker.pkg.dev/protobuf-build/containers/test/linux/ruby:8.0.1-ruby-4.0.0-f1c24ed6acfbf6ec709b0de2f702209c9d3ac659' }
- { name: Ruby 4.0, ruby: ruby-4.0.0, ffi: NATIVE }
- { name: Ruby 4.0, ruby: ruby-4.0.0, ffi: FFI }
- { name: Ruby 4.0 bazel 8, ruby: ruby-4.0.0, ffi: NATIVE, image: 'us-docker.pkg.dev/protobuf-build/containers/test/linux/ruby:8.6.0-ruby-4.0.0-856ad422dddd3b8fbd85e36129496b37bba174ef' }
- { name: Ruby 4.0 bazel 8, ruby: ruby-4.4.4, ffi: FFI, image: 'us-docker.pkg.dev/protobuf-build/containers/test/linux/ruby:8.6.0-ruby-4.0.0-856ad422dddd3b8fbd85e36129496b37bba174ef' }
- { name: JRuby 9.4, ruby: jruby-9.4.9.0, ffi: NATIVE }
- { name: JRuby 9.4, ruby: jruby-9.4.9.0, ffi: FFI }
- { name: JRuby 9.4 bazel 8, ruby: jruby-9.4.9.0, ffi: NATIVE, image: 'us-docker.pkg.dev/protobuf-build/containers/test/linux/ruby:8.6.0-jruby-9.4.9.0-856ad422dddd3b8fbd85e36129496b37bba174ef' }
- { name: JRuby 9.4 bazel 8, ruby: jruby-9.4.9.0, ffi: FFI, image: 'us-docker.pkg.dev/protobuf-build/containers/test/linux/ruby:8.6.0-jruby-9.4.9.0-856ad422dddd3b8fbd85e36129496b37bba174ef' }
name: ${{ matrix.continuous-only && inputs.continuous-prefix || '' }} Linux ${{ matrix.name }} ${{ matrix.ffi == 'FFI' && ' FFI' || '' }}
runs-on: ubuntu-latest
@ -54,7 +56,7 @@ jobs:
if: ${{ !matrix.continuous-only || inputs.continuous-run }}
uses: protocolbuffers/protobuf-ci/bazel-docker@v5
with:
image: ${{ matrix.image || format('us-docker.pkg.dev/protobuf-build/containers/test/linux/ruby:8.0.1-{0}-b77fdae6d4771789dfc66a56bf8d806354e8011a', matrix.ruby) }}
image: ${{ matrix.image || format('us-docker.pkg.dev/protobuf-build/containers/test/linux/ruby:9.0.0-{0}-9fc33a0c378b5affd3c85d3f5ae4f330993048f7', matrix.ruby) }}
credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }}
bazel-cache: ruby_linux/${{ matrix.ruby }}
bazel: test //ruby/... //ruby/tests:ruby_version --test_env=KOKORO_RUBY_VERSION --test_env=BAZEL=true ${{ matrix.ffi == 'FFI' && '--//ruby:ffi=enabled --test_env=PROTOCOL_BUFFERS_RUBY_IMPLEMENTATION=FFI' || '' }}
@ -172,7 +174,7 @@ jobs:
if: ${{ !matrix.continuous-only || inputs.continuous-run }}
uses: protocolbuffers/protobuf-ci/bazel@v5
with:
version: 8.0.1 # Bazel version
version: 9.0.0 # Bazel version
credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }}
bazel-cache: ruby_macos/${{ matrix.version }}
bazel: test //ruby/... --test_env=KOKORO_RUBY_VERSION=${{ matrix.version }} --test_env=BAZEL=true ${{ matrix.ffi == 'FFI' && '--//ruby:ffi=enabled --test_env=PROTOCOL_BUFFERS_RUBY_IMPLEMENTATION=FFI' || '' }}
@ -187,13 +189,17 @@ jobs:
# Ruby versions for CRuby and JRuby.
- { name: Ruby 3.1, ruby: ruby-3.1.6, ffi: NATIVE }
- { name: Ruby 3.1, ruby: ruby-3.1.6, ffi: FFI }
- { name: Ruby 3.2, ruby: ruby-3.2.6, continuous-only: true}
- { name: Ruby 3.3, ruby: ruby-3.3.6, continuous-only: true}
- { name: Ruby 3.2, ruby: ruby-3.2.6, continuous-only: true }
- { name: Ruby 3.3, ruby: ruby-3.3.6, continuous-only: true }
- { name: Ruby 3.4, ruby: ruby-3.4.1, continuous-only: true }
- { name: Ruby 4.0, ruby: ruby-4.0.0, ffi: NATIVE, image: 'us-docker.pkg.dev/protobuf-build/containers/test/linux/ruby:8.0.1-ruby-4.0.0-f1c24ed6acfbf6ec709b0de2f702209c9d3ac659' }
- { name: Ruby 4.0, ruby: ruby-4.0.0, ffi: FFI, image: 'us-docker.pkg.dev/protobuf-build/containers/test/linux/ruby:8.0.1-ruby-4.0.0-f1c24ed6acfbf6ec709b0de2f702209c9d3ac659' }
- { name: Ruby 4.0, ruby: ruby-4.0.0, ffi: NATIVE }
- { name: Ruby 4.0, ruby: ruby-4.0.0, ffi: FFI }
- { name: Ruby 4.0 bazel 8, ruby: ruby-4.0.0, ffi: NATIVE, image: 'us-docker.pkg.dev/protobuf-build/containers/test/linux/ruby:8.6.0-ruby-4.0.0-856ad422dddd3b8fbd85e36129496b37bba174ef' }
- { name: Ruby 4.0 bazel 8, ruby: ruby-4.4.4, ffi: FFI, image: 'us-docker.pkg.dev/protobuf-build/containers/test/linux/ruby:8.6.0-ruby-4.0.0-856ad422dddd3b8fbd85e36129496b37bba174ef' }
- { name: JRuby 9.4, ruby: jruby-9.4.9.0, ffi: NATIVE }
- { name: JRuby 9.4, ruby: jruby-9.4.9.0, ffi: FFI, continuous-only: true }
- { name: JRuby 9.4 bazel 8, ruby: jruby-9.4.9.0, ffi: NATIVE, image: 'us-docker.pkg.dev/protobuf-build/containers/test/linux/ruby:8.6.0-jruby-9.4.9.0-856ad422dddd3b8fbd85e36129496b37bba174ef' }
- { name: JRuby 9.4 bazel 8, ruby: jruby-9.4.9.0, ffi: FFI, image: 'us-docker.pkg.dev/protobuf-build/containers/test/linux/ruby:8.6.0-jruby-9.4.9.0-856ad422dddd3b8fbd85e36129496b37bba174ef' }
name: ${{ matrix.continuous-only && inputs.continuous-prefix || '' }} Install ${{ matrix.name }}${{ matrix.ffi == 'FFI' && ' FFI' || '' }}
runs-on: ubuntu-latest
steps:
@ -206,14 +212,15 @@ jobs:
if: ${{ !matrix.continuous-only || inputs.continuous-run }}
uses: protocolbuffers/protobuf-ci/bazel-docker@v5
with:
image: ${{ matrix.image || format('us-docker.pkg.dev/protobuf-build/containers/test/linux/ruby:8.0.1-{0}-b77fdae6d4771789dfc66a56bf8d806354e8011a', matrix.ruby) }}
image: ${{ matrix.image || format('us-docker.pkg.dev/protobuf-build/containers/test/linux/ruby:9.0.0-{0}-9fc33a0c378b5affd3c85d3f5ae4f330993048f7', matrix.ruby) }}
credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }}
bazel-cache: ruby_install/${{ matrix.ruby }}_${{ matrix.bazel }}
bash: >
bazel --version;
ruby --version;
./regenerate_stale_files.sh $BAZEL_FLAGS;
bazel build //ruby:release //:protoc ${{ matrix.ffi == 'FFI' && '--//ruby:ffi=enabled' || '' }} $BAZEL_FLAGS;
# TODO: Add --action_env=PATH to release builds before upgrade them to Bazel 9
bazel build //ruby:release //:protoc ${{ matrix.ffi == 'FFI' && '--//ruby:ffi=enabled' || '' }} --action_env=PATH $BAZEL_FLAGS;
gem install bazel-bin/ruby/google-protobuf-*;
bazel-bin/protoc --proto_path=src --proto_path=ruby/tests --proto_path=ruby --ruby_out=ruby tests/test_import_proto2.proto;
bazel-bin/protoc --proto_path=src --proto_path=ruby/tests --proto_path=ruby --ruby_out=ruby tests/basic_test.proto;

View file

@ -14,7 +14,7 @@ module(
# https://bazel.build/versions/6.0.0/build/bzlmod#version-resolution
# Thus the highest version in their module graph is resolved.
bazel_dep(name = "apple_support", version = "1.16.0", repo_name = "build_bazel_apple_support")
bazel_dep(name = "apple_support", version = "2.3.0", repo_name = "build_bazel_apple_support")
# Unused but must be pinned to avoid old broken versions
bazel_dep(name = "rules_proto", version = "7.1.0")
@ -33,14 +33,14 @@ bazel_dep(name = "zlib", version = "1.3.1.bcr.5")
# other dependencies
bazel_dep(name = "bazel_features", version = "1.33.0", repo_name = "proto_bazel_features")
bazel_dep(name = "bazel_skylib", version = "1.9.0")
bazel_dep(name = "jsoncpp", version = "1.9.6.bcr.1")
bazel_dep(name = "jsoncpp", version = "1.9.6.bcr.2")
bazel_dep(name = "rules_java", version = "8.6.1")
bazel_dep(name = "rules_jvm_external", version = "6.7")
bazel_dep(name = "rules_kotlin", version = "2.2.2")
bazel_dep(name = "rules_kotlin", version = "2.3.20")
bazel_dep(name = "rules_license", version = "1.0.0")
bazel_dep(name = "rules_pkg", version = "1.0.1")
bazel_dep(name = "rules_python", version = "1.6.0")
bazel_dep(name = "rules_rust", version = "0.63.0")
bazel_dep(name = "rules_rust", version = "0.69.0")
bazel_dep(name = "rules_ruby", version = "0.20.1", dev_dependency = True)
@ -307,17 +307,16 @@ archive_override(
urls = ["https://github.com/protocolbuffers/protobuf/releases/download/v25.0/protobuf-25.0.tar.gz"],
)
bazel_dep(name = "com_google_protobuf_previous_release", version = "29.0", dev_dependency = True)
bazel_dep(name = "com_google_protobuf_previous_release", version = "33.0", dev_dependency = True)
archive_override(
module_name = "com_google_protobuf_previous_release",
integrity = "sha256-EKDVjzmhqQnpXgDougtbHcZNApl/dBFRlTorNln254w=",
integrity = "sha256-y8U2BkcGtijc/lB77zhu8+IhTVY2V2EilvF4GqFV7gc=",
patch_strip = 1,
patches = [
"@com_google_protobuf//:patches/protobuf_v29/0001-Update-module-name.patch",
"@com_google_protobuf//:patches/protobuf_v29/0002-bazel9.patch",
"@com_google_protobuf//:patches/protobuf_v33/0001-Update-module-name.patch",
],
strip_prefix = "protobuf-29.0",
urls = ["https://github.com/protocolbuffers/protobuf/releases/download/v29.0/protobuf-29.0.tar.gz"],
strip_prefix = "protobuf-33.0",
urls = ["https://github.com/protocolbuffers/protobuf/releases/download/v33.0/protobuf-33.0.tar.gz"],
)
# Register C++ toolchains for cross-compilation. These are used for compiling release binaries of

View file

@ -19,7 +19,7 @@ def cc_toolchain_test_suite(name):
name = name,
tests = [
_test_cc_toolchain_uses_protoc_minimal_when_prefer_prebuilt_flag_unset,
_test_cc_toolchain_uses_full_protoc_by_default,
_test_cc_toolchain_uses_prebuilt_protoc_when_prefer_prebuilt_flag_set,
],
)
@ -51,7 +51,7 @@ def _test_cc_toolchain_uses_protoc_minimal_when_prefer_prebuilt_flag_unset_impl(
# so the cc_toolchain should use protoc_minimal.
action.argv().contains_predicate(matching.str_matches("*protoc_minimal*"))
def _test_cc_toolchain_uses_full_protoc_by_default(name):
def _test_cc_toolchain_uses_prebuilt_protoc_when_prefer_prebuilt_flag_set(name):
util.helper_target(
proto_library,
name = name + "_proto",
@ -67,15 +67,14 @@ def _test_cc_toolchain_uses_full_protoc_by_default(name):
analysis_test(
name = name,
target = name + "_compile",
impl = _test_cc_toolchain_uses_full_protoc_by_default_impl,
impl = _test_cc_toolchain_uses_prebuilt_protoc_when_prefer_prebuilt_flag_set_impl,
config_settings = {_PREFER_PREBUILT_PROTOC: True},
)
def _test_cc_toolchain_uses_full_protoc_by_default_impl(env, target):
def _test_cc_toolchain_uses_prebuilt_protoc_when_prefer_prebuilt_flag_set_impl(env, target):
# Find the compile action
action = env.expect.that_target(target).action_named("GenProto")
# By default (prefer_prebuilt_protoc is True), protoc_minimal_do_not_use is None,
# so the cc_toolchain should use the full protoc (not protoc_minimal).
# The protoc path should end with "/protoc" not contain "protoc_minimal"
action.argv().contains_predicate(matching.str_matches("*/protoc"))
# When prefer_prebuilt_protoc is True, protoc_minimal_do_not_use is not set,
# so the cc_toolchain should use prebuilt protoc instead of protoc_minimal.
action.argv().not_contains_predicate(matching.str_matches("*protoc_minimal*"))

View file

@ -9,3 +9,5 @@ build --extra_toolchains=@local_config_cc//:cc-toolchain-x64_windows-clang-cl
build:clang-cl --extra_execution_platforms=//build_defs:x64_windows-clang-cl --host_platform=//build_defs:x64_windows-clang-cl
build:msvc-cl --extra_execution_platforms=//build_defs:x64_windows-msvc-cl --host_platform=//build_defs:x64_windows-msvc-cl
build --config=clang-cl
# Set BAZEL_SH, this is needed for bazel 8.6.0 WORKSPACE on windows
build --action_env=BAZEL_SH="C:/Program Files/Git/bin/bash.exe"

View file

@ -1 +1,3 @@
build --incompatible_exclude_starlark_flags_from_exec_config
# TODO: Remove --repo_contents_cache
common --repo_contents_cache=

View file

@ -49,10 +49,11 @@ build --incompatible_dont_use_javasourceinfoprovider
build --incompatible_enable_android_toolchain_resolution
build --incompatible_enable_apple_toolchain_resolution
build --incompatible_exclusive_test_sandboxed
build --incompatible_remote_use_new_exit_code_for_lost_inputs
build --incompatible_sandbox_hermetic_tmp
build --incompatible_top_level_aspects_require_providers
build --incompatible_use_cc_configure_from_rules_cc
# Disable prebuilt protoc which doesn't work for tests at HEAD which do not
# have a published protoc prebuilt release
build --@com_google_protobuf//bazel/toolchains:prefer_prebuilt_protoc=false
try-import-if-bazel-version >=9.0.0 %workspace%/ci/bazel9.bazelrc
# We cannot yet build successfully with the following flags:
@ -69,6 +70,8 @@ try-import-if-bazel-version >=9.0.0 %workspace%/ci/bazel9.bazelrc
# --incompatible_disable_objc_library_transition
# --incompatible_fail_on_unknown_attributes
# --incompatible_merge_fixed_and_default_shell_env
# --incompatible_remote_use_new_exit_code_for_lost_inputs
# --incompatible_sandbox_hermetic_tmp
# For easier debugging of build failures.
common --announce_rc

View file

@ -3,7 +3,15 @@ common --enable_platform_specific_config
build:linux --cxxopt=-std=c++17 --host_cxxopt=-std=c++17
build:macos --cxxopt=-std=c++17 --host_cxxopt=-std=c++17
# Disable prebuilt protoc which doesn't work for tests at HEAD which do not
# have a published protoc prebuilt release
build --@com_google_protobuf//bazel/toolchains:prefer_prebuilt_protoc=false
common:windows --cxxopt=/std:c++17 --host_cxxopt=/std:c++17 --enable_runfiles
build --experimental_remote_cache_eviction_retries=5
build --remote_download_outputs=all
# Import Bazel 9 specific flags (such as --repo_contents_cache)
# TODO: Remove it when --repo_contents_cache issue has been resolved in bazel
try-import-if-bazel-version >=9.0.0 %workspace%/../ci/bazel9.bazelrc

View file

@ -1,6 +1,6 @@
workspace(name = "com_google_protobuf_examples")
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
# load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
# This protobuf repository is required for proto_library rule.
# It provides the protocol compiler binary (i.e., protoc).
@ -57,6 +57,11 @@ load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup")
rules_jvm_external_setup()
# For bazel 8.6.0 WORKSPACE on windows
load("@rules_shell//shell:repositories.bzl", "rules_shell_toolchains")
rules_shell_toolchains()
load("@rules_jvm_external//:defs.bzl", "maven_install")
maven_install(

View file

@ -4,3 +4,7 @@ common --host_per_file_copt=external/.*protobuf.*/src/google/protobuf/compiler/m
# But, users should be able to use pre-built protoc toolchains instead.
common --incompatible_enable_proto_toolchain_resolution
common --@com_google_protobuf//bazel/toolchains:prefer_prebuilt_protoc
# Import Bazel 9 specific flags (such as --repo_contents_cache)
# TODO: Remove it when --repo_contents_cache issue has been resolved in bazel
try-import-if-bazel-version >=9.0.0 %workspace%/../../ci/bazel9.bazelrc

View file

@ -1,6 +1,6 @@
{
"__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL",
"__INPUT_ARTIFACTS_HASH": 771645571,
"__INPUT_ARTIFACTS_HASH": 1681618567,
"__RESOLVED_ARTIFACTS_HASH": -1085701786,
"conflict_resolution": {
"com.google.errorprone:error_prone_annotations:2.5.1": "com.google.errorprone:error_prone_annotations:2.18.0"

View file

@ -1,13 +0,0 @@
diff --git a/MODULE.bazel b/MODULE.bazel
index 400186b53..1194db9ca 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -2,7 +2,7 @@
# https://github.com/protocolbuffers/protobuf/issues/14313
module(
- name = "protobuf",
+ name = "com_google_protobuf_previous_release",
version = "29.0", # Automatically updated on release
compatibility_level = 1,
repo_name = "com_google_protobuf",

View file

@ -1,280 +0,0 @@
commit fc4d962f0bdfcaa1cc1b2e306301eec48719d847
Author: Keith Smiley <keithbsmiley@gmail.com>
AuthorDate: Tue Mar 3 15:14:28 2026 -0800
Commit: Keith Smiley <keithbsmiley@gmail.com>
CommitDate: Tue Mar 3 15:20:01 2026 -0800
NEED
diff --git a/bazel/upb_c_proto_library.bzl b/bazel/upb_c_proto_library.bzl
index ebeebed..0bdf741 100644
--- a/bazel/upb_c_proto_library.bzl
+++ b/bazel/upb_c_proto_library.bzl
@@ -1,5 +1,6 @@
"""upb_c_proto_library() exposes upb's generated C API for protobuf (foo.upb.h)"""
+load("@rules_cc//cc/common:cc_info.bzl", "CcInfo")
load("//bazel:upb_minitable_proto_library.bzl", "UpbMinitableCcInfo", "upb_minitable_proto_library_aspect")
load("//bazel/common:proto_info.bzl", "ProtoInfo")
load("//bazel/private:upb_proto_library_internal/aspect.bzl", "upb_proto_aspect_impl")
diff --git a/bazel/upb_minitable_proto_library.bzl b/bazel/upb_minitable_proto_library.bzl
index 0a17842..a77c572 100644
--- a/bazel/upb_minitable_proto_library.bzl
+++ b/bazel/upb_minitable_proto_library.bzl
@@ -1,5 +1,7 @@
"""upb_minitable_proto_library() exposes upb's generated minitables (foo.upb_minitable.h)"""
+load("@rules_cc//cc/common:cc_common.bzl", "cc_common")
+load("@rules_cc//cc/common:cc_info.bzl", "CcInfo")
load("//bazel/common:proto_info.bzl", "ProtoInfo")
load("//bazel/private:upb_proto_library_internal/aspect.bzl", "upb_proto_aspect_impl")
load("//bazel/private:upb_proto_library_internal/cc_library_func.bzl", "upb_use_cpp_toolchain")
diff --git a/bazel/upb_proto_reflection_library.bzl b/bazel/upb_proto_reflection_library.bzl
index 8347dfb..fb28ef3 100644
--- a/bazel/upb_proto_reflection_library.bzl
+++ b/bazel/upb_proto_reflection_library.bzl
@@ -1,5 +1,6 @@
"""upb_c_proto_reflection_library() exposes upb reflection for protobuf (foo.upbdefs.h)"""
+load("@rules_cc//cc/common:cc_info.bzl", "CcInfo")
load("//bazel:upb_minitable_proto_library.bzl", "UpbMinitableCcInfo", "upb_minitable_proto_library_aspect")
load("//bazel/common:proto_common.bzl", "proto_common")
load("//bazel/common:proto_info.bzl", "ProtoInfo")
diff --git a/build_defs/cc_proto_blacklist_test.bzl b/build_defs/cc_proto_blacklist_test.bzl
index 260abde..2c100d9 100644
--- a/build_defs/cc_proto_blacklist_test.bzl
+++ b/build_defs/cc_proto_blacklist_test.bzl
@@ -1,6 +1,7 @@
"""Contains a unittest to verify that `cc_proto_library` does not generate code for blacklisted `.proto` sources (i.e. WKPs)."""
load("@bazel_skylib//lib:unittest.bzl", "asserts", "unittest")
+load("@rules_cc//cc/common:cc_info.bzl", "CcInfo")
def _cc_proto_blacklist_test_impl(ctx):
"""Verifies that there are no C++ compile actions for Well-Known-Protos.
diff --git a/src/google/protobuf/BUILD.bazel b/src/google/protobuf/BUILD.bazel
index 5cfd160..c9117de 100644
--- a/src/google/protobuf/BUILD.bazel
+++ b/src/google/protobuf/BUILD.bazel
@@ -452,7 +452,6 @@ cc_library(
"@com_google_absl//absl/numeric:bits",
"@com_google_absl//absl/synchronization",
"@com_google_absl//absl/types:span",
- "@com_google_absl//absl/utility:if_constexpr",
],
)
@@ -578,7 +577,6 @@ cc_library(
"@com_google_absl//absl/time",
"@com_google_absl//absl/types:optional",
"@com_google_absl//absl/types:span",
- "@com_google_absl//absl/utility:if_constexpr",
],
)
diff --git a/src/google/protobuf/compiler/java/full/BUILD.bazel b/src/google/protobuf/compiler/java/full/BUILD.bazel
index 1fb6f07..b5b2cbd 100644
--- a/src/google/protobuf/compiler/java/full/BUILD.bazel
+++ b/src/google/protobuf/compiler/java/full/BUILD.bazel
@@ -1,3 +1,5 @@
+load("@rules_cc//cc:cc_library.bzl", "cc_library")
+
# We use abbreviated target names in this directory to work around:
# https://github.com/bazelbuild/bazel/issues/18683
cc_library(
diff --git a/src/google/protobuf/compiler/java/lite/BUILD.bazel b/src/google/protobuf/compiler/java/lite/BUILD.bazel
index 1046739..92e82cc 100644
--- a/src/google/protobuf/compiler/java/lite/BUILD.bazel
+++ b/src/google/protobuf/compiler/java/lite/BUILD.bazel
@@ -1,3 +1,5 @@
+load("@rules_cc//cc:cc_library.bzl", "cc_library")
+
cc_library(
name = "field_generators",
srcs = [
diff --git a/src/google/protobuf/compiler/kotlin/BUILD.bazel b/src/google/protobuf/compiler/kotlin/BUILD.bazel
index 5555ade..2ecc09a 100644
--- a/src/google/protobuf/compiler/kotlin/BUILD.bazel
+++ b/src/google/protobuf/compiler/kotlin/BUILD.bazel
@@ -1,3 +1,5 @@
+load("@rules_cc//cc:cc_library.bzl", "cc_library")
+
cc_library(
name = "kotlin",
srcs = ["generator.cc"],
diff --git a/src/google/protobuf/compiler/php/BUILD.bazel b/src/google/protobuf/compiler/php/BUILD.bazel
index 7e21518..271e67b 100644
--- a/src/google/protobuf/compiler/php/BUILD.bazel
+++ b/src/google/protobuf/compiler/php/BUILD.bazel
@@ -2,6 +2,7 @@
# Protocol Buffers Compiler - PHP code generator
################################################################################
+load("@rules_cc//cc:cc_test.bzl", "cc_test")
load("@rules_cc//cc:defs.bzl", "cc_library")
load("@rules_pkg//pkg:mappings.bzl", "pkg_files", "strip_prefix")
load("//build_defs:cpp_opts.bzl", "COPTS")
diff --git a/src/google/protobuf/compiler/rust/BUILD.bazel b/src/google/protobuf/compiler/rust/BUILD.bazel
index 91c8145..50d0aa7 100644
--- a/src/google/protobuf/compiler/rust/BUILD.bazel
+++ b/src/google/protobuf/compiler/rust/BUILD.bazel
@@ -2,6 +2,7 @@
# Protocol Buffers Compiler - Rust code generator
################################################################################
+load("@rules_cc//cc:cc_test.bzl", "cc_test")
load("@rules_cc//cc:defs.bzl", "cc_library")
load("//build_defs:cpp_opts.bzl", "COPTS")
diff --git a/src/google/protobuf/compiler/test_plugin_injection.bzl b/src/google/protobuf/compiler/test_plugin_injection.bzl
index aec2544..210d942 100644
--- a/src/google/protobuf/compiler/test_plugin_injection.bzl
+++ b/src/google/protobuf/compiler/test_plugin_injection.bzl
@@ -28,6 +28,7 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("//build_defs:cpp_opts.bzl", "COPTS")
# This works around https://github.com/bazelbuild/bazel/issues/19124 by using a generated header to
@@ -55,8 +56,7 @@ cat <<'EOF' >$(OUTS)
visibility = ["//visibility:private"],
testonly = True,
)
-
- native.cc_library(
+ cc_library(
name = name,
hdrs = [hdr],
strip_include_prefix = "/src",
diff --git a/third_party/utf8_range/BUILD.bazel b/third_party/utf8_range/BUILD.bazel
index 90b1088..2e07ede 100644
--- a/third_party/utf8_range/BUILD.bazel
+++ b/third_party/utf8_range/BUILD.bazel
@@ -4,6 +4,8 @@
# license that can be found in the LICENSE file or at
# https://opensource.org/licenses/MIT.
+load("@rules_cc//cc:cc_library.bzl", "cc_library")
+load("@rules_cc//cc:cc_test.bzl", "cc_test")
load("@rules_license//rules:license.bzl", "license")
DEFAULT_VISIBILITY = [
diff --git a/upb/BUILD b/upb/BUILD
index b282b6e..b5cbcfe 100644
--- a/upb/BUILD
+++ b/upb/BUILD
@@ -6,7 +6,7 @@
# https://developers.google.com/open-source/licenses/bsd
load("@bazel_skylib//rules:common_settings.bzl", "bool_flag")
-load("@rules_python//python:defs.bzl", "py_binary")
+load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("//bazel/private:upb_proto_library_internal/copts.bzl", "upb_proto_library_copts")
load(
"//upb/bazel:amalgamation.bzl",
diff --git a/upb/port/BUILD b/upb/port/BUILD
index 9088825..a8e9a13 100644
--- a/upb/port/BUILD
+++ b/upb/port/BUILD
@@ -5,6 +5,7 @@
# license that can be found in the LICENSE file or at
# https://developers.google.com/open-source/licenses/bsd
+load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("//upb/bazel:build_defs.bzl", "UPB_DEFAULT_COPTS")
package(default_applicable_licenses = ["//:license"])
diff --git a/upb_generator/bootstrap_compiler.bzl b/upb_generator/bootstrap_compiler.bzl
index be2ff5f..8d9a017 100644
--- a/upb_generator/bootstrap_compiler.bzl
+++ b/upb_generator/bootstrap_compiler.bzl
@@ -1,5 +1,7 @@
"""Macros that implement bootstrapping for the upb code generator."""
+load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
+load("@rules_cc//cc:cc_library.bzl", "cc_library")
load(
"//bazel:upb_minitable_proto_library.bzl",
"upb_minitable_proto_library",
@@ -53,7 +55,7 @@ def bootstrap_cc_library(name, visibility = [], deps = [], bootstrap_deps = [],
upb_proto_library().
"""
for stage in _stages:
- native.cc_library(
+ cc_library(
name = name + stage,
deps = deps + [dep + stage for dep in bootstrap_deps],
visibility = _stage_visibility(stage, visibility),
@@ -77,7 +79,7 @@ def bootstrap_cc_binary(name, visibility = [], deps = [], bootstrap_deps = [], *
upb_proto_library().
"""
for stage in _stages:
- native.cc_binary(
+ cc_binary(
name = name + stage,
deps = deps + [dep + stage for dep in bootstrap_deps],
visibility = _stage_visibility(stage, visibility),
@@ -212,7 +214,7 @@ def bootstrap_upb_proto_library(
_stage0_proto_staleness_test(name, oss_src_files, oss_src_rules, oss_strip_prefix)
# stage0 uses checked-in protos, and has no MiniTable.
- native.cc_library(
+ cc_library(
name = name + "_stage0",
srcs = _generated_hdrs_and_srcs(oss_src_files, "stage0", "upb"),
hdrs = [bootstrap_hdr],
@@ -231,8 +233,7 @@ def bootstrap_upb_proto_library(
# Generate stage1 protos (C API and MiniTables) using stage0 compiler.
_generate_stage1_proto(name, src_files, src_rules, "upb", kwargs)
_generate_stage1_proto(name, src_files, src_rules, "upb_minitable", kwargs)
-
- native.cc_library(
+ cc_library(
name = name + "_minitable_stage1",
srcs = _generated_files(src_files, "stage1", "upb_minitable", "c"),
hdrs = _generated_files(src_files, "stage1", "upb_minitable", "h"),
@@ -243,7 +244,7 @@ def bootstrap_upb_proto_library(
] + [dep + "_minitable_stage1" for dep in deps],
**kwargs
)
- native.cc_library(
+ cc_library(
name = name + "_stage1",
srcs = _generated_files(src_files, "stage1", "upb", "h"),
hdrs = [bootstrap_hdr],
@@ -262,7 +263,7 @@ def bootstrap_upb_proto_library(
deps = proto_lib_deps,
**kwargs
)
- native.cc_library(
+ cc_library(
name = name,
hdrs = [bootstrap_hdr],
deps = [name + "_upb_proto"],
diff --git a/upb_generator/common/BUILD b/upb_generator/common/BUILD
index 8687b7f..982ba6f 100644
--- a/upb_generator/common/BUILD
+++ b/upb_generator/common/BUILD
@@ -5,6 +5,8 @@
# license that can be found in the LICENSE file or at
# https://developers.google.com/open-source/licenses/bsd
+load("@rules_cc//cc:cc_library.bzl", "cc_library")
+
package(default_applicable_licenses = ["//:license"])
# Note: this library should not depend on upb reflection or C++ proto
diff --git a/upb_generator/minitable/BUILD b/upb_generator/minitable/BUILD
index a5eadfe..62a153e 100644
--- a/upb_generator/minitable/BUILD
+++ b/upb_generator/minitable/BUILD
@@ -5,6 +5,7 @@
# license that can be found in the LICENSE file or at
# https://developers.google.com/open-source/licenses/bsd
+load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("//bazel/toolchains:proto_lang_toolchain.bzl", "proto_lang_toolchain")
load("//upb/bazel:build_defs.bzl", "UPB_DEFAULT_CPPOPTS")
load(

View file

@ -0,0 +1,21 @@
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -5,3 +5,3 @@
module(
- name = "protobuf",
+ name = "com_google_protobuf_previous_release",
version = "33.0", # Automatically updated on release
@@ -293,13 +293,1 @@
)
-
-bazel_dep(name = "com_google_protobuf_previous_release", version = "29.0", dev_dependency = True)
-archive_override(
- module_name = "com_google_protobuf_previous_release",
- integrity = "sha256-EKDVjzmhqQnpXgDougtbHcZNApl/dBFRlTorNln254w=",
- patch_strip = 1,
- patches = [
- "@com_google_protobuf//:patches/protobuf_v29/0001-Update-module-name.patch",
- ],
- strip_prefix = "protobuf-29.0",
- urls = ["https://github.com/protocolbuffers/protobuf/releases/download/v29.0/protobuf-29.0.tar.gz"],
-)

View file

@ -24,7 +24,6 @@ cc_library(
],
copts = [
"-DJSON_USE_EXCEPTION=0",
"-DJSON_HAS_INT64",
],
includes = ["include"],
visibility = ["//visibility:public"],

View file

@ -44,12 +44,12 @@ def parse_include(line):
class Amalgamator:
def __init__(self, h_out, c_out):
def __init__(self, output_h, output_c, h_out_filename):
self.include_paths = ["."]
self.included = set()
self.output_h = open(h_out, "w")
self.output_c = open(c_out, "w")
self.h_out = h_out.split("/")[-1]
self.output_h = output_h
self.output_c = output_c
self.h_out = h_out_filename
def amalgamate(self, h_files, c_files):
self.h_files = set(h_files)
@ -138,7 +138,7 @@ class Amalgamator:
c_out = sys.argv[1]
h_out = sys.argv[2]
amalgamator = Amalgamator(h_out, c_out)
c_files = []
h_files = []
@ -149,4 +149,6 @@ for arg in sys.argv[3:]:
else:
c_files.append(arg)
amalgamator.amalgamate(h_files, c_files)
with open(h_out, "w") as output_h, open(c_out, "w") as output_c:
amalgamator = Amalgamator(output_h, output_c, h_out.split("/")[-1])
amalgamator.amalgamate(h_files, c_files)