From 5b938c8a86787ffc87a5c12fa459cbf7ebe47e04 Mon Sep 17 00:00:00 2001 From: Douglas Barker Date: Sat, 4 Oct 2025 13:42:38 -0400 Subject: [PATCH 1/6] update third_party_release tags and submodules to the latest versions --- third_party/benchmark | 2 +- third_party/googletest | 2 +- third_party/ms-gsl | 2 +- third_party_release | 16 ++++++++-------- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/third_party/benchmark b/third_party/benchmark index 344117638c..eddb024138 160000 --- a/third_party/benchmark +++ b/third_party/benchmark @@ -1 +1 @@ -Subproject commit 344117638c8ff7e239044fd0fa7085839fc03021 +Subproject commit eddb0241389718a23a42db6af5f0164b6e0139af diff --git a/third_party/googletest b/third_party/googletest index f8d7d77c06..52eb8108c5 160000 --- a/third_party/googletest +++ b/third_party/googletest @@ -1 +1 @@ -Subproject commit f8d7d77c06936315286eb55f8de22cd23c188571 +Subproject commit 52eb8108c5bdec04579160ae17225d66034bd723 diff --git a/third_party/ms-gsl b/third_party/ms-gsl index 6f4529395c..2828399820 160000 --- a/third_party/ms-gsl +++ b/third_party/ms-gsl @@ -1 +1 @@ -Subproject commit 6f4529395c5b7c2d661812257cd6780c67e54afa +Subproject commit 2828399820ef4928cc89b65605dca5dc68efca6e diff --git a/third_party_release b/third_party_release index 7f7194a23b..5e38ddce18 100644 --- a/third_party_release +++ b/third_party_release @@ -14,17 +14,17 @@ # - opentelemetry-cpp/MODULE.bazel # - opentelemetry-cpp/bazel/repository.bzl -abseil=20220623.2 +abseil=20250127.0 zlib=v1.3.1 -curl=curl-8_12_0 -protobuf=v3.21.6 -grpc=v1.49.2 -benchmark=v1.8.3 -googletest=v1.14.0 -ms-gsl=v3.1.0 +curl=curl-8_16_0 +protobuf=v6.31.1 +grpc=v1.75.1 +benchmark=v1.9.4 +googletest=v1.17.0 +ms-gsl=v4.2.0 nlohmann-json=v3.12.0 opentelemetry-proto=v1.7.0 opentracing-cpp=v1.6.0 prometheus-cpp=v1.3.0 -vcpkg=2024.02.14 ryml=v0.9.0 +vcpkg=2024.02.14 From 2e5031ecd355de8442e6d24a43138ee3cb580afc Mon Sep 17 00:00:00 2001 From: Douglas Barker Date: Sat, 4 Oct 2025 14:07:10 -0400 Subject: [PATCH 2/6] test with c++17 by default. Add specific c++14 maintainer test to ci workflow. Fix grpc protobuf submodule install cmake failure --- .bazelrc | 6 ++-- .github/workflows/ci.yml | 53 ++++++++++++++++++++++++++----- .github/workflows/clang-tidy.yaml | 4 +-- .github/workflows/cppcheck.yml | 2 +- .github/workflows/iwyu.yml | 4 +-- CMakeLists.txt | 1 + MODULE.bazel | 14 ++++---- ci/do_ci.ps1 | 4 +-- ci/do_ci.sh | 2 +- ci/install_thirdparty.sh | 2 +- cmake/grpc.cmake | 1 + install/cmake/CMakeLists.txt | 2 +- 12 files changed, 67 insertions(+), 28 deletions(-) diff --git a/.bazelrc b/.bazelrc index 57cd0a2fa0..9b87c5283a 100644 --- a/.bazelrc +++ b/.bazelrc @@ -17,9 +17,9 @@ build --copt -DGRPC_BAZEL_BUILD build:windows --dynamic_mode=off # Set minimum supported C++ version -build:macos --host_cxxopt=-std=c++14 --cxxopt=-std=c++14 -build:linux --host_cxxopt=-std=c++14 --cxxopt=-std=c++14 -build:windows --host_cxxopt=/std:c++14 --cxxopt=/std:c++14 +build:macos --host_cxxopt=-std=c++17 --cxxopt=-std=c++17 +build:linux --host_cxxopt=-std=c++17 --cxxopt=-std=c++17 +build:windows --host_cxxopt=/std:c++17 --cxxopt=/std:c++17 # --config=asan : Address Sanitizer. common:asan --copt -DADDRESS_SANITIZER diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5f9e3bfd6a..dd522f8bc3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: # submodules: 'recursive' # - name: setup # env: -# CXX_STANDARD: '14' +# CXX_STANDARD: '17' # CC: /usr/bin/gcc-10 # CXX: /usr/bin/g++-10 # run: | @@ -86,7 +86,7 @@ jobs: env: CC: /usr/bin/gcc-14 CXX: /usr/bin/g++-14 - CXX_STANDARD: '14' + CXX_STANDARD: '17' steps: - name: Harden the runner (Audit all outbound calls) uses: step-security/harden-runner@f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a # v2.13.1 @@ -120,7 +120,7 @@ jobs: env: CC: /usr/bin/gcc-14 CXX: /usr/bin/g++-14 - CXX_STANDARD: '14' + CXX_STANDARD: '17' steps: - name: Harden the runner (Audit all outbound calls) uses: step-security/harden-runner@f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a # v2.13.1 @@ -154,7 +154,7 @@ jobs: env: CC: /usr/bin/clang-18 CXX: /usr/bin/clang++-18 - CXX_STANDARD: '14' + CXX_STANDARD: '17' steps: - name: Harden the runner (Audit all outbound calls) uses: step-security/harden-runner@f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a # v2.13.1 @@ -182,13 +182,47 @@ jobs: run: | (cd ./functional/otlp; ./run_test.sh) + cmake_clang_maintainer_cxx14_async_test: + name: CMake clang 18 with C++14 (maintainer mode, async) + runs-on: ubuntu-24.04 + env: + CC: /usr/bin/clang-18 + CXX: /usr/bin/clang++-18 + CXX_STANDARD: '14' + steps: + - name: Harden the runner (Audit all outbound calls) + uses: step-security/harden-runner@f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a # v2.13.1 + with: + egress-policy: audit + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + with: + submodules: 'recursive' + - name: setup + run: | + sudo -E ./ci/setup_ci_environment.sh + - name: install dependencies + run: | # install c++14 compatible third-party versions + sudo -E ./ci/install_thirdparty.sh --install-dir /usr/local --tags-file ./install/cmake/third_party_stable + - name: run cmake clang (maintainer mode, async) + run: | + ./ci/do_ci.sh cmake.maintainer.async.test + - name: generate test cert + env: + CFSSL_VERSION: 1.6.3 + run: | + sudo -E ./tools/setup-cfssl.sh + (cd ./functional/cert; ./generate_cert.sh) + - name: run func test + run: | + (cd ./functional/otlp; ./run_test.sh) + cmake_clang_yaml_config: name: CMake clang 18 (maintainer mode, yaml config) runs-on: ubuntu-24.04 env: CC: /usr/bin/clang-18 CXX: /usr/bin/clang++-18 - CXX_STANDARD: '14' + CXX_STANDARD: '17' steps: - name: Harden the runner (Audit all outbound calls) uses: step-security/harden-runner@f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a # v2.13.1 @@ -227,7 +261,7 @@ jobs: env: CC: /usr/bin/clang-18 CXX: /usr/bin/clang++-18 - CXX_STANDARD: '14' + CXX_STANDARD: '17' steps: - name: Harden the runner (Audit all outbound calls) uses: step-security/harden-runner@f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a # v2.13.1 @@ -261,7 +295,7 @@ jobs: env: CC: /usr/bin/clang-18 CXX: /usr/bin/clang++-18 - CXX_STANDARD: '14' + CXX_STANDARD: '17' steps: - name: Harden the runner (Audit all outbound calls) uses: step-security/harden-runner@f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a # v2.13.1 @@ -406,6 +440,9 @@ jobs: - name: setup run: | sudo -E ./ci/setup_ci_environment.sh + - name: install dependencies + run: | + sudo -E ./ci/install_thirdparty.sh --install-dir /usr/local --tags-file ./install/cmake/third_party_stable --packages "googletest;benchmark" - name: run tests (enable stl) env: CXX_STANDARD: '14' @@ -1177,7 +1214,7 @@ jobs: sudo -E apt-get install -y zlib1g-dev libcurl4-openssl-dev - name: run w3c trace-context test server (background) env: - CXX_STANDARD: '14' + CXX_STANDARD: '17' run: | ./ci/do_ci.sh cmake.w3c.trace-context.build-server cd $HOME/build/ext/test/w3c_tracecontext_http_test_server diff --git a/.github/workflows/clang-tidy.yaml b/.github/workflows/clang-tidy.yaml index e0a8753974..183f732b71 100644 --- a/.github/workflows/clang-tidy.yaml +++ b/.github/workflows/clang-tidy.yaml @@ -70,8 +70,8 @@ jobs: echo "Running cmake..." cmake -B build-${{ matrix.cmake_options }} \ -C ./test_common/cmake/${{ matrix.cmake_options }}.cmake \ - -DCMAKE_CXX_STANDARD=14 \ - -DWITH_STL=CXX14 \ + -DCMAKE_CXX_STANDARD=17 \ + -DWITH_STL=CXX17 \ -DWITH_OPENTRACING=OFF \ -DCMAKE_CXX_FLAGS="-Wno-deprecated-declarations" \ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ diff --git a/.github/workflows/cppcheck.yml b/.github/workflows/cppcheck.yml index 2e8d2af47b..0d0a5ed8f9 100644 --- a/.github/workflows/cppcheck.yml +++ b/.github/workflows/cppcheck.yml @@ -36,7 +36,7 @@ jobs: --inline-suppr \ --suppress=unknownMacro:exporters/etw/include/opentelemetry/exporters/etw/TraceLoggingDynamic.h \ --language=c++ \ - --std=c++14 \ + --std=c++17 \ -I api/include \ -I exporters/elasticsearch/include \ -I exporters/etw/include \ diff --git a/.github/workflows/iwyu.yml b/.github/workflows/iwyu.yml index d2145a680d..e3e8726040 100644 --- a/.github/workflows/iwyu.yml +++ b/.github/workflows/iwyu.yml @@ -70,8 +70,8 @@ jobs: TOPDIR=`pwd` cmake -B build-${{ matrix.cmake_options }} \ -C ./test_common/cmake/${{ matrix.cmake_options }}.cmake \ - -DCMAKE_CXX_STANDARD=14 \ - -DWITH_STL=CXX14 \ + -DCMAKE_CXX_STANDARD=17 \ + -DWITH_STL=CXX17 \ -DCMAKE_CXX_FLAGS="-Wno-deprecated-declarations" \ -DCMAKE_CXX_INCLUDE_WHAT_YOU_USE="include-what-you-use;-w;-Xiwyu;--mapping_file=${TOPDIR}/.iwyu.imp;" diff --git a/CMakeLists.txt b/CMakeLists.txt index 6b260da0ac..e4cb563280 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -495,6 +495,7 @@ message(STATUS "OTELCPP_MAINTAINER_MODE: ${OTELCPP_MAINTAINER_MODE}") message(STATUS "WITH_STL: ${WITH_STL}") message(STATUS "WITH_GSL: ${WITH_GSL}") message(STATUS "WITH_NO_GETENV: ${WITH_NO_GETENV}") +message(STATUS "OPENTELEMETRY_INSTALL: ${OPENTELEMETRY_INSTALL}") message(STATUS "---------------------------------------------") message(STATUS "opentelemetry-cpp cmake component options") diff --git a/MODULE.bazel b/MODULE.bazel index 81abe235f3..b9cfec4f79 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -8,19 +8,19 @@ module( repo_name = "io_opentelemetry_cpp", ) -bazel_dep(name = "abseil-cpp", version = "20240116.1", repo_name = "com_google_absl") +bazel_dep(name = "abseil-cpp", version = "20250127.1", repo_name = "com_google_absl") bazel_dep(name = "bazel_skylib", version = "1.7.1") -bazel_dep(name = "curl", version = "8.8.0") -bazel_dep(name = "grpc", version = "1.66.0.bcr.2", repo_name = "com_github_grpc_grpc") +bazel_dep(name = "curl", version = "8.11.0") +bazel_dep(name = "grpc", version = "1.74.1", repo_name = "com_github_grpc_grpc") bazel_dep(name = "nlohmann_json", version = "3.12.0", repo_name = "github_nlohmann_json") bazel_dep(name = "opentelemetry-proto", version = "1.7.0", repo_name = "com_github_opentelemetry_proto") bazel_dep(name = "opentracing-cpp", version = "1.6.0", repo_name = "com_github_opentracing") bazel_dep(name = "platforms", version = "0.0.11") bazel_dep(name = "prometheus-cpp", version = "1.3.0", repo_name = "com_github_jupp0r_prometheus_cpp") -bazel_dep(name = "protobuf", version = "29.0", repo_name = "com_google_protobuf") +bazel_dep(name = "protobuf", version = "31.1", repo_name = "com_google_protobuf") bazel_dep(name = "rapidyaml", version = "0.9.0") bazel_dep(name = "rules_proto", version = "7.0.2") -bazel_dep(name = "zlib", version = "1.3.1.bcr.5") +bazel_dep(name = "zlib", version = "1.3.1.bcr.7") -bazel_dep(name = "google_benchmark", version = "1.8.4", dev_dependency = True, repo_name = "com_github_google_benchmark") -bazel_dep(name = "googletest", version = "1.14.0.bcr.1", dev_dependency = True, repo_name = "com_google_googletest") +bazel_dep(name = "google_benchmark", version = "1.9.4", dev_dependency = True, repo_name = "com_github_google_benchmark") +bazel_dep(name = "googletest", version = "1.17.0.bcr.1", dev_dependency = True, repo_name = "com_google_googletest") diff --git a/ci/do_ci.ps1 b/ci/do_ci.ps1 index 0863612269..82c70ce8ef 100644 --- a/ci/do_ci.ps1 +++ b/ci/do_ci.ps1 @@ -318,10 +318,10 @@ switch ($action) { if (Test-Path Env:\CXX_STANDARD) { $CXX_STANDARD = [int](Get-Item Env:\CXX_STANDARD).Value } else { - $CXX_STANDARD = 14 + $CXX_STANDARD = 17 } if (-not $CXX_STANDARD) { - $CXX_STANDARD = 14 + $CXX_STANDARD = 17 } Write-Host "Using CXX_STANDARD: $CXX_STANDARD" diff --git a/ci/do_ci.sh b/ci/do_ci.sh index 2278c88afe..76363f7250 100755 --- a/ci/do_ci.sh +++ b/ci/do_ci.sh @@ -92,7 +92,7 @@ fi if [ -n "${CXX_STANDARD}" ]; then CMAKE_OPTIONS+=("-DCMAKE_CXX_STANDARD=${CXX_STANDARD}") else - CMAKE_OPTIONS+=("-DCMAKE_CXX_STANDARD=14") + CMAKE_OPTIONS+=("-DCMAKE_CXX_STANDARD=17") fi CMAKE_OPTIONS+=("-DCMAKE_CXX_STANDARD_REQUIRED=ON") diff --git a/ci/install_thirdparty.sh b/ci/install_thirdparty.sh index f9cf742968..7c23bcbb2b 100755 --- a/ci/install_thirdparty.sh +++ b/ci/install_thirdparty.sh @@ -66,7 +66,7 @@ if [ -z "${THIRDPARTY_INSTALL_DIR}" ]; then fi if [ -z "${CXX_STANDARD}" ]; then - CXX_STANDARD=14 + CXX_STANDARD=17 fi THIRDPARTY_BUILD_DIR="/tmp/otel-cpp-third-party-build" diff --git a/cmake/grpc.cmake b/cmake/grpc.cmake index b209c0ae5a..a420ccb353 100644 --- a/cmake/grpc.cmake +++ b/cmake/grpc.cmake @@ -28,6 +28,7 @@ if(NOT gRPC_FOUND) set(gRPC_PROVIDER "fetch_repository") set(gRPC_INSTALL ${OPENTELEMETRY_INSTALL} CACHE BOOL "" FORCE) + set(protobuf_INSTALL ${OPENTELEMETRY_INSTALL} CACHE BOOL "" FORCE) set(gRPC_BUILD_TESTS OFF CACHE BOOL "" FORCE) set(gRPC_BUILD_GRPC_CPP_PLUGIN ON CACHE BOOL "" FORCE) set(gRPC_BUILD_GRPC_CSHARP_PLUGIN OFF CACHE BOOL "" FORCE) diff --git a/install/cmake/CMakeLists.txt b/install/cmake/CMakeLists.txt index 923873d876..39babcf854 100644 --- a/install/cmake/CMakeLists.txt +++ b/install/cmake/CMakeLists.txt @@ -91,7 +91,7 @@ else() endif() if(NOT CMAKE_CXX_STANDARD) - set(CMAKE_CXX_STANDARD 14) + set(CMAKE_CXX_STANDARD 17) endif() set(CMAKE_OPTIONS From 0d2af3071340adbd68911c07faf55b5602d72cb1 Mon Sep 17 00:00:00 2001 From: Douglas Barker Date: Sat, 4 Oct 2025 14:54:28 -0400 Subject: [PATCH 3/6] upgrade bazel version. Run clang-tidy and iwyu tests with c++14 --- .bazelversion | 2 +- .github/workflows/clang-tidy.yaml | 4 ++-- .github/workflows/iwyu.yml | 4 ++-- ci/install_bazelisk.sh | 2 +- ci/install_windows_bazelisk.ps1 | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.bazelversion b/.bazelversion index 21c8c7b46b..e8be68404b 100644 --- a/.bazelversion +++ b/.bazelversion @@ -1 +1 @@ -7.1.1 +7.6.1 diff --git a/.github/workflows/clang-tidy.yaml b/.github/workflows/clang-tidy.yaml index 183f732b71..e0a8753974 100644 --- a/.github/workflows/clang-tidy.yaml +++ b/.github/workflows/clang-tidy.yaml @@ -70,8 +70,8 @@ jobs: echo "Running cmake..." cmake -B build-${{ matrix.cmake_options }} \ -C ./test_common/cmake/${{ matrix.cmake_options }}.cmake \ - -DCMAKE_CXX_STANDARD=17 \ - -DWITH_STL=CXX17 \ + -DCMAKE_CXX_STANDARD=14 \ + -DWITH_STL=CXX14 \ -DWITH_OPENTRACING=OFF \ -DCMAKE_CXX_FLAGS="-Wno-deprecated-declarations" \ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ diff --git a/.github/workflows/iwyu.yml b/.github/workflows/iwyu.yml index e3e8726040..d2145a680d 100644 --- a/.github/workflows/iwyu.yml +++ b/.github/workflows/iwyu.yml @@ -70,8 +70,8 @@ jobs: TOPDIR=`pwd` cmake -B build-${{ matrix.cmake_options }} \ -C ./test_common/cmake/${{ matrix.cmake_options }}.cmake \ - -DCMAKE_CXX_STANDARD=17 \ - -DWITH_STL=CXX17 \ + -DCMAKE_CXX_STANDARD=14 \ + -DWITH_STL=CXX14 \ -DCMAKE_CXX_FLAGS="-Wno-deprecated-declarations" \ -DCMAKE_CXX_INCLUDE_WHAT_YOU_USE="include-what-you-use;-w;-Xiwyu;--mapping_file=${TOPDIR}/.iwyu.imp;" diff --git a/ci/install_bazelisk.sh b/ci/install_bazelisk.sh index 674ca215e9..a0d1218de5 100755 --- a/ci/install_bazelisk.sh +++ b/ci/install_bazelisk.sh @@ -5,7 +5,7 @@ set -e -BAZELISK_VERSION=v1.16.0 +BAZELISK_VERSION=v1.27.0 wget -O /usr/local/bin/bazel https://github.com/bazelbuild/bazelisk/releases/download/$BAZELISK_VERSION/bazelisk-linux-amd64 chmod +x /usr/local/bin/bazel diff --git a/ci/install_windows_bazelisk.ps1 b/ci/install_windows_bazelisk.ps1 index 2f1f48c1e2..c86036d807 100644 --- a/ci/install_windows_bazelisk.ps1 +++ b/ci/install_windows_bazelisk.ps1 @@ -4,7 +4,7 @@ $ErrorActionPreference = "Stop" trap { $host.SetShouldExit(1) } -$BAZELISK_VERSION="1.16.0" +$BAZELISK_VERSION="1.27.0" $CWD=(Get-Item -Path ".\").FullName (new-object System.Net.WebClient). ` DownloadFile("https://github.com/bazelbuild/bazelisk/releases/download/v$BAZELISK_VERSION/bazelisk-windows-amd64.exe", From 1f7d640e53506782aa92b53e2e524f5869156bce Mon Sep 17 00:00:00 2001 From: Douglas Barker Date: Sat, 4 Oct 2025 16:54:44 -0400 Subject: [PATCH 4/6] Use c++17 for more bazel ci tests. Don't test with stl for the Bazel noexcept test due to std::variant throwing with get<> --- .bazelrc | 4 ++++ .github/workflows/ci.yml | 9 +++++++-- MODULE.bazel | 4 ++-- ci/do_ci.sh | 9 +++++++-- 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/.bazelrc b/.bazelrc index 9b87c5283a..58ff17e9f0 100644 --- a/.bazelrc +++ b/.bazelrc @@ -26,6 +26,8 @@ common:asan --copt -DADDRESS_SANITIZER common:asan --copt -fsanitize=address,bool,float-cast-overflow,integer-divide-by-zero,null,return,returns-nonnull-attribute,shift-exponent,signed-integer-overflow,unreachable,vla-bound common:asan --copt -fsanitize-address-use-after-scope common:asan --copt -fno-sanitize-recover=all +common:asan --cxxopt -std=c++17 + common:asan --linkopt -fsanitize=address,bool,float-cast-overflow,integer-divide-by-zero,null,return,returns-nonnull-attribute,shift-exponent,signed-integer-overflow,unreachable,vla-bound common:asan --linkopt -fsanitize-address-use-after-scope common:asan --linkopt -fno-sanitize-recover=all @@ -34,8 +36,10 @@ common:asan --cc_output_directory_tag=asan # --config=tsan : Thread Sanitizer. common:tsan --copt -fsanitize=thread common:tsan --copt -DTHREAD_SANITIZER +common:tsan --cxxopt -std=c++17 common:tsan --linkopt -fsanitize=thread common:tsan --cc_output_directory_tag=tsan + # This is needed to address false positive problem with abseil.The same setting as gRPC # https://github.com/google/sanitizers/issues/953 common:tsan --test_env=TSAN_OPTIONS=report_atomic_races=0 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dd522f8bc3..16d98dd801 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -59,7 +59,7 @@ jobs: env: CXX_STANDARD: '17' CMAKE_VERSION: '3.16.0' - BUILD_TYPE: 'Debug' + BUILD_TYPE: 'Release' steps: - name: Harden the runner (Audit all outbound calls) uses: step-security/harden-runner@f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a # v2.13.1 @@ -67,7 +67,7 @@ jobs: egress-policy: audit - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: - submodules: 'recursive' + submodules: 'none' - name: setup run: | sudo -E ./ci/setup_ci_environment.sh @@ -926,6 +926,11 @@ jobs: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: submodules: 'recursive' + - name: Install CMake + env: + CMAKE_VERSION: 3.31.6 # the macos runner installs CMake 4.x and is not compatible with opentracing + run: | + ./ci/setup_cmake_macos.sh - name: Mount Bazel Cache uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 env: diff --git a/MODULE.bazel b/MODULE.bazel index b9cfec4f79..315ca7d86b 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -8,7 +8,7 @@ module( repo_name = "io_opentelemetry_cpp", ) -bazel_dep(name = "abseil-cpp", version = "20250127.1", repo_name = "com_google_absl") +bazel_dep(name = "abseil-cpp", version = "20250512.1", repo_name = "com_google_absl") bazel_dep(name = "bazel_skylib", version = "1.7.1") bazel_dep(name = "curl", version = "8.11.0") bazel_dep(name = "grpc", version = "1.74.1", repo_name = "com_github_grpc_grpc") @@ -16,7 +16,7 @@ bazel_dep(name = "nlohmann_json", version = "3.12.0", repo_name = "github_nlohma bazel_dep(name = "opentelemetry-proto", version = "1.7.0", repo_name = "com_github_opentelemetry_proto") bazel_dep(name = "opentracing-cpp", version = "1.6.0", repo_name = "com_github_opentracing") bazel_dep(name = "platforms", version = "0.0.11") -bazel_dep(name = "prometheus-cpp", version = "1.3.0", repo_name = "com_github_jupp0r_prometheus_cpp") +bazel_dep(name = "prometheus-cpp", version = "1.3.0.bcr.1", repo_name = "com_github_jupp0r_prometheus_cpp") bazel_dep(name = "protobuf", version = "31.1", repo_name = "com_google_protobuf") bazel_dep(name = "rapidyaml", version = "0.9.0") bazel_dep(name = "rules_proto", version = "7.0.2") diff --git a/ci/do_ci.sh b/ci/do_ci.sh index 76363f7250..f67331c02f 100755 --- a/ci/do_ci.sh +++ b/ci/do_ci.sh @@ -69,6 +69,9 @@ MAKE_COMMAND="make -k -j \$(nproc)" echo "make command: ${MAKE_COMMAND}" +export BAZEL_CXXOPTS="-std=c++17" + + BAZEL_OPTIONS_DEFAULT="--copt=-DENABLE_METRICS_EXEMPLAR_PREVIEW --//exporters/otlp:with_otlp_grpc_credential_preview=true" BAZEL_OPTIONS="$BAZEL_OPTIONS_DEFAULT" @@ -574,8 +577,10 @@ elif [[ "$1" == "bazel.noexcept" ]]; then # there are some exceptions and error handling code from the Prometheus Client # as well as Opentracing shim (due to some third party code in its Opentracing dependency) # that make this test always fail. Ignore these packages in the noexcept test here. - bazel $BAZEL_STARTUP_OPTIONS build --copt=-fno-exceptions $BAZEL_OPTIONS_ASYNC -- //... -//exporters/prometheus/... -//examples/prometheus/... -//opentracing-shim/... -//examples/configuration/... -//sdk/src/configuration/... -//sdk/test/configuration/... - bazel $BAZEL_STARTUP_OPTIONS test --copt=-fno-exceptions $BAZEL_TEST_OPTIONS_ASYNC -- //... -//exporters/prometheus/... -//examples/prometheus/... -//opentracing-shim/... -//examples/configuration/... -//sdk/src/configuration/... -//sdk/test/configuration/... + # Set the api:with_cxx_stdlib=none because C++17 std::variant::get<> throws + + bazel $BAZEL_STARTUP_OPTIONS build --copt=-fno-exceptions --//api:with_cxx_stdlib=none $BAZEL_OPTIONS_ASYNC -- //... -//exporters/prometheus/... -//examples/prometheus/... -//opentracing-shim/... -//examples/configuration/... -//sdk/src/configuration/... -//sdk/test/configuration/... + bazel $BAZEL_STARTUP_OPTIONS test --copt=-fno-exceptions --//api:with_cxx_stdlib=none $BAZEL_TEST_OPTIONS_ASYNC -- //... -//exporters/prometheus/... -//examples/prometheus/... -//opentracing-shim/... -//examples/configuration/... -//sdk/src/configuration/... -//sdk/test/configuration/... exit 0 elif [[ "$1" == "bazel.nortti" ]]; then # there are some exceptions and error handling code from the Prometheus Client From 2071d07364252e3e530ebe528b74819580b2c291 Mon Sep 17 00:00:00 2001 From: Douglas Barker Date: Sat, 4 Oct 2025 19:17:23 -0400 Subject: [PATCH 5/6] revert bazel build changes --- .bazelrc | 10 +++------- .github/workflows/ci.yml | 4 ++-- MODULE.bazel | 16 ++++++++-------- ci/do_ci.sh | 2 +- 4 files changed, 14 insertions(+), 18 deletions(-) diff --git a/.bazelrc b/.bazelrc index 58ff17e9f0..57cd0a2fa0 100644 --- a/.bazelrc +++ b/.bazelrc @@ -17,17 +17,15 @@ build --copt -DGRPC_BAZEL_BUILD build:windows --dynamic_mode=off # Set minimum supported C++ version -build:macos --host_cxxopt=-std=c++17 --cxxopt=-std=c++17 -build:linux --host_cxxopt=-std=c++17 --cxxopt=-std=c++17 -build:windows --host_cxxopt=/std:c++17 --cxxopt=/std:c++17 +build:macos --host_cxxopt=-std=c++14 --cxxopt=-std=c++14 +build:linux --host_cxxopt=-std=c++14 --cxxopt=-std=c++14 +build:windows --host_cxxopt=/std:c++14 --cxxopt=/std:c++14 # --config=asan : Address Sanitizer. common:asan --copt -DADDRESS_SANITIZER common:asan --copt -fsanitize=address,bool,float-cast-overflow,integer-divide-by-zero,null,return,returns-nonnull-attribute,shift-exponent,signed-integer-overflow,unreachable,vla-bound common:asan --copt -fsanitize-address-use-after-scope common:asan --copt -fno-sanitize-recover=all -common:asan --cxxopt -std=c++17 - common:asan --linkopt -fsanitize=address,bool,float-cast-overflow,integer-divide-by-zero,null,return,returns-nonnull-attribute,shift-exponent,signed-integer-overflow,unreachable,vla-bound common:asan --linkopt -fsanitize-address-use-after-scope common:asan --linkopt -fno-sanitize-recover=all @@ -36,10 +34,8 @@ common:asan --cc_output_directory_tag=asan # --config=tsan : Thread Sanitizer. common:tsan --copt -fsanitize=thread common:tsan --copt -DTHREAD_SANITIZER -common:tsan --cxxopt -std=c++17 common:tsan --linkopt -fsanitize=thread common:tsan --cc_output_directory_tag=tsan - # This is needed to address false positive problem with abseil.The same setting as gRPC # https://github.com/google/sanitizers/issues/953 common:tsan --test_env=TSAN_OPTIONS=report_atomic_races=0 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 16d98dd801..fa2610da8a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -67,7 +67,7 @@ jobs: egress-policy: audit - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: - submodules: 'none' + submodules: 'false' - name: setup run: | sudo -E ./ci/setup_ci_environment.sh @@ -927,7 +927,7 @@ jobs: with: submodules: 'recursive' - name: Install CMake - env: + env: CMAKE_VERSION: 3.31.6 # the macos runner installs CMake 4.x and is not compatible with opentracing run: | ./ci/setup_cmake_macos.sh diff --git a/MODULE.bazel b/MODULE.bazel index 315ca7d86b..81abe235f3 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -8,19 +8,19 @@ module( repo_name = "io_opentelemetry_cpp", ) -bazel_dep(name = "abseil-cpp", version = "20250512.1", repo_name = "com_google_absl") +bazel_dep(name = "abseil-cpp", version = "20240116.1", repo_name = "com_google_absl") bazel_dep(name = "bazel_skylib", version = "1.7.1") -bazel_dep(name = "curl", version = "8.11.0") -bazel_dep(name = "grpc", version = "1.74.1", repo_name = "com_github_grpc_grpc") +bazel_dep(name = "curl", version = "8.8.0") +bazel_dep(name = "grpc", version = "1.66.0.bcr.2", repo_name = "com_github_grpc_grpc") bazel_dep(name = "nlohmann_json", version = "3.12.0", repo_name = "github_nlohmann_json") bazel_dep(name = "opentelemetry-proto", version = "1.7.0", repo_name = "com_github_opentelemetry_proto") bazel_dep(name = "opentracing-cpp", version = "1.6.0", repo_name = "com_github_opentracing") bazel_dep(name = "platforms", version = "0.0.11") -bazel_dep(name = "prometheus-cpp", version = "1.3.0.bcr.1", repo_name = "com_github_jupp0r_prometheus_cpp") -bazel_dep(name = "protobuf", version = "31.1", repo_name = "com_google_protobuf") +bazel_dep(name = "prometheus-cpp", version = "1.3.0", repo_name = "com_github_jupp0r_prometheus_cpp") +bazel_dep(name = "protobuf", version = "29.0", repo_name = "com_google_protobuf") bazel_dep(name = "rapidyaml", version = "0.9.0") bazel_dep(name = "rules_proto", version = "7.0.2") -bazel_dep(name = "zlib", version = "1.3.1.bcr.7") +bazel_dep(name = "zlib", version = "1.3.1.bcr.5") -bazel_dep(name = "google_benchmark", version = "1.9.4", dev_dependency = True, repo_name = "com_github_google_benchmark") -bazel_dep(name = "googletest", version = "1.17.0.bcr.1", dev_dependency = True, repo_name = "com_google_googletest") +bazel_dep(name = "google_benchmark", version = "1.8.4", dev_dependency = True, repo_name = "com_github_google_benchmark") +bazel_dep(name = "googletest", version = "1.14.0.bcr.1", dev_dependency = True, repo_name = "com_google_googletest") diff --git a/ci/do_ci.sh b/ci/do_ci.sh index f67331c02f..603d6012b4 100755 --- a/ci/do_ci.sh +++ b/ci/do_ci.sh @@ -578,7 +578,7 @@ elif [[ "$1" == "bazel.noexcept" ]]; then # as well as Opentracing shim (due to some third party code in its Opentracing dependency) # that make this test always fail. Ignore these packages in the noexcept test here. # Set the api:with_cxx_stdlib=none because C++17 std::variant::get<> throws - + bazel $BAZEL_STARTUP_OPTIONS build --copt=-fno-exceptions --//api:with_cxx_stdlib=none $BAZEL_OPTIONS_ASYNC -- //... -//exporters/prometheus/... -//examples/prometheus/... -//opentracing-shim/... -//examples/configuration/... -//sdk/src/configuration/... -//sdk/test/configuration/... bazel $BAZEL_STARTUP_OPTIONS test --copt=-fno-exceptions --//api:with_cxx_stdlib=none $BAZEL_TEST_OPTIONS_ASYNC -- //... -//exporters/prometheus/... -//examples/prometheus/... -//opentracing-shim/... -//examples/configuration/... -//sdk/src/configuration/... -//sdk/test/configuration/... exit 0 From 1892972189e42ef50e44afe8d48fa01934daf4b9 Mon Sep 17 00:00:00 2001 From: Douglas Barker Date: Sat, 4 Oct 2025 19:52:08 -0400 Subject: [PATCH 6/6] revert more bazel changes. Checkout the googletest submodule for the fetch content test --- .bazelversion | 2 +- .github/workflows/ci.yml | 3 +++ ci/install_bazelisk.sh | 2 +- ci/install_windows_bazelisk.ps1 | 2 +- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.bazelversion b/.bazelversion index e8be68404b..21c8c7b46b 100644 --- a/.bazelversion +++ b/.bazelversion @@ -1 +1 @@ -7.6.1 +7.1.1 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fa2610da8a..3f3f1ffdc0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -68,6 +68,9 @@ jobs: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: submodules: 'false' + - name: checkout googletest + run: | + git submodule update --init --recursive ./third_party/googletest - name: setup run: | sudo -E ./ci/setup_ci_environment.sh diff --git a/ci/install_bazelisk.sh b/ci/install_bazelisk.sh index a0d1218de5..674ca215e9 100755 --- a/ci/install_bazelisk.sh +++ b/ci/install_bazelisk.sh @@ -5,7 +5,7 @@ set -e -BAZELISK_VERSION=v1.27.0 +BAZELISK_VERSION=v1.16.0 wget -O /usr/local/bin/bazel https://github.com/bazelbuild/bazelisk/releases/download/$BAZELISK_VERSION/bazelisk-linux-amd64 chmod +x /usr/local/bin/bazel diff --git a/ci/install_windows_bazelisk.ps1 b/ci/install_windows_bazelisk.ps1 index c86036d807..2f1f48c1e2 100644 --- a/ci/install_windows_bazelisk.ps1 +++ b/ci/install_windows_bazelisk.ps1 @@ -4,7 +4,7 @@ $ErrorActionPreference = "Stop" trap { $host.SetShouldExit(1) } -$BAZELISK_VERSION="1.27.0" +$BAZELISK_VERSION="1.16.0" $CWD=(Get-Item -Path ".\").FullName (new-object System.Net.WebClient). ` DownloadFile("https://github.com/bazelbuild/bazelisk/releases/download/v$BAZELISK_VERSION/bazelisk-windows-amd64.exe",