This is an automated email from the ASF dual-hosted git repository.

lizhimins pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/rocketmq-clients.git


The following commit(s) were added to refs/heads/master by this push:
     new 039ee857 [C++] Upgrade Bazel 5.2.0 to 6.6.0, add Bazel CI, migrate 
coverage to CMake (#1261)
039ee857 is described below

commit 039ee8570673e265f27bd91c78fbcf0782707d77
Author: lizhimins <[email protected]>
AuthorDate: Tue Jun 9 09:59:00 2026 +0800

    [C++] Upgrade Bazel 5.2.0 to 6.6.0, add Bazel CI, migrate coverage to CMake 
(#1261)
---
 .github/workflows/cpp_build.yml    | 26 +++++++++++++++--
 .github/workflows/cpp_coverage.yml | 59 +++++++++++++++++++++++++++++++++-----
 cpp/.bazelrc                       | 38 ++++++++++++------------
 cpp/.bazelversion                  |  2 +-
 cpp/WORKSPACE                      | 39 +------------------------
 5 files changed, 96 insertions(+), 68 deletions(-)

diff --git a/.github/workflows/cpp_build.yml b/.github/workflows/cpp_build.yml
index 7b3e7a88..ef3bfb32 100644
--- a/.github/workflows/cpp_build.yml
+++ b/.github/workflows/cpp_build.yml
@@ -2,8 +2,8 @@ name: CPP Build
 on:
   workflow_call:
 jobs:
-  build:
-    name: "${{ matrix.os }}"
+  cmake-build:
+    name: "CMake ${{ matrix.os }}"
     runs-on: ${{ matrix.os }}
     strategy:
       fail-fast: false
@@ -72,3 +72,25 @@ jobs:
         working-directory: ./cpp/build
         shell: bash
         run: ctest --output-on-failure -j4 -C Release
+
+  bazel-build:
+    name: "Bazel ${{ matrix.os }}"
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [ubuntu-22.04, macos-latest, windows-2022]
+    steps:
+      - uses: actions/checkout@v3
+        with:
+          submodules: true
+
+      - name: Build
+        working-directory: ./cpp
+        shell: bash
+        run: bazel build //...
+
+      - name: Test
+        working-directory: ./cpp
+        shell: bash
+        run: bazel test //...
diff --git a/.github/workflows/cpp_coverage.yml 
b/.github/workflows/cpp_coverage.yml
index 8cdeb5f7..be1f1f85 100644
--- a/.github/workflows/cpp_coverage.yml
+++ b/.github/workflows/cpp_coverage.yml
@@ -3,21 +3,66 @@ on:
   push:
     branches:
       - master
-# mainly refer to: 
https://github.com/merkrafter/Merkompiler/blob/development/.github/workflows/quality_assurance.yml
 jobs:
   calculate-coverage:
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-22.04
     steps:
-      - uses: actions/checkout@v2
+      - uses: actions/checkout@v4
         with:
           submodules: true
-      - name: Generate coverage report
+
+      - name: Install dependencies
+        run: sudo apt-get update && sudo apt-get install -y libssl-dev 
zlib1g-dev lcov
+
+      - name: Cache gRPC
+        id: cache-grpc
+        uses: actions/cache@v3
+        with:
+          path: ${{ runner.temp }}/grpc-install
+          key: grpc-1.46.3-ubuntu-22.04
+
+      - name: Build gRPC from source
+        if: steps.cache-grpc.outputs.cache-hit != 'true'
+        run: |
+          git clone --recurse-submodules -b v1.46.3 --depth 1 
https://github.com/grpc/grpc.git "${{ runner.temp }}/grpc-src"
+          cmake -S "${{ runner.temp }}/grpc-src" -B "${{ runner.temp 
}}/grpc-build" \
+            -DCMAKE_BUILD_TYPE=Release \
+            -DCMAKE_INSTALL_PREFIX="${{ runner.temp }}/grpc-install" \
+            -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
+            -DgRPC_INSTALL=ON \
+            -DgRPC_BUILD_TESTS=OFF \
+            -DgRPC_SSL_PROVIDER=package \
+            -DgRPC_ZLIB_PROVIDER=package
+          cmake --build "${{ runner.temp }}/grpc-build" --parallel 4 --config 
Release
+          cmake --install "${{ runner.temp }}/grpc-build" --config Release
+
+      - name: Build with coverage
+        working-directory: ./cpp
+        run: |
+          cmake -S . -B build \
+            -DCMAKE_BUILD_TYPE=Debug \
+            -DCMAKE_PREFIX_PATH="${{ runner.temp }}/grpc-install" \
+            -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
+            -DCMAKE_C_FLAGS="--coverage" \
+            -DCMAKE_CXX_FLAGS="--coverage" \
+            -DBUILD_EXAMPLES=OFF
+          cmake --build build --parallel 4
+
+      - name: Run tests
+        working-directory: ./cpp/build
+        run: ctest --output-on-failure -j4
+
+      - name: Collect coverage
         working-directory: ./cpp
-        run: bazel coverage  //...
+        run: |
+          lcov --capture --directory build --output-file coverage.info
+          lcov --remove coverage.info '/usr/*' '*/build/_deps/*' '*/proto/*' 
--output-file coverage.info
+          lcov --list coverage.info
+
       - name: Upload to Codecov
-        uses: codecov/codecov-action@v3
+        uses: codecov/codecov-action@v4
         with:
-          file: ./cpp/bazel-out/_coverage/_coverage_report.dat
+          file: ./cpp/coverage.info
           flags: cpp
           fail_ci_if_error: true
           verbose: true
diff --git a/cpp/.bazelrc b/cpp/.bazelrc
index 38aff1d3..1eafa655 100644
--- a/cpp/.bazelrc
+++ b/cpp/.bazelrc
@@ -8,12 +8,14 @@
 # Startup options cannot be selected via config.
 startup --host_jvm_args=-Xmx2g
 
+# gRPC 1.46.3's upb uses @bazel_tools//platforms which was removed in Bazel 6.
+# Re-enable the old behavior until gRPC is upgraded.
+common --noincompatible_use_platforms_repo_for_constraints
+
 run --color=yes
 
 build --color=yes
 
-build --host_force_python=PY3
-
 # 
https://docs.bazel.build/versions/main/command-line-reference.html#flag--enable_platform_specific_config
 # If true, Bazel picks up host-OS-specific config lines from bazelrc files. 
For example, if the host OS is Linux and
 # you run bazel build, Bazel picks up lines starting with build:linux. 
Supported OS identifiers are linux, macos, 
@@ -28,6 +30,20 @@ build:macos --strip=never
 build:macos --copt -g
 # Workaround, see https://github.com/grpc/grpc/issues/19645
 build:macos --copt -DGRPC_BAZEL_BUILD
+# Xcode 16+ predefines TARGET_OS_MAC, causing old zlib's zutil.h to
+# redefine fdopen as NULL, which breaks system headers.
+build:macos --per_file_copt=external/zlib/.*@-Dfdopen=fdopen
+build:macos --host_per_file_copt=external/zlib/.*@-Dfdopen=fdopen
+# Xcode 16+ clang treats defining types in __builtin_offsetof as C23
+# extension error. Suppress for old upb bundled with gRPC 1.46.3.
+build:macos --per_file_copt=external/upb/.*@-Wno-c23-extensions
+build:macos --host_per_file_copt=external/upb/.*@-Wno-c23-extensions
+# Xcode 16+ clang treats deprecated builtins (__has_trivial_*) as errors.
+# Old absl bundled with gRPC 1.46.3 still uses them in type_traits.h.
+build:macos 
--per_file_copt=external/com_google_absl/.*@-Wno-deprecated-builtins
+build:macos 
--host_per_file_copt=external/com_google_absl/.*@-Wno-deprecated-builtins
+build:macos --per_file_copt=external/upb/.*@-Wno-deprecated-builtins
+build:macos --host_per_file_copt=external/upb/.*@-Wno-deprecated-builtins
 
 # Enable position independent code (this is the default on macOS and Windows)
 # (Workaround for https://github.com/bazelbuild/rules_foreign_cc/issues/421)
@@ -131,22 +147,4 @@ build:coverage 
--instrumentation_filter="//source[/:],//include[/:],-//source/ba
 
 test --test_output=errors
 
-# RBE
-build:remote --bes_results_url=https://app.buildbuddy.io/invocation/
-build:remote --bes_backend=grpcs://remote.buildbuddy.io
-build:remote --remote_cache=grpcs://remote.buildbuddy.io
-build:remote --remote_timeout=3600
-build:remote --grpc_keepalive_time=360s
-build:remote --grpc_keepalive_timeout=360s
-build:remote --remote_executor=grpcs://remote.buildbuddy.io
-build:remote --host_platform=@buildbuddy_toolchain//:platform
-build:remote --platforms=@buildbuddy_toolchain//:platform
-build:remote --extra_execution_platforms=@buildbuddy_toolchain//:platform
-build:remote --crosstool_top=@buildbuddy_toolchain//:toolchain
-build:remote --extra_toolchains=@buildbuddy_toolchain//:cc_toolchain
-build:remote --jobs=250
-build:remote --remote_download_minimal
-build:remote --experimental_remote_cache_compression
-build:remote --experimental_remote_cache_async
-build:remote --spawn_strategy=remote
 # try-import %workspace%/user.bazelrc
\ No newline at end of file
diff --git a/cpp/.bazelversion b/cpp/.bazelversion
index 91ff5727..826f5ce0 100644
--- a/cpp/.bazelversion
+++ b/cpp/.bazelversion
@@ -1 +1 @@
-5.2.0
+6.6.0
diff --git a/cpp/WORKSPACE b/cpp/WORKSPACE
index 3c3d6476..86484441 100644
--- a/cpp/WORKSPACE
+++ b/cpp/WORKSPACE
@@ -14,41 +14,4 @@ rules_proto_grpc_repos()
 
 load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", 
"rules_proto_toolchains")
 rules_proto_dependencies()
-rules_proto_toolchains()
-
-# Support Bazel RBE(remote build execution)
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-http_archive(
-    name = "io_buildbuddy_buildbuddy_toolchain",
-    sha256 = 
"a2a5cccec251211e2221b1587af2ce43c36d32a42f5d881737db3b546a536510",
-    strip_prefix = 
"buildbuddy-toolchain-829c8a574f706de5c96c54ca310f139f4acda7dd",
-    urls = 
["https://github.com/buildbuddy-io/buildbuddy-toolchain/archive/829c8a574f706de5c96c54ca310f139f4acda7dd.tar.gz";],
-)
-load("@io_buildbuddy_buildbuddy_toolchain//:deps.bzl", "buildbuddy_deps")
-buildbuddy_deps()
-load("@io_buildbuddy_buildbuddy_toolchain//:rules.bzl", "buildbuddy")
-buildbuddy(name = "buildbuddy_toolchain")
-
-# Generate compile_commands.json
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-
-
-# Hedron's Compile Commands Extractor for Bazel
-# https://github.com/hedronvision/bazel-compile-commands-extractor
-http_archive(
-    name = "hedron_compile_commands",
-
-    # Replace the commit hash (0e990032f3c5a866e72615cf67e5ce22186dcb97) in 
both places (below) with the latest 
(https://github.com/hedronvision/bazel-compile-commands-extractor/commits/main),
 rather than using the stale one here.
-    # Even better, set up Renovate and let it do the work for you (see 
"Suggestion: Updates" in the README).
-    url = 
"https://github.com/hedronvision/bazel-compile-commands-extractor/archive/204aa593e002cbd177d30f11f54cff3559110bb9.tar.gz";,
-    strip_prefix = 
"bazel-compile-commands-extractor-204aa593e002cbd177d30f11f54cff3559110bb9",
-    # When you first run this tool, it'll recommend a sha256 hash to put here 
with a message like: "DEBUG: Rule 'hedron_compile_commands' indicated that a 
canonical reproducible form can be obtained by modifying arguments sha256 = ..."
-)
-load("@hedron_compile_commands//:workspace_setup.bzl", 
"hedron_compile_commands_setup")
-hedron_compile_commands_setup()
-load("@hedron_compile_commands//:workspace_setup_transitive.bzl", 
"hedron_compile_commands_setup_transitive")
-hedron_compile_commands_setup_transitive()
-load("@hedron_compile_commands//:workspace_setup_transitive_transitive.bzl", 
"hedron_compile_commands_setup_transitive_transitive")
-hedron_compile_commands_setup_transitive_transitive()
-load("@hedron_compile_commands//:workspace_setup_transitive_transitive_transitive.bzl",
 "hedron_compile_commands_setup_transitive_transitive_transitive")
-hedron_compile_commands_setup_transitive_transitive_transitive()
\ No newline at end of file
+rules_proto_toolchains()
\ No newline at end of file

Reply via email to