diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5f9e3bfd6a..3f3f1ffdc0 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: | @@ -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,10 @@ jobs: egress-policy: audit - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: - submodules: 'recursive' + submodules: 'false' + - name: checkout googletest + run: | + git submodule update --init --recursive ./third_party/googletest - name: setup run: | sudo -E ./ci/setup_ci_environment.sh @@ -86,7 +89,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 +123,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 +157,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 +185,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 +264,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 +298,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 +443,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' @@ -889,6 +929,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: @@ -1177,7 +1222,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/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/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/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..603d6012b4 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" @@ -92,7 +95,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") @@ -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 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 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