From 08b9b3a78d28ebf13e1b3cc6b6263b1174483789 Mon Sep 17 00:00:00 2001 From: Douglas Barker Date: Sun, 6 Apr 2025 12:30:21 -0600 Subject: [PATCH 01/16] update setup_cmake* scripts to verify the versions installed --- ci/setup_cmake.ps1 | 35 +++++++++++++++++++++++++++++++++- ci/setup_cmake.sh | 42 ++++++++++++++++++++++++++++------------- ci/setup_cmake_macos.sh | 35 ++++++++++++++++++++++------------ 3 files changed, 86 insertions(+), 26 deletions(-) diff --git a/ci/setup_cmake.ps1 b/ci/setup_cmake.ps1 index dbe332d139..9846517abf 100644 --- a/ci/setup_cmake.ps1 +++ b/ci/setup_cmake.ps1 @@ -12,4 +12,37 @@ choco uninstall cmake cmake.install -y --remove-dependencies --skip-autouninstal Write-Host "Installing CMake version $CMAKE_VERSION ..." choco install cmake --version=$CMAKE_VERSION --allow-downgrade -y --force --no-progress -cmake --version +function Get-Version { + param ( + [string]$output + ) + if ($output -match '(\d+\.\d+\.\d+)') { + return $matches[1] + } + return $null +} + +$cmakeOutput = & cmake --version | Select-Object -First 1 +$ctestOutput = & ctest --version | Select-Object -First 1 +$cpackOutput = & cpack --version | Select-Object -First 1 + +$cmakeVersion = Get-Version $cmakeOutput +$ctestVersion = Get-Version $ctestOutput +$cpackVersion = Get-Version $cpackOutput + +Write-Host "cmake version $cmakeVersion detected" +Write-Host "ctest version $ctestVersion detected" +Write-Host "cpack version $cpackVersion detected" + +if ($cmakeVersion -ne $CMAKE_VERSION) { + Write-Error "CMake version mismatch: expected $CMAKE_VERSION, installed $cmakeVersion" + exit 1 +} +if ($ctestVersion -ne $CMAKE_VERSION) { + Write-Error "CTest version mismatch: expected $CMAKE_VERSION, installed $ctestVersion" + exit 1 +} +if ($cpackVersion -ne $CMAKE_VERSION) { + Write-Error "CPack version mismatch: expected $CMAKE_VERSION, installed $cpackVersion" + exit 1 +} \ No newline at end of file diff --git a/ci/setup_cmake.sh b/ci/setup_cmake.sh index e6e297e338..365b3e01ba 100755 --- a/ci/setup_cmake.sh +++ b/ci/setup_cmake.sh @@ -6,27 +6,43 @@ set -e CMAKE_VERSION=${CMAKE_VERSION:-3.31.6} -CMAKE_DIR="cmake-$CMAKE_VERSION-linux-x86_64" -CMAKE_TAR="$CMAKE_DIR.tar.gz" -CMAKE_URL="https://github.com/Kitware/CMake/releases/download/v$CMAKE_VERSION/$CMAKE_TAR" +CMAKE_DIR="cmake-${CMAKE_VERSION}-linux-x86_64" +CMAKE_TAR="${CMAKE_DIR}.tar.gz" +CMAKE_URL="https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/${CMAKE_TAR}" -echo "Installing CMake version: $CMAKE_VERSION" +INSTALL_DIR="/opt/cmake" + +echo "Installing CMake version: ${CMAKE_VERSION}..." apt-get update && apt-get remove --purge -y cmake || true apt-get install -y wget tar -wget "$CMAKE_URL" - -tar -xzf "$CMAKE_TAR" +wget "${CMAKE_URL}" -mkdir -p /opt/cmake -mv "$CMAKE_DIR" /opt/cmake/cmake +mkdir -p "${INSTALL_DIR}" +tar --strip-components=1 -xzf "${CMAKE_TAR}" -C "${INSTALL_DIR}" -for file in /opt/cmake/cmake/bin/*; do - ln -sf "$file" "/usr/local/bin/$(basename "$file")" +for executable in "${INSTALL_DIR}/bin/"*; do + exe_name=$(basename "$executable") + ln -sf "$executable" "/usr/local/bin/$exe_name" done -rm -f "$CMAKE_TAR" +rm -f "${CMAKE_TAR}" + +echo "Verifying installed versions..." + +for executable in cmake ctest cpack; do + if command -v "$executable" >/dev/null 2>&1; then + ACTUAL_VERSION=$("$executable" --version | grep -Eo '[0-9]+(\.[0-9]+)*' | head -n 1) + echo "$executable version: $ACTUAL_VERSION detected" + if [ "$ACTUAL_VERSION" != "$CMAKE_VERSION" ]; then + echo "E: $executable version mismatch. Expected $CMAKE_VERSION, found '$ACTUAL_VERSION'" >&2 + exit 1 + fi + else + echo "E: $executable is not installed or not in PATH." >&2 + exit 1 + fi +done -cmake --version diff --git a/ci/setup_cmake_macos.sh b/ci/setup_cmake_macos.sh index 5208c9cd24..54cbdae5e2 100755 --- a/ci/setup_cmake_macos.sh +++ b/ci/setup_cmake_macos.sh @@ -11,30 +11,41 @@ CMAKE_TAR="${CMAKE_PKG}.tar.gz" CMAKE_URL="https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/${CMAKE_TAR}" INSTALL_DIR="/opt/cmake" -BIN_DIR="${INSTALL_DIR}/cmake/CMake.app/Contents/bin" echo "Installing CMake version ${CMAKE_VERSION}..." -if brew list cmake >/dev/null 2>&1; then - echo "Removing existing Homebrew-installed CMake..." - brew uninstall cmake -fi +brew uninstall cmake || true if ! command -v wget >/dev/null 2>&1; then - echo "wget not found. Installing wget via Homebrew..." + echo "Installing wget..." brew install wget fi wget -q "${CMAKE_URL}" -tar -xzf "${CMAKE_TAR}" - sudo mkdir -p "${INSTALL_DIR}" -sudo mv "${CMAKE_PKG}" "${INSTALL_DIR}/cmake" +sudo tar --strip-components=1 -xzf "${CMAKE_TAR}" -C "${INSTALL_DIR}" -for file in "${BIN_DIR}"/*; do - sudo ln -sf "${file}" "/usr/local/bin/$(basename "${file}")" +BINARY_DIR="${INSTALL_DIR}/CMake.app/Contents/bin" + +for executable in "${BINARY_DIR}/"*; do + exe_name=$(basename "$executable") + sudo ln -sf "$executable" "/usr/local/bin/$exe_name" done rm -f "${CMAKE_TAR}" -cmake --version +echo "Verifying installed versions..." + +for executable in cmake ctest cpack; do + if command -v "$executable" >/dev/null 2>&1; then + ACTUAL_VERSION=$("$executable" --version | grep -Eo '[0-9]+(\.[0-9]+)*' | head -n 1) + echo "$executable version: $ACTUAL_VERSION detected" + if [ "$ACTUAL_VERSION" != "$CMAKE_VERSION" ]; then + echo "E: $executable version mismatch. Expected $CMAKE_VERSION, found '$ACTUAL_VERSION'" >&2 + exit 1 + fi + else + echo "E: $executable is not installed or not in PATH." >&2 + exit 1 + fi +done From e9cabbb258dcbc89286f431bb19fef746dfec1de Mon Sep 17 00:00:00 2001 From: Douglas Barker Date: Sun, 6 Apr 2025 12:33:18 -0600 Subject: [PATCH 02/16] set cmake minimum version to 3.14. Fix issues found in tested with the min version --- CMakeLists.txt | 45 +++++++++---------- ci/do_ci.ps1 | 28 +++++++----- ci/do_ci.sh | 25 ++++++----- ci/install_protobuf.sh | 4 +- ci/setup_grpc.sh | 8 ++-- cmake/tools.cmake | 9 ++++ docker/grpc/CMakeLists.txt | 2 +- install/test/cmake/CMakeLists.txt | 2 +- .../cmake/component_tests/api/CMakeLists.txt | 6 +-- .../exporters_elasticsearch/CMakeLists.txt | 6 +-- .../exporters_etw/CMakeLists.txt | 4 +- .../exporters_in_memory/CMakeLists.txt | 5 +-- .../exporters_ostream/CMakeLists.txt | 6 +-- .../exporters_otlp_common/CMakeLists.txt | 4 +- .../exporters_otlp_file/CMakeLists.txt | 6 +-- .../exporters_otlp_grpc/CMakeLists.txt | 6 +-- .../exporters_otlp_http/CMakeLists.txt | 6 +-- .../exporters_prometheus/CMakeLists.txt | 4 +- .../exporters_zipkin/CMakeLists.txt | 4 +- .../component_tests/ext_common/CMakeLists.txt | 4 +- .../component_tests/ext_dll/CMakeLists.txt | 4 +- .../ext_http_curl/CMakeLists.txt | 6 +-- .../cmake/component_tests/sdk/CMakeLists.txt | 6 +-- .../shims_opentracing/CMakeLists.txt | 4 +- .../test/cmake/package_test/CMakeLists.txt | 4 +- .../missing_components/CMakeLists.txt | 2 +- .../usage_tests/no_components/CMakeLists.txt | 2 +- .../unsorted_components/CMakeLists.txt | 2 +- .../unsupported_components/CMakeLists.txt | 2 +- 29 files changed, 114 insertions(+), 102 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4414f38002..0db26ee130 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,23 +1,7 @@ # Copyright The OpenTelemetry Authors # SPDX-License-Identifier: Apache-2.0 -cmake_minimum_required(VERSION 3.10) - -# See https://cmake.org/cmake/help/latest/policy/CMP0074.html required by -# certain version of zlib which CURL depends on. -if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.12") - cmake_policy(SET CMP0074 NEW) -endif() - -# Allow to use normal variable for option() -if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.13") - cmake_policy(SET CMP0077 NEW) -endif() - -# Prefer CMAKE_MSVC_RUNTIME_LIBRARY if possible -if(POLICY CMP0091) - cmake_policy(SET CMP0091 NEW) -endif() +cmake_minimum_required(VERSION 3.14) if(POLICY CMP0092) # https://cmake.org/cmake/help/latest/policy/CMP0092.html#policy:CMP0092 Make @@ -36,8 +20,10 @@ project(opentelemetry-cpp) # Mark variables as used so cmake doesn't complain about them mark_as_advanced(CMAKE_TOOLCHAIN_FILE) -# Prefer cmake CONFIG to auto resolve dependencies. This is important to -# properly find protobuf versions 3.22.0 and above +# Note: CMAKE_FIND_PACKAGE_PREFER_CONFIG requires cmake 3.15 +# Prefer cmake CONFIG to auto resolve dependencies. +# This is important to properly find protobuf versions +# 3.22.0 and above due to the abseil-cpp dependency. set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE) # Don't use customized cmake modules if vcpkg is used to resolve dependence. @@ -420,9 +406,18 @@ if(WITH_OTLP_GRPC OR WITH_OTLP_HTTP OR WITH_OTLP_FILE) - find_package(Protobuf) - # Protobuf 3.22 or upper require abseil-cpp, we can find it in - # opentelemetry-cpp-config.cmake + # Note: remove once cmake 3.14 is no longer supported + # including the CMakeFindDependencyMacro is required with cmake 3.14 + # due to an issue with the gRPCConfig.cmake file. + include(CMakeFindDependencyMacro) + + # Protobuf 3.22 and up requires abseil-cpp. This is found using the + # CONFIG search mode. In cmake 3.14 we must manually + # try config mode first then fall back to MODULE mode + find_package(Protobuf CONFIG) + if(NOT Protobuf_FOUND AND NOT PROTOBUF_FOUND) + find_package(Protobuf MODULE) + endif() if(WITH_OTLP_GRPC) find_package(gRPC CONFIG) @@ -441,7 +436,7 @@ if(WITH_OTLP_GRPC endif() if(NOT Protobuf_FOUND AND NOT PROTOBUF_FOUND) - find_package(Protobuf REQUIRED) + find_package(Protobuf CONFIG REQUIRED) endif() if(NOT gRPC_FOUND AND WITH_OTLP_GRPC) find_package(gRPC CONFIG) @@ -800,10 +795,10 @@ if(gRPC_FOUND) message(STATUS "gRPC: ${gRPC_VERSION}") endif() if(CURL_FOUND) - message(STATUS "CURL: ${CURL_VERSION}") + message(STATUS "CURL: ${CURL_VERSION_STRING}") endif() if(ZLIB_FOUND) - message(STATUS "ZLIB: ${ZLIB_VERSION}") + message(STATUS "ZLIB: ${ZLIB_VERSION_STRING}") endif() if(USE_NLOHMANN_JSON) message(STATUS "nlohmann-json: ${nlohmann_json_VERSION}") diff --git a/ci/do_ci.ps1 b/ci/do_ci.ps1 index e34d72d5e4..87aa73b6fa 100644 --- a/ci/do_ci.ps1 +++ b/ci/do_ci.ps1 @@ -388,6 +388,8 @@ switch ($action) { -DWITH_ELASTICSEARCH=ON ` -DWITH_ETW=ON ` -DWITH_EXAMPLES=ON ` + -DWITH_EXAMPLES_HTTP=ON ` + -DBUILD_W3CTRACECONTEXT_TEST=ON ` -DOPENTELEMETRY_INSTALL=ON $exit = $LASTEXITCODE @@ -435,19 +437,21 @@ switch ($action) { ) $EXPECTED_COMPONENTS_STRING = $EXPECTED_COMPONENTS -join ";" - cmake -S "$SRC_DIR\install\test\cmake" ` - -B "$BUILD_DIR\install_test" ` - $CMAKE_OPTIONS ` + mkdir "$BUILD_DIR\install_test" + cd "$BUILD_DIR\install_test" + + cmake $CMAKE_OPTIONS ` "-DCMAKE_PREFIX_PATH=$INSTALL_TEST_DIR" ` "-DINSTALL_TEST_CMAKE_OPTIONS=$CMAKE_OPTIONS_STRING" ` - "-DINSTALL_TEST_COMPONENTS=$EXPECTED_COMPONENTS_STRING" + "-DINSTALL_TEST_COMPONENTS=$EXPECTED_COMPONENTS_STRING" ` + -S "$SRC_DIR\install\test\cmake" $exit = $LASTEXITCODE if ($exit -ne 0) { exit $exit } - ctest -C Debug --test-dir "$BUILD_DIR\install_test" --output-on-failure + ctest -C Debug --output-on-failure $exit = $LASTEXITCODE if ($exit -ne 0) { exit $exit @@ -528,20 +532,22 @@ switch ($action) { "ext_dll" ) $EXPECTED_COMPONENTS_STRING = $EXPECTED_COMPONENTS -join ";" - - cmake -S "$SRC_DIR\install\test\cmake" ` - -B "$BUILD_DIR\install_test" ` - $CMAKE_OPTIONS ` + + mkdir "$BUILD_DIR\install_test" + cd "$BUILD_DIR\install_test" + + cmake $CMAKE_OPTIONS ` "-DCMAKE_PREFIX_PATH=$INSTALL_TEST_DIR" ` "-DINSTALL_TEST_CMAKE_OPTIONS=$CMAKE_OPTIONS_STRING" ` - "-DINSTALL_TEST_COMPONENTS=$EXPECTED_COMPONENTS_STRING" + "-DINSTALL_TEST_COMPONENTS=$EXPECTED_COMPONENTS_STRING" ` + -S "$SRC_DIR\install\test\cmake" $exit = $LASTEXITCODE if ($exit -ne 0) { exit $exit } - ctest -C Debug --test-dir "$BUILD_DIR\install_test" --output-on-failure + ctest -C Debug --output-on-failure $exit = $LASTEXITCODE if ($exit -ne 0) { exit $exit diff --git a/ci/do_ci.sh b/ci/do_ci.sh index f81e96469d..24f6707dd6 100755 --- a/ci/do_ci.sh +++ b/ci/do_ci.sh @@ -265,13 +265,14 @@ elif [[ "$1" == "cmake.opentracing_shim.install.test" ]]; then "shims_opentracing" ) EXPECTED_COMPONENTS_STRING=$(IFS=\;; echo "${EXPECTED_COMPONENTS[*]}") - cmake -S "${SRC_DIR}/install/test/cmake" \ - -B "${BUILD_DIR}/install_test" \ - "${CMAKE_OPTIONS[@]}" \ + mkdir -p "${BUILD_DIR}/install_test" + cd "${BUILD_DIR}/install_test" + cmake "${CMAKE_OPTIONS[@]}" \ "-DCMAKE_PREFIX_PATH=${INSTALL_TEST_DIR}" \ "-DINSTALL_TEST_CMAKE_OPTIONS=${CMAKE_OPTIONS_STRING}" \ - "-DINSTALL_TEST_COMPONENTS=${EXPECTED_COMPONENTS_STRING}" - ctest --test-dir "${BUILD_DIR}/install_test" --output-on-failure + "-DINSTALL_TEST_COMPONENTS=${EXPECTED_COMPONENTS_STRING}" \ + -S "${SRC_DIR}/install/test/cmake" + ctest --output-on-failure exit 0 elif [[ "$1" == "cmake.c++20.test" ]]; then cd "${BUILD_DIR}" @@ -476,6 +477,8 @@ elif [[ "$1" == "cmake.install.test" ]]; then -DWITH_ZIPKIN=ON \ -DWITH_ELASTICSEARCH=ON \ -DWITH_EXAMPLES=ON \ + -DWITH_EXAMPLES_HTTP=ON \ + -DBUILD_W3CTRACECONTEXT_TEST=ON \ -DOPENTELEMETRY_INSTALL=ON \ "${SRC_DIR}" @@ -502,14 +505,14 @@ elif [[ "$1" == "cmake.install.test" ]]; then "exporters_zipkin" ) EXPECTED_COMPONENTS_STRING=$(IFS=\;; echo "${EXPECTED_COMPONENTS[*]}") - - cmake -S "${SRC_DIR}/install/test/cmake" \ - -B "${BUILD_DIR}/install_test" \ - "${CMAKE_OPTIONS[@]}" \ + mkdir -p "${BUILD_DIR}/install_test" + cd "${BUILD_DIR}/install_test" + cmake "${CMAKE_OPTIONS[@]}" \ "-DCMAKE_PREFIX_PATH=${INSTALL_TEST_DIR}" \ "-DINSTALL_TEST_CMAKE_OPTIONS=${CMAKE_OPTIONS_STRING}" \ - "-DINSTALL_TEST_COMPONENTS=${EXPECTED_COMPONENTS_STRING}" - ctest --test-dir "${BUILD_DIR}/install_test" --output-on-failure + "-DINSTALL_TEST_COMPONENTS=${EXPECTED_COMPONENTS_STRING}" \ + -S "${SRC_DIR}/install/test/cmake" + ctest --output-on-failure exit 0 elif [[ "$1" == "cmake.test_example_plugin" ]]; then # Build the plugin diff --git a/ci/install_protobuf.sh b/ci/install_protobuf.sh index 1fa999d63d..ac041b6334 100755 --- a/ci/install_protobuf.sh +++ b/ci/install_protobuf.sh @@ -70,7 +70,7 @@ if [ -e "../CMakeLists.txt" ]; then else cmake ../cmake "${CPP_PROTOBUF_BUILD_OPTIONS[@]}" fi -cmake --build . -j $(nproc) -cmake --install . +make -j $(nproc) +make install popd ldconfig diff --git a/ci/setup_grpc.sh b/ci/setup_grpc.sh index 056cc089d7..c922af50c7 100755 --- a/ci/setup_grpc.sh +++ b/ci/setup_grpc.sh @@ -114,7 +114,9 @@ if [[ $build_internal_abseil_cpp -ne 0 ]]; then ABSEIL_CPP_BUILD_OPTIONS=(${ABSEIL_CPP_BUILD_OPTIONS[@]} "-DBUILD_SHARED_LIBS=$build_shared_libs") fi cmake "${ABSEIL_CPP_BUILD_OPTIONS[@]}" .. - cmake --build . -j${nproc} --target install && popd + make -j $(nproc) + make install + popd fi mkdir -p build && pushd build @@ -144,8 +146,8 @@ echo "Building gRPC ${install_grpc_version}" echo "CMake build options:" "${GRPC_BUILD_OPTIONS[@]}" cmake "${GRPC_BUILD_OPTIONS[@]}" .. -cmake --build . -j$(nproc) -cmake --install . +make -j $(nproc) +make install popd popd diff --git a/cmake/tools.cmake b/cmake/tools.cmake index 43c1a7b43f..ffc3732d2b 100644 --- a/cmake/tools.cmake +++ b/cmake/tools.cmake @@ -94,6 +94,15 @@ function(patch_protobuf_targets) endfunction() function(project_build_tools_get_imported_location OUTPUT_VAR_NAME TARGET_NAME) + + # The following if statement was added to support cmake versions < 3.19 + get_target_property(TARGET_TYPE ${TARGET_NAME} TYPE) + if(TARGET_TYPE STREQUAL "INTERFACE_LIBRARY") + # For interface libraries, do not attempt to retrieve imported location. + set(${OUTPUT_VAR_NAME} "" PARENT_SCOPE) + return() + endif() + if(CMAKE_BUILD_TYPE) string(TOUPPER "IMPORTED_LOCATION_${CMAKE_BUILD_TYPE}" TRY_SPECIFY_IMPORTED_LOCATION) diff --git a/docker/grpc/CMakeLists.txt b/docker/grpc/CMakeLists.txt index 7254da1dcc..95ddf7db82 100644 --- a/docker/grpc/CMakeLists.txt +++ b/docker/grpc/CMakeLists.txt @@ -1,7 +1,7 @@ # Copyright The OpenTelemetry Authors # SPDX-License-Identifier: Apache-2.0 -cmake_minimum_required(VERSION 3.11 FATAL_ERROR) +cmake_minimum_required(VERSION 3.14 FATAL_ERROR) project( dependencies diff --git a/install/test/cmake/CMakeLists.txt b/install/test/cmake/CMakeLists.txt index 1c8b69fc07..fc6227894e 100644 --- a/install/test/cmake/CMakeLists.txt +++ b/install/test/cmake/CMakeLists.txt @@ -1,7 +1,7 @@ # Copyright The OpenTelemetry Authors # SPDX-License-Identifier: Apache-2.0 -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.14) project(opentelemetry-cpp-component-install-tests LANGUAGES CXX) if(NOT INSTALL_TEST_CMAKE_OPTIONS) diff --git a/install/test/cmake/component_tests/api/CMakeLists.txt b/install/test/cmake/component_tests/api/CMakeLists.txt index e4a963ab81..756c7afc7a 100644 --- a/install/test/cmake/component_tests/api/CMakeLists.txt +++ b/install/test/cmake/component_tests/api/CMakeLists.txt @@ -1,7 +1,7 @@ # Copyright The OpenTelemetry Authors # SPDX-License-Identifier: Apache-2.0 -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.14) project(opentelemetry-cpp-api-install-test LANGUAGES CXX) @@ -11,7 +11,7 @@ find_package(GTest REQUIRED) include(GoogleTest) add_executable(api_test ${INSTALL_TEST_SRC_DIR}/test_api.cc) -target_link_libraries(api_test PRIVATE opentelemetry-cpp::api GTest::gtest - GTest::gtest_main) +target_link_libraries(api_test PRIVATE opentelemetry-cpp::api GTest::GTest + GTest::Main) gtest_discover_tests(api_test) diff --git a/install/test/cmake/component_tests/exporters_elasticsearch/CMakeLists.txt b/install/test/cmake/component_tests/exporters_elasticsearch/CMakeLists.txt index 3019aa1d2a..8a3c39285f 100644 --- a/install/test/cmake/component_tests/exporters_elasticsearch/CMakeLists.txt +++ b/install/test/cmake/component_tests/exporters_elasticsearch/CMakeLists.txt @@ -1,7 +1,7 @@ # Copyright The OpenTelemetry Authors # SPDX-License-Identifier: Apache-2.0 -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.14) project(opentelemetry-cpp-exporters-elasticsearch-install-test LANGUAGES CXX) find_package(opentelemetry-cpp REQUIRED COMPONENTS exporters_elasticsearch) @@ -17,7 +17,7 @@ add_executable(exporters_elasticsearch_test ${INSTALL_TEST_SRC_DIR}/test_exporters_elasticsearch.cc) target_link_libraries( exporters_elasticsearch_test - PRIVATE opentelemetry-cpp::elasticsearch_log_record_exporter GTest::gtest - GTest::gtest_main) + PRIVATE opentelemetry-cpp::elasticsearch_log_record_exporter GTest::GTest + GTest::Main) gtest_discover_tests(exporters_elasticsearch_test) diff --git a/install/test/cmake/component_tests/exporters_etw/CMakeLists.txt b/install/test/cmake/component_tests/exporters_etw/CMakeLists.txt index 4860a2f1f5..98957cdc84 100644 --- a/install/test/cmake/component_tests/exporters_etw/CMakeLists.txt +++ b/install/test/cmake/component_tests/exporters_etw/CMakeLists.txt @@ -1,7 +1,7 @@ # Copyright The OpenTelemetry Authors # SPDX-License-Identifier: Apache-2.0 -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.14) project(opentelemetry-cpp-exporters_etw-install-test LANGUAGES CXX) find_package(opentelemetry-cpp REQUIRED COMPONENTS exporters_etw) @@ -15,6 +15,6 @@ include(GoogleTest) add_executable(exporters_etw_test ${INSTALL_TEST_SRC_DIR}/test_exporters_etw.cc) target_link_libraries(exporters_etw_test PRIVATE opentelemetry-cpp::etw_exporter - GTest::gtest GTest::gtest_main) + GTest::GTest GTest::Main) gtest_discover_tests(exporters_etw_test) diff --git a/install/test/cmake/component_tests/exporters_in_memory/CMakeLists.txt b/install/test/cmake/component_tests/exporters_in_memory/CMakeLists.txt index e24b7761fa..c7b7db369c 100644 --- a/install/test/cmake/component_tests/exporters_in_memory/CMakeLists.txt +++ b/install/test/cmake/component_tests/exporters_in_memory/CMakeLists.txt @@ -1,7 +1,7 @@ # Copyright The OpenTelemetry Authors # SPDX-License-Identifier: Apache-2.0 -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.14) project(opentelemetry-cpp-exporters-in-memory-install-test LANGUAGES CXX) find_package(opentelemetry-cpp REQUIRED COMPONENTS exporters_in_memory) @@ -14,7 +14,6 @@ add_executable(exporters_in_memory_test target_link_libraries( exporters_in_memory_test PRIVATE opentelemetry-cpp::in_memory_span_exporter - opentelemetry-cpp::in_memory_metric_exporter GTest::gtest - GTest::gtest_main) + opentelemetry-cpp::in_memory_metric_exporter GTest::GTest GTest::Main) gtest_discover_tests(exporters_in_memory_test) diff --git a/install/test/cmake/component_tests/exporters_ostream/CMakeLists.txt b/install/test/cmake/component_tests/exporters_ostream/CMakeLists.txt index eec0f26a7e..e845302f08 100644 --- a/install/test/cmake/component_tests/exporters_ostream/CMakeLists.txt +++ b/install/test/cmake/component_tests/exporters_ostream/CMakeLists.txt @@ -1,7 +1,7 @@ # Copyright The OpenTelemetry Authors # SPDX-License-Identifier: Apache-2.0 -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.14) project(opentelemetry-cpp-exporters-ostream-install-test LANGUAGES CXX) find_package(opentelemetry-cpp REQUIRED COMPONENTS exporters_ostream) @@ -15,8 +15,6 @@ target_link_libraries( exporters_ostream_test PRIVATE opentelemetry-cpp::ostream_log_record_exporter opentelemetry-cpp::ostream_metrics_exporter - opentelemetry-cpp::ostream_span_exporter - GTest::gtest - GTest::gtest_main) + opentelemetry-cpp::ostream_span_exporter GTest::GTest GTest::Main) gtest_discover_tests(exporters_ostream_test) diff --git a/install/test/cmake/component_tests/exporters_otlp_common/CMakeLists.txt b/install/test/cmake/component_tests/exporters_otlp_common/CMakeLists.txt index e7bd38fe1f..d2a44f337d 100644 --- a/install/test/cmake/component_tests/exporters_otlp_common/CMakeLists.txt +++ b/install/test/cmake/component_tests/exporters_otlp_common/CMakeLists.txt @@ -1,7 +1,7 @@ # Copyright The OpenTelemetry Authors # SPDX-License-Identifier: Apache-2.0 -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.14) project(opentelemetry-cpp-exporters-otlp-common-install-test LANGUAGES CXX) find_package(opentelemetry-cpp REQUIRED COMPONENTS exporters_otlp_common) @@ -18,6 +18,6 @@ add_executable(exporters_otlp_common_test target_link_libraries( exporters_otlp_common_test PRIVATE opentelemetry-cpp::proto opentelemetry-cpp::otlp_recordable - GTest::gtest GTest::gtest_main) + GTest::GTest GTest::Main) gtest_discover_tests(exporters_otlp_common_test) diff --git a/install/test/cmake/component_tests/exporters_otlp_file/CMakeLists.txt b/install/test/cmake/component_tests/exporters_otlp_file/CMakeLists.txt index e625a73bb3..bcc667d17b 100644 --- a/install/test/cmake/component_tests/exporters_otlp_file/CMakeLists.txt +++ b/install/test/cmake/component_tests/exporters_otlp_file/CMakeLists.txt @@ -1,7 +1,7 @@ # Copyright The OpenTelemetry Authors # SPDX-License-Identifier: Apache-2.0 -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.14) project(opentelemetry-cpp-exporters-otlp-file-install-test LANGUAGES CXX) find_package(opentelemetry-cpp REQUIRED COMPONENTS exporters_otlp_file) @@ -21,7 +21,7 @@ target_link_libraries( opentelemetry-cpp::otlp_file_exporter opentelemetry-cpp::otlp_file_log_record_exporter opentelemetry-cpp::otlp_file_metric_exporter - GTest::gtest - GTest::gtest_main) + GTest::GTest + GTest::Main) gtest_discover_tests(exporters_otlp_file_test) diff --git a/install/test/cmake/component_tests/exporters_otlp_grpc/CMakeLists.txt b/install/test/cmake/component_tests/exporters_otlp_grpc/CMakeLists.txt index 62665d10c8..a0db694190 100644 --- a/install/test/cmake/component_tests/exporters_otlp_grpc/CMakeLists.txt +++ b/install/test/cmake/component_tests/exporters_otlp_grpc/CMakeLists.txt @@ -1,7 +1,7 @@ # Copyright The OpenTelemetry Authors # SPDX-License-Identifier: Apache-2.0 -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.14) project(opentelemetry-cpp-exporters-otlp-grpc-install-test LANGUAGES CXX) find_package(opentelemetry-cpp REQUIRED COMPONENTS exporters_otlp_grpc) @@ -24,7 +24,7 @@ target_link_libraries( PRIVATE opentelemetry-cpp::otlp_grpc_exporter opentelemetry-cpp::otlp_grpc_log_record_exporter opentelemetry-cpp::otlp_grpc_metrics_exporter - GTest::gtest - GTest::gtest_main) + GTest::GTest + GTest::Main) gtest_discover_tests(exporters_otlp_grpc_test) diff --git a/install/test/cmake/component_tests/exporters_otlp_http/CMakeLists.txt b/install/test/cmake/component_tests/exporters_otlp_http/CMakeLists.txt index ca555c05cc..bf1b3fdf14 100644 --- a/install/test/cmake/component_tests/exporters_otlp_http/CMakeLists.txt +++ b/install/test/cmake/component_tests/exporters_otlp_http/CMakeLists.txt @@ -1,7 +1,7 @@ # Copyright The OpenTelemetry Authors # SPDX-License-Identifier: Apache-2.0 -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.14) project(opentelemetry-cpp-exporters-otlp-http-install-test LANGUAGES CXX) find_package(opentelemetry-cpp REQUIRED COMPONENTS exporters_otlp_http) @@ -21,7 +21,7 @@ target_link_libraries( opentelemetry-cpp::otlp_http_exporter opentelemetry-cpp::otlp_http_log_record_exporter opentelemetry-cpp::otlp_http_metric_exporter - GTest::gtest - GTest::gtest_main) + GTest::GTest + GTest::Main) gtest_discover_tests(exporters_otlp_http_test) diff --git a/install/test/cmake/component_tests/exporters_prometheus/CMakeLists.txt b/install/test/cmake/component_tests/exporters_prometheus/CMakeLists.txt index 78eaa26136..8d93635909 100644 --- a/install/test/cmake/component_tests/exporters_prometheus/CMakeLists.txt +++ b/install/test/cmake/component_tests/exporters_prometheus/CMakeLists.txt @@ -1,7 +1,7 @@ # Copyright The OpenTelemetry Authors # SPDX-License-Identifier: Apache-2.0 -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.14) project(opentelemetry-cpp-exporters-prometheus-install-test LANGUAGES CXX) find_package(opentelemetry-cpp REQUIRED COMPONENTS exporters_prometheus) @@ -17,6 +17,6 @@ add_executable(exporters_prometheus_test ${INSTALL_TEST_SRC_DIR}/test_exporters_prometheus.cc) target_link_libraries( exporters_prometheus_test PRIVATE opentelemetry-cpp::prometheus_exporter - GTest::gtest GTest::gtest_main) + GTest::GTest GTest::Main) gtest_discover_tests(exporters_prometheus_test) diff --git a/install/test/cmake/component_tests/exporters_zipkin/CMakeLists.txt b/install/test/cmake/component_tests/exporters_zipkin/CMakeLists.txt index cbbb7ba887..09b7d53c46 100644 --- a/install/test/cmake/component_tests/exporters_zipkin/CMakeLists.txt +++ b/install/test/cmake/component_tests/exporters_zipkin/CMakeLists.txt @@ -1,7 +1,7 @@ # Copyright The OpenTelemetry Authors # SPDX-License-Identifier: Apache-2.0 -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.14) project(opentelemetry-cpp-exporters-zipkin-install-test LANGUAGES CXX) find_package(opentelemetry-cpp REQUIRED COMPONENTS exporters_zipkin) @@ -17,6 +17,6 @@ add_executable(exporters_zipkin_test ${INSTALL_TEST_SRC_DIR}/test_exporters_zipkin.cc) target_link_libraries( exporters_zipkin_test PRIVATE opentelemetry-cpp::zipkin_trace_exporter - GTest::gtest GTest::gtest_main) + GTest::GTest GTest::Main) gtest_discover_tests(exporters_zipkin_test) diff --git a/install/test/cmake/component_tests/ext_common/CMakeLists.txt b/install/test/cmake/component_tests/ext_common/CMakeLists.txt index 0d6abde19f..203449fdf3 100644 --- a/install/test/cmake/component_tests/ext_common/CMakeLists.txt +++ b/install/test/cmake/component_tests/ext_common/CMakeLists.txt @@ -1,7 +1,7 @@ # Copyright The OpenTelemetry Authors # SPDX-License-Identifier: Apache-2.0 -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.14) project(opentelemetry-cpp-ext_common-install-test LANGUAGES CXX) find_package(opentelemetry-cpp REQUIRED COMPONENTS ext_common) @@ -11,6 +11,6 @@ include(GoogleTest) add_executable(ext_common_test ${INSTALL_TEST_SRC_DIR}/test_ext_common.cc) target_link_libraries(ext_common_test PRIVATE opentelemetry-cpp::ext - GTest::gtest GTest::gtest_main) + GTest::GTest GTest::Main) gtest_discover_tests(ext_common_test) diff --git a/install/test/cmake/component_tests/ext_dll/CMakeLists.txt b/install/test/cmake/component_tests/ext_dll/CMakeLists.txt index bfff138544..dce42009cb 100644 --- a/install/test/cmake/component_tests/ext_dll/CMakeLists.txt +++ b/install/test/cmake/component_tests/ext_dll/CMakeLists.txt @@ -1,7 +1,7 @@ # Copyright The OpenTelemetry Authors # SPDX-License-Identifier: Apache-2.0 -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.14) project(opentelemetry-cpp-ext_dll-install-test LANGUAGES CXX) find_package(opentelemetry-cpp REQUIRED COMPONENTS ext_dll) @@ -17,6 +17,6 @@ target_include_directories(ext_dll_test PRIVATE ${OPENTELEMETRY_CPP_INCLUDE_DIRS}) target_link_libraries(ext_dll_test PRIVATE opentelemetry-cpp::opentelemetry_cpp - GTest::gtest GTest::gtest_main) + GTest::GTest GTest::Main) gtest_discover_tests(ext_dll_test) diff --git a/install/test/cmake/component_tests/ext_http_curl/CMakeLists.txt b/install/test/cmake/component_tests/ext_http_curl/CMakeLists.txt index caafd3e766..e1bac11f43 100644 --- a/install/test/cmake/component_tests/ext_http_curl/CMakeLists.txt +++ b/install/test/cmake/component_tests/ext_http_curl/CMakeLists.txt @@ -1,7 +1,7 @@ # Copyright The OpenTelemetry Authors # SPDX-License-Identifier: Apache-2.0 -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.14) project(opentelemetry-cpp-ext_http_curl-install-test LANGUAGES CXX) find_package(opentelemetry-cpp REQUIRED COMPONENTS ext_http_curl) @@ -15,7 +15,7 @@ include(GoogleTest) add_executable(ext_http_curl_test ${INSTALL_TEST_SRC_DIR}/test_ext_http_curl.cc) target_link_libraries( - ext_http_curl_test PRIVATE opentelemetry-cpp::http_client_curl GTest::gtest - GTest::gtest_main) + ext_http_curl_test PRIVATE opentelemetry-cpp::http_client_curl GTest::GTest + GTest::Main) gtest_discover_tests(ext_http_curl_test) diff --git a/install/test/cmake/component_tests/sdk/CMakeLists.txt b/install/test/cmake/component_tests/sdk/CMakeLists.txt index 9dd828b65c..5bb7aa8a58 100644 --- a/install/test/cmake/component_tests/sdk/CMakeLists.txt +++ b/install/test/cmake/component_tests/sdk/CMakeLists.txt @@ -1,7 +1,7 @@ # Copyright The OpenTelemetry Authors # SPDX-License-Identifier: Apache-2.0 -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.14) project(opentelemetry-cpp-sdk-install-test LANGUAGES CXX) find_package(opentelemetry-cpp REQUIRED COMPONENTS sdk) @@ -24,7 +24,7 @@ target_link_libraries( opentelemetry-cpp::trace opentelemetry-cpp::metrics opentelemetry-cpp::logs - GTest::gtest - GTest::gtest_main) + GTest::GTest + GTest::Main) gtest_discover_tests(sdk_test) diff --git a/install/test/cmake/component_tests/shims_opentracing/CMakeLists.txt b/install/test/cmake/component_tests/shims_opentracing/CMakeLists.txt index 34187da294..32ef84982b 100644 --- a/install/test/cmake/component_tests/shims_opentracing/CMakeLists.txt +++ b/install/test/cmake/component_tests/shims_opentracing/CMakeLists.txt @@ -1,7 +1,7 @@ # Copyright The OpenTelemetry Authors # SPDX-License-Identifier: Apache-2.0 -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.14) project(opentelemetry-cpp-shims_opentracing-install-test LANGUAGES CXX) find_package(opentelemetry-cpp REQUIRED COMPONENTS shims_opentracing) @@ -17,6 +17,6 @@ add_executable(shims_opentracing_test ${INSTALL_TEST_SRC_DIR}/test_shims_opentracing.cc) target_link_libraries( shims_opentracing_test PRIVATE opentelemetry-cpp::opentracing_shim - GTest::gtest GTest::gtest_main) + GTest::GTest GTest::Main) gtest_discover_tests(shims_opentracing_test) diff --git a/install/test/cmake/package_test/CMakeLists.txt b/install/test/cmake/package_test/CMakeLists.txt index b14c91bffb..8adad89e18 100644 --- a/install/test/cmake/package_test/CMakeLists.txt +++ b/install/test/cmake/package_test/CMakeLists.txt @@ -1,7 +1,7 @@ # Copyright The OpenTelemetry Authors # SPDX-License-Identifier: Apache-2.0 -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.14) project(opentelemetry-cpp-full-package-install-test LANGUAGES CXX) @@ -73,6 +73,6 @@ endforeach() target_include_directories(full_test PRIVATE ${OPENTELEMETRY_CPP_INCLUDE_DIRS}) target_link_libraries(full_test PRIVATE ${OPENTELEMETRY_CPP_LIBRARIES} - GTest::gtest GTest::gtest_main) + GTest::GTest GTest::Main) gtest_discover_tests(full_test) diff --git a/install/test/cmake/usage_tests/missing_components/CMakeLists.txt b/install/test/cmake/usage_tests/missing_components/CMakeLists.txt index c93d558c8a..adbf5fd8fd 100644 --- a/install/test/cmake/usage_tests/missing_components/CMakeLists.txt +++ b/install/test/cmake/usage_tests/missing_components/CMakeLists.txt @@ -1,7 +1,7 @@ # Copyright The OpenTelemetry Authors # SPDX-License-Identifier: Apache-2.0 -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.14) project(opentelemetry-cpp-unsorted-components-install-test LANGUAGES CXX) diff --git a/install/test/cmake/usage_tests/no_components/CMakeLists.txt b/install/test/cmake/usage_tests/no_components/CMakeLists.txt index 9d9521ad79..17fec851d7 100644 --- a/install/test/cmake/usage_tests/no_components/CMakeLists.txt +++ b/install/test/cmake/usage_tests/no_components/CMakeLists.txt @@ -1,7 +1,7 @@ # Copyright The OpenTelemetry Authors # SPDX-License-Identifier: Apache-2.0 -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.14) project(opentelemetry-cpp-unsorted-components-install-test LANGUAGES CXX) diff --git a/install/test/cmake/usage_tests/unsorted_components/CMakeLists.txt b/install/test/cmake/usage_tests/unsorted_components/CMakeLists.txt index 0331e97046..3fdd175a15 100644 --- a/install/test/cmake/usage_tests/unsorted_components/CMakeLists.txt +++ b/install/test/cmake/usage_tests/unsorted_components/CMakeLists.txt @@ -1,7 +1,7 @@ # Copyright The OpenTelemetry Authors # SPDX-License-Identifier: Apache-2.0 -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.14) project(opentelemetry-cpp-unsorted-components-install-test LANGUAGES CXX) diff --git a/install/test/cmake/usage_tests/unsupported_components/CMakeLists.txt b/install/test/cmake/usage_tests/unsupported_components/CMakeLists.txt index 6c9bea709c..43ab06c0b6 100644 --- a/install/test/cmake/usage_tests/unsupported_components/CMakeLists.txt +++ b/install/test/cmake/usage_tests/unsupported_components/CMakeLists.txt @@ -1,7 +1,7 @@ # Copyright The OpenTelemetry Authors # SPDX-License-Identifier: Apache-2.0 -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.14) project(opentelemetry-cpp-unsupported-components-install-test LANGUAGES CXX) From 0d7f90b7a7176e3ec2293805c98caa0e08a41c62 Mon Sep 17 00:00:00 2001 From: Douglas Barker Date: Sun, 6 Apr 2025 12:34:32 -0600 Subject: [PATCH 03/16] update cmake install action workflow to test specific cmake versions including the min version. update the conan stable file to test older versions of benchmark and prometheus-cpp --- .github/workflows/cmake_install.yml | 68 ++++++++++++++++------------- install/conan/conanfile_stable.txt | 4 +- 2 files changed, 39 insertions(+), 33 deletions(-) diff --git a/.github/workflows/cmake_install.yml b/.github/workflows/cmake_install.yml index 0ace3a9185..4a13f02166 100644 --- a/.github/workflows/cmake_install.yml +++ b/.github/workflows/cmake_install.yml @@ -8,8 +8,8 @@ on: branches: [ main ] jobs: - windows_2022_vcpkg: - name: Windows 2022 vcpkg cxx17 (static libs - dll) + windows_2022_vcpkg_submodule: + name: Windows 2022 vcpkg submodule versions cxx17 (static libs - dll) runs-on: windows-2022 env: CXX_STANDARD: '17' @@ -26,10 +26,11 @@ jobs: - name: Run DLL Tests run: ./ci/do_ci.ps1 cmake.dll.install.test - windows_2019_vcpkg: - name: Windows 2019 vcpkg cxx14 (static libs) + windows_2019_vcpkg_submodule_min_cmake: + name: Windows 2019 vcpkg submodule versions minimum cmake cxx14 (static libs) runs-on: windows-2019 env: + CMAKE_VERSION: '3.14.0' CXX_STANDARD: '14' steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 @@ -47,6 +48,7 @@ jobs: runs-on: ubuntu-24.04 env: INSTALL_TEST_DIR: '/home/runner/install_test' + CMAKE_VERSION: '3.28.3' CXX_STANDARD: '17' BUILD_TYPE: 'Debug' steps: @@ -71,12 +73,16 @@ jobs: BUILD_SHARED_LIBS: 'ON' run: ./ci/do_ci.sh cmake.install.test - ubuntu_2404_script_build_grpc_1_71_0: - name: Ubuntu 24.04 script grpc 1.71.0 cxx17 (static libs) + ubuntu_2404_latest: + name: Ubuntu 24.04 latest versions cxx20 (static libs) runs-on: ubuntu-24.04 env: INSTALL_TEST_DIR: '/home/runner/install_test' CXX_STANDARD: '20' + GOOGLETEST_VERSION: '1.16.0' + ABSEIL_CPP_VERSION: '20240722.1' + PROTOBUF_VERSION: '29.0' + GRPC_VERSION: 'v1.71.0' BUILD_TYPE: 'Debug' steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 @@ -88,10 +94,6 @@ jobs: sudo -E ./ci/setup_cmake.sh sudo -E ./ci/setup_googletest.sh - name: Build abseil, protobuf, and grpc with ci scripts - env: - ABSEIL_CPP_VERSION: '20240722.1' - PROTOBUF_VERSION: '29.0' - GRPC_VERSION: 'v1.71.0' run: | sudo -E ./ci/install_abseil.sh sudo -E ./ci/install_protobuf.sh @@ -101,12 +103,17 @@ jobs: BUILD_SHARED_LIBS: 'OFF' run: ./ci/do_ci.sh cmake.install.test - ubuntu_2204_script_build_grpc_1_55_0: - name: Ubuntu 22.04 script grpc 1.55.0 cxx17 (static libs - shared libs) + ubuntu_2204_stable: + name: Ubuntu 22.04 stable versions cxx17 (static libs - shared libs) runs-on: ubuntu-22.04 env: INSTALL_TEST_DIR: '/home/runner/install_test' + CMAKE_VERSION: '3.22.0' CXX_STANDARD: '17' + GOOGLETEST_VERSION: '1.14.0' + ABSEIL_CPP_VERSION: '20230125.3' + PROTOBUF_VERSION: '23.3' + GRPC_VERSION: 'v1.55.0' BUILD_TYPE: 'Debug' steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 @@ -118,10 +125,6 @@ jobs: sudo -E ./ci/setup_cmake.sh sudo -E ./ci/setup_googletest.sh - name: Build abseil, protobuf, and grpc with ci scripts - env: - ABSEIL_CPP_VERSION: '20230125.3' - PROTOBUF_VERSION: '23.3' - GRPC_VERSION: 'v1.55.0' run: | sudo -E ./ci/install_abseil.sh sudo -E ./ci/install_protobuf.sh @@ -135,12 +138,17 @@ jobs: BUILD_SHARED_LIBS: 'ON' run: ./ci/do_ci.sh cmake.install.test - ubuntu_2204_script_build_grpc_1_49_2: - name: Ubuntu 22.04 script grpc 1.49.2 cxx14 (static libs - shared libs) + ubuntu_2204_minimum: + name: Ubuntu 22.04 minimum versions cxx14 (static libs - shared libs) runs-on: ubuntu-22.04 env: INSTALL_TEST_DIR: '/home/runner/install_test' + CMAKE_VERSION: '3.14.0' + GOOGLETEST_VERSION: '1.11.0' CXX_STANDARD: '14' + ABSEIL_CPP_VERSION: '20220623.2' + PROTOBUF_VERSION: '21.12' + GRPC_VERSION: 'v1.49.2' BUILD_TYPE: 'Debug' steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 @@ -152,10 +160,6 @@ jobs: sudo -E ./ci/setup_cmake.sh sudo -E ./ci/setup_googletest.sh - name: Build abseil, protobuf, and grpc with ci scripts - env: - ABSEIL_CPP_VERSION: '20220623.2' - PROTOBUF_VERSION: '21.12' - GRPC_VERSION: 'v1.49.2' run: | sudo -E ./ci/install_abseil.sh sudo -E ./ci/install_protobuf.sh @@ -170,10 +174,11 @@ jobs: run: ./ci/do_ci.sh cmake.install.test ubuntu_2404_conan_stable: - name: Ubuntu 24.04 conan stable cxx17 (static libs - shared libs - opentracing shim) + name: Ubuntu 24.04 conan stable versions cxx17 (static libs - shared libs - opentracing shim) runs-on: ubuntu-24.04 env: INSTALL_TEST_DIR: '/home/runner/install_test' + CMAKE_VERSION: '3.28.3' CXX_STANDARD: '17' CMAKE_TOOLCHAIN_FILE: /home/runner/conan/build/Debug/generators/conan_toolchain.cmake BUILD_TYPE: 'Debug' @@ -189,7 +194,7 @@ jobs: - name: Install or build all dependencies with Conan run: | sudo -E ./ci/setup_cmake.sh - conan install install/conan/conanfile_stable.txt --build=missing -of /home/runner/conan -s build_type=Debug + conan install install/conan/conanfile_stable.txt --build=missing -of /home/runner/conan -s build_type=${BUILD_TYPE} -s compiler.cppstd=${CXX_STANDARD} - name: Run Tests (static libs) env: BUILD_SHARED_LIBS: 'OFF' @@ -206,7 +211,7 @@ jobs: run: ./ci/do_ci.sh cmake.opentracing_shim.install.test ubuntu_2404_conan_latest: - name: Ubuntu 24.04 conan latest cxx17 (static libs) + name: Ubuntu 24.04 conan latest versions cxx17 (static libs) runs-on: ubuntu-24.04 env: INSTALL_TEST_DIR: '/home/runner/install_test' @@ -225,7 +230,7 @@ jobs: - name: Install or build all dependencies with Conan run: | sudo -E ./ci/setup_cmake.sh - conan install install/conan/conanfile_latest.txt --build=missing -of /home/runner/conan -s build_type=Debug + conan install install/conan/conanfile_latest.txt --build=missing -of /home/runner/conan -s build_type=${BUILD_TYPE} -s compiler.cppstd=${CXX_STANDARD} - name: Run Tests (static libs) env: BUILD_SHARED_LIBS: 'OFF' @@ -236,11 +241,12 @@ jobs: ./ci/verify_packages.sh macos_14_conan_stable: - name: macOS 14 conan stable cxx17 (static libs) + name: macOS 14 conan stable versions cxx17 (static libs) runs-on: macos-14 env: INSTALL_TEST_DIR: '/Users/runner/install_test' CXX_STANDARD: '17' + CMAKE_VERSION: '3.28.3' CMAKE_TOOLCHAIN_FILE: '/Users/runner/conan/build/Debug/generators/conan_toolchain.cmake' BUILD_TYPE: 'Debug' steps: @@ -250,17 +256,17 @@ jobs: - name: Install Conan and tools run: | brew install conan autoconf automake libtool coreutils - sudo -E ./ci/setup_cmake_macos.sh + ./ci/setup_cmake_macos.sh conan profile detect --force - name: Install or build all dependencies with Conan - run: conan install install/conan/conanfile_stable.txt --build=missing -of /Users/runner/conan -s build_type=Debug + run: conan install install/conan/conanfile_stable.txt --build=missing -of /Users/runner/conan -s build_type=${BUILD_TYPE} -s compiler.cppstd=${CXX_STANDARD} - name: Run Tests (static libs) env: BUILD_SHARED_LIBS: 'OFF' run: ./ci/do_ci.sh cmake.install.test macos_14_brew_packages: - name: macOS 14 brew packages cxx17 (static libs) + name: macOS 14 brew latest versions cxx17 (static libs) runs-on: macos-14 env: CXX_STANDARD: '17' @@ -271,7 +277,7 @@ jobs: submodules: 'recursive' - name: Install Dependencies with Homebrew run: | - sudo -E ./ci/setup_cmake_macos.sh + ./ci/setup_cmake_macos.sh brew install coreutils brew install googletest brew install google-benchmark diff --git a/install/conan/conanfile_stable.txt b/install/conan/conanfile_stable.txt index 796fdaa412..3d0ddb4bd2 100644 --- a/install/conan/conanfile_stable.txt +++ b/install/conan/conanfile_stable.txt @@ -8,7 +8,7 @@ abseil/20230125.3 protobuf/3.21.12 grpc/1.54.3 nlohmann_json/3.10.5 -prometheus-cpp/1.3.0 +prometheus-cpp/1.2.4 opentracing-cpp/1.6.0 [options] @@ -29,7 +29,7 @@ opentracing-cpp/*:shared=True [test_requires] gtest/1.14.0 -benchmark/1.9.1 +benchmark/1.8.3 [generators] CMakeToolchain From 8a85826fc38cb502082a0603f5549d41a5234d12 Mon Sep 17 00:00:00 2001 From: Douglas Barker Date: Sun, 6 Apr 2025 15:25:34 -0600 Subject: [PATCH 04/16] fix format issue --- CMakeLists.txt | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0db26ee130..0a45df627f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,10 +20,9 @@ project(opentelemetry-cpp) # Mark variables as used so cmake doesn't complain about them mark_as_advanced(CMAKE_TOOLCHAIN_FILE) -# Note: CMAKE_FIND_PACKAGE_PREFER_CONFIG requires cmake 3.15 -# Prefer cmake CONFIG to auto resolve dependencies. -# This is important to properly find protobuf versions -# 3.22.0 and above due to the abseil-cpp dependency. +# Note: CMAKE_FIND_PACKAGE_PREFER_CONFIG requires cmake 3.15 Prefer cmake CONFIG +# to auto resolve dependencies. This is important to properly find protobuf +# versions 3.22.0 and above due to the abseil-cpp dependency. set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE) # Don't use customized cmake modules if vcpkg is used to resolve dependence. @@ -406,18 +405,18 @@ if(WITH_OTLP_GRPC OR WITH_OTLP_HTTP OR WITH_OTLP_FILE) - # Note: remove once cmake 3.14 is no longer supported - # including the CMakeFindDependencyMacro is required with cmake 3.14 - # due to an issue with the gRPCConfig.cmake file. + # Note: remove once cmake 3.14 is no longer supported including the + # CMakeFindDependencyMacro is required with cmake 3.14 due to an issue with + # the gRPCConfig.cmake file. include(CMakeFindDependencyMacro) - # Protobuf 3.22 and up requires abseil-cpp. This is found using the - # CONFIG search mode. In cmake 3.14 we must manually - # try config mode first then fall back to MODULE mode + # Protobuf 3.22 and up requires abseil-cpp. This is found using the CONFIG + # search mode. In cmake 3.14 we must manually try config mode first then fall + # back to MODULE mode find_package(Protobuf CONFIG) if(NOT Protobuf_FOUND AND NOT PROTOBUF_FOUND) find_package(Protobuf MODULE) - endif() + endif() if(WITH_OTLP_GRPC) find_package(gRPC CONFIG) From 80db032c7f97c9578473ca21a82edd6149d86ce8 Mon Sep 17 00:00:00 2001 From: Douglas Barker Date: Sun, 6 Apr 2025 15:27:21 -0600 Subject: [PATCH 05/16] run the windows cmake min test with 3.16 due to failing otlp file tests with 3.14 --- .github/workflows/cmake_install.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cmake_install.yml b/.github/workflows/cmake_install.yml index 4a13f02166..e7cf9273d7 100644 --- a/.github/workflows/cmake_install.yml +++ b/.github/workflows/cmake_install.yml @@ -30,7 +30,7 @@ jobs: name: Windows 2019 vcpkg submodule versions minimum cmake cxx14 (static libs) runs-on: windows-2019 env: - CMAKE_VERSION: '3.14.0' + CMAKE_VERSION: '3.16.0' CXX_STANDARD: '14' steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 From 6493ea3d98bc201d5c8d8db4a8d40384b864d4f1 Mon Sep 17 00:00:00 2001 From: Douglas Barker Date: Sun, 6 Apr 2025 15:31:08 -0600 Subject: [PATCH 06/16] update changelog --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c5668f161..49274a68e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,9 @@ Increment the: * [API] Remove `WITH_ABSEIL` and `HAVE_ABSEIL` [#3318](https://github.com/open-telemetry/opentelemetry-cpp/pull/3318) +* [CMAKE] Bump cmake minimum required version to 3.14 + [#3349](https://github.com/open-telemetry/opentelemetry-cpp/pull/3349) + ## [1.20 2025-04-01] * [BUILD] Update opentelemetry-proto version From ee19538803b39912806a36642a4ed9ab1113a4ee Mon Sep 17 00:00:00 2001 From: Douglas Barker Date: Sun, 6 Apr 2025 17:00:16 -0600 Subject: [PATCH 07/16] add back explict policies including CMP0091 that was introduced in cmake 3.15. Set the windows job to cmake 3.15 --- .github/workflows/cmake_install.yml | 2 +- CMakeLists.txt | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/.github/workflows/cmake_install.yml b/.github/workflows/cmake_install.yml index e7cf9273d7..62752ee8f0 100644 --- a/.github/workflows/cmake_install.yml +++ b/.github/workflows/cmake_install.yml @@ -30,7 +30,7 @@ jobs: name: Windows 2019 vcpkg submodule versions minimum cmake cxx14 (static libs) runs-on: windows-2019 env: - CMAKE_VERSION: '3.16.0' + CMAKE_VERSION: '3.15.0' CXX_STANDARD: '14' steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 diff --git a/CMakeLists.txt b/CMakeLists.txt index 0a45df627f..a0066cbf0a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,6 +3,22 @@ cmake_minimum_required(VERSION 3.14) +# See https://cmake.org/cmake/help/latest/policy/CMP0074.html required by +# certain version of zlib which CURL depends on. +if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.12") + cmake_policy(SET CMP0074 NEW) +endif() + +# Allow to use normal variable for option() +if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.13") + cmake_policy(SET CMP0077 NEW) +endif() + +# Prefer CMAKE_MSVC_RUNTIME_LIBRARY if possible +if(POLICY CMP0091) + cmake_policy(SET CMP0091 NEW) +endif() + if(POLICY CMP0092) # https://cmake.org/cmake/help/latest/policy/CMP0092.html#policy:CMP0092 Make # sure the /W3 is not removed from CMAKE_CXX_FLAGS since CMake 3.15 From 7ca29e7fbc525e793ac0539b282a3addedd0af6b Mon Sep 17 00:00:00 2001 From: Douglas Barker Date: Mon, 7 Apr 2025 12:12:58 -0600 Subject: [PATCH 08/16] Address review feedback. Always set the new curl and zlib version variables. Remove legacy PROTOBUF_FOUND. --- CMakeLists.txt | 47 +++++++++++++------ cmake/patch-imported-config.cmake | 2 +- .../thirdparty-built-with-flags.cmake.in | 4 +- 3 files changed, 35 insertions(+), 18 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a0066cbf0a..7e9dcac1a8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,9 +36,9 @@ project(opentelemetry-cpp) # Mark variables as used so cmake doesn't complain about them mark_as_advanced(CMAKE_TOOLCHAIN_FILE) -# Note: CMAKE_FIND_PACKAGE_PREFER_CONFIG requires cmake 3.15 Prefer cmake CONFIG -# to auto resolve dependencies. This is important to properly find protobuf -# versions 3.22.0 and above due to the abseil-cpp dependency. +# Note: CMAKE_FIND_PACKAGE_PREFER_CONFIG requires cmake 3.15. Prefer cmake +# CONFIG search mode to find dependencies. This is important to properly find +# protobuf versions 3.22.0 and above due to the abseil-cpp dependency. set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE) # Don't use customized cmake modules if vcpkg is used to resolve dependence. @@ -421,24 +421,31 @@ if(WITH_OTLP_GRPC OR WITH_OTLP_HTTP OR WITH_OTLP_FILE) - # Note: remove once cmake 3.14 is no longer supported including the - # CMakeFindDependencyMacro is required with cmake 3.14 due to an issue with - # the gRPCConfig.cmake file. + # Including the CMakeFindDependencyMacro resolves an error from + # gRPCConfig.cmake on some grpc versions. See + # https://github.com/grpc/grpc/pull/33361 for more details. include(CMakeFindDependencyMacro) - # Protobuf 3.22 and up requires abseil-cpp. This is found using the CONFIG - # search mode. In cmake 3.14 we must manually try config mode first then fall - # back to MODULE mode + # Protobuf 3.22+ and depends on abseil-cpp and must be found using the CONFIG + # search mode. The following attempts to find Protobuf using the CONFIG mode + # first, and if not found, falls back to the MODULE mode. See + # https://gitlab.kitware.com/cmake/cmake/-/issues/24321 for more details. find_package(Protobuf CONFIG) - if(NOT Protobuf_FOUND AND NOT PROTOBUF_FOUND) + if(NOT Protobuf_FOUND) find_package(Protobuf MODULE) + if(Protobuf_FOUND AND Protobuf_VERSION VERSION_GE "3.22.0") + message( + WARNING + "Found Protobuf version ${Protobuf_VERSION} using MODULE mode. " + "Linking errors may occur. Protobuf 3.22+ depends on abseil-cpp " + "and should be found using the CONFIG mode.") + endif() endif() if(WITH_OTLP_GRPC) find_package(gRPC CONFIG) endif() - if((NOT Protobuf_FOUND AND NOT PROTOBUF_FOUND) OR (WITH_OTLP_GRPC - AND NOT gRPC_FOUND)) + if((NOT Protobuf_FOUND) OR (WITH_OTLP_GRPC AND NOT gRPC_FOUND)) if(WIN32 AND (NOT DEFINED CMAKE_TOOLCHAIN_FILE)) install_windows_deps() endif() @@ -450,7 +457,7 @@ if(WITH_OTLP_GRPC include(${CMAKE_TOOLCHAIN_FILE}) endif() - if(NOT Protobuf_FOUND AND NOT PROTOBUF_FOUND) + if(NOT Protobuf_FOUND) find_package(Protobuf CONFIG REQUIRED) endif() if(NOT gRPC_FOUND AND WITH_OTLP_GRPC) @@ -512,6 +519,11 @@ endif() if((NOT WITH_API_ONLY) AND WITH_HTTP_CLIENT_CURL) # No specific version required. find_package(CURL REQUIRED) + # Set the CURL_VERSION from the legacy CURL_VERSION_STRING Required for CMake + # versions below 4.0 + if(NOT DEFINED CURL_VERSION AND DEFINED CURL_VERSION_STRING) + set(CURL_VERSION ${CURL_VERSION_STRING}) + endif() endif() # @@ -523,6 +535,11 @@ if((NOT WITH_API_ONLY) AND WITH_OTLP_HTTP_COMPRESSION) # No specific version required. find_package(ZLIB REQUIRED) + # Set the ZLIB_VERSION from the legacy ZLIB_VERSION_STRING Required for CMake + # versions below 3.26 + if(NOT DEFINED ZLIB_VERSION AND DEFINED ZLIB_VERSION_STRING) + set(ZLIB_VERSION ${ZLIB_VERSION_STRING}) + endif() endif() # @@ -810,10 +827,10 @@ if(gRPC_FOUND) message(STATUS "gRPC: ${gRPC_VERSION}") endif() if(CURL_FOUND) - message(STATUS "CURL: ${CURL_VERSION_STRING}") + message(STATUS "CURL: ${CURL_VERSION}") endif() if(ZLIB_FOUND) - message(STATUS "ZLIB: ${ZLIB_VERSION_STRING}") + message(STATUS "ZLIB: ${ZLIB_VERSION}") endif() if(USE_NLOHMANN_JSON) message(STATUS "nlohmann-json: ${nlohmann_json_VERSION}") diff --git a/cmake/patch-imported-config.cmake b/cmake/patch-imported-config.cmake index b49903eb29..364d5407d4 100644 --- a/cmake/patch-imported-config.cmake +++ b/cmake/patch-imported-config.cmake @@ -9,7 +9,7 @@ project_build_tools_patch_default_imported_config(ZLIB::ZLIB) # protobuf targets -if(Protobuf_FOUND OR PROTOBUF_FOUND) +if(Protobuf_FOUND) project_build_tools_patch_default_imported_config( utf8_range::utf8_range utf8_range::utf8_validity protobuf::libprotobuf-lite protobuf::libprotobuf protobuf::libprotoc) diff --git a/cmake/templates/thirdparty-built-with-flags.cmake.in b/cmake/templates/thirdparty-built-with-flags.cmake.in index c893332ad4..b6b5175b82 100644 --- a/cmake/templates/thirdparty-built-with-flags.cmake.in +++ b/cmake/templates/thirdparty-built-with-flags.cmake.in @@ -35,7 +35,7 @@ endif() # Protobuf: # Expected TRUE if protobuf was found during the build -if("@Protobuf_FOUND@" OR "@PROTOBUF_FOUND@") +if("@Protobuf_FOUND@") set(BUILT_WITH_Protobuf TRUE) endif() @@ -58,7 +58,7 @@ endif() # Third party dependency versions #----------------------------------------------------------------------- if(BUILT_WITH_CURL) - set(BUILT_WITH_CURL_VERSION @CURL_VERSION_STRING@) + set(BUILT_WITH_CURL_VERSION @CURL_VERSION@) endif() if(BUILT_WITH_ZLIB) From 9bb6fdbc37aee825e38928e9c2a6d2f6fc980084 Mon Sep 17 00:00:00 2001 From: Douglas Barker Date: Mon, 7 Apr 2025 14:13:03 -0600 Subject: [PATCH 09/16] add comment about cmake 3.15 as minimum for windows builds. Fix cmake error on protobuf version warning. Remove bzip2 as dependency for conan builds --- .github/workflows/cmake_install.yml | 1 + CMakeLists.txt | 2 +- install/conan/conanfile_latest.txt | 1 + install/conan/conanfile_stable.txt | 1 + 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/cmake_install.yml b/.github/workflows/cmake_install.yml index 62752ee8f0..a730f91358 100644 --- a/.github/workflows/cmake_install.yml +++ b/.github/workflows/cmake_install.yml @@ -30,6 +30,7 @@ jobs: name: Windows 2019 vcpkg submodule versions minimum cmake cxx14 (static libs) runs-on: windows-2019 env: + # cmake 3.15 is the minimum for windows builds (See https://github.com/open-telemetry/opentelemetry-cpp/pull/3349#discussion_r2030319430) CMAKE_VERSION: '3.15.0' CXX_STANDARD: '14' steps: diff --git a/CMakeLists.txt b/CMakeLists.txt index 7e9dcac1a8..8e2a608120 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -433,7 +433,7 @@ if(WITH_OTLP_GRPC find_package(Protobuf CONFIG) if(NOT Protobuf_FOUND) find_package(Protobuf MODULE) - if(Protobuf_FOUND AND Protobuf_VERSION VERSION_GE "3.22.0") + if(Protobuf_FOUND AND Protobuf_VERSION VERSION_GREATER_EQUAL "3.22.0") message( WARNING "Found Protobuf version ${Protobuf_VERSION} using MODULE mode. " diff --git a/install/conan/conanfile_latest.txt b/install/conan/conanfile_latest.txt index 90a832eb1d..9f2da4aab8 100644 --- a/install/conan/conanfile_latest.txt +++ b/install/conan/conanfile_latest.txt @@ -26,6 +26,7 @@ abseil/*:fPIC=True abseil/*:shared=False opentracing-cpp/*:fPIC=True opentracing-cpp/*:shared=True +pcre2/*:with_bzip2=False [test_requires] gtest/1.16.0 diff --git a/install/conan/conanfile_stable.txt b/install/conan/conanfile_stable.txt index 3d0ddb4bd2..f9b1f36b7c 100644 --- a/install/conan/conanfile_stable.txt +++ b/install/conan/conanfile_stable.txt @@ -26,6 +26,7 @@ abseil/*:fPIC=True abseil/*:shared=False opentracing-cpp/*:fPIC=True opentracing-cpp/*:shared=True +pcre2/*:with_bzip2=False [test_requires] gtest/1.14.0 From e50e20e341d9a1501c251749777b4e1c9a3e6671 Mon Sep 17 00:00:00 2001 From: Douglas Barker Date: Tue, 8 Apr 2025 13:29:23 -0600 Subject: [PATCH 10/16] set cmake version expliclity in the workflow file for each cmake install test job. Add newline to the end of setup_cmake.ps1 --- .github/workflows/cmake_install.yml | 9 +++++++-- ci/setup_cmake.ps1 | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cmake_install.yml b/.github/workflows/cmake_install.yml index a730f91358..16e03d8521 100644 --- a/.github/workflows/cmake_install.yml +++ b/.github/workflows/cmake_install.yml @@ -12,6 +12,7 @@ jobs: name: Windows 2022 vcpkg submodule versions cxx17 (static libs - dll) runs-on: windows-2022 env: + CMAKE_VERSION: '3.31.6' CXX_STANDARD: '17' steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 @@ -79,6 +80,7 @@ jobs: runs-on: ubuntu-24.04 env: INSTALL_TEST_DIR: '/home/runner/install_test' + CMAKE_VERSION: '3.31.6' CXX_STANDARD: '20' GOOGLETEST_VERSION: '1.16.0' ABSEIL_CPP_VERSION: '20240722.1' @@ -145,8 +147,8 @@ jobs: env: INSTALL_TEST_DIR: '/home/runner/install_test' CMAKE_VERSION: '3.14.0' - GOOGLETEST_VERSION: '1.11.0' CXX_STANDARD: '14' + GOOGLETEST_VERSION: '1.11.0' ABSEIL_CPP_VERSION: '20220623.2' PROTOBUF_VERSION: '21.12' GRPC_VERSION: 'v1.49.2' @@ -216,6 +218,7 @@ jobs: runs-on: ubuntu-24.04 env: INSTALL_TEST_DIR: '/home/runner/install_test' + CMAKE_VERSION: '3.31.6' CXX_STANDARD: '17' CMAKE_TOOLCHAIN_FILE: /home/runner/conan/build/Debug/generators/conan_toolchain.cmake BUILD_TYPE: 'Debug' @@ -246,8 +249,8 @@ jobs: runs-on: macos-14 env: INSTALL_TEST_DIR: '/Users/runner/install_test' - CXX_STANDARD: '17' CMAKE_VERSION: '3.28.3' + CXX_STANDARD: '17' CMAKE_TOOLCHAIN_FILE: '/Users/runner/conan/build/Debug/generators/conan_toolchain.cmake' BUILD_TYPE: 'Debug' steps: @@ -270,6 +273,8 @@ jobs: name: macOS 14 brew latest versions cxx17 (static libs) runs-on: macos-14 env: + INSTALL_TEST_DIR: '/Users/runner/install_test' + CMAKE_VERSION: '3.31.6' CXX_STANDARD: '17' BUILD_TYPE: 'Debug' steps: diff --git a/ci/setup_cmake.ps1 b/ci/setup_cmake.ps1 index 9846517abf..6a9a62fae2 100644 --- a/ci/setup_cmake.ps1 +++ b/ci/setup_cmake.ps1 @@ -45,4 +45,4 @@ if ($ctestVersion -ne $CMAKE_VERSION) { if ($cpackVersion -ne $CMAKE_VERSION) { Write-Error "CPack version mismatch: expected $CMAKE_VERSION, installed $cpackVersion" exit 1 -} \ No newline at end of file +} From b4da661271c54ee9d28117561fc17f66796144db Mon Sep 17 00:00:00 2001 From: Douglas Barker Date: Tue, 8 Apr 2025 14:39:16 -0600 Subject: [PATCH 11/16] use config search mode for gtest for install tests --- install/test/cmake/component_tests/api/CMakeLists.txt | 6 +++--- .../component_tests/exporters_elasticsearch/CMakeLists.txt | 6 +++--- .../test/cmake/component_tests/exporters_etw/CMakeLists.txt | 4 ++-- .../component_tests/exporters_in_memory/CMakeLists.txt | 5 +++-- .../cmake/component_tests/exporters_ostream/CMakeLists.txt | 6 ++++-- .../component_tests/exporters_otlp_common/CMakeLists.txt | 4 ++-- .../component_tests/exporters_otlp_file/CMakeLists.txt | 6 +++--- .../component_tests/exporters_otlp_grpc/CMakeLists.txt | 6 +++--- .../component_tests/exporters_otlp_http/CMakeLists.txt | 6 +++--- .../component_tests/exporters_prometheus/CMakeLists.txt | 4 ++-- .../cmake/component_tests/exporters_zipkin/CMakeLists.txt | 4 ++-- .../test/cmake/component_tests/ext_common/CMakeLists.txt | 4 ++-- install/test/cmake/component_tests/ext_dll/CMakeLists.txt | 4 ++-- .../test/cmake/component_tests/ext_http_curl/CMakeLists.txt | 6 +++--- install/test/cmake/component_tests/sdk/CMakeLists.txt | 6 +++--- .../cmake/component_tests/shims_opentracing/CMakeLists.txt | 4 ++-- install/test/cmake/package_test/CMakeLists.txt | 4 ++-- 17 files changed, 44 insertions(+), 41 deletions(-) diff --git a/install/test/cmake/component_tests/api/CMakeLists.txt b/install/test/cmake/component_tests/api/CMakeLists.txt index 756c7afc7a..271255f587 100644 --- a/install/test/cmake/component_tests/api/CMakeLists.txt +++ b/install/test/cmake/component_tests/api/CMakeLists.txt @@ -7,11 +7,11 @@ project(opentelemetry-cpp-api-install-test LANGUAGES CXX) find_package(opentelemetry-cpp REQUIRED COMPONENTS api) -find_package(GTest REQUIRED) +find_package(GTest CONFIG REQUIRED) include(GoogleTest) add_executable(api_test ${INSTALL_TEST_SRC_DIR}/test_api.cc) -target_link_libraries(api_test PRIVATE opentelemetry-cpp::api GTest::GTest - GTest::Main) +target_link_libraries(api_test PRIVATE opentelemetry-cpp::api GTest::gtest + GTest::gtest_main) gtest_discover_tests(api_test) diff --git a/install/test/cmake/component_tests/exporters_elasticsearch/CMakeLists.txt b/install/test/cmake/component_tests/exporters_elasticsearch/CMakeLists.txt index 8a3c39285f..9b2d7ef1ab 100644 --- a/install/test/cmake/component_tests/exporters_elasticsearch/CMakeLists.txt +++ b/install/test/cmake/component_tests/exporters_elasticsearch/CMakeLists.txt @@ -10,14 +10,14 @@ if(NOT TARGET nlohmann_json::nlohmann_json) message(FATAL_ERROR "nlohmann_json::nlohmann_json target not found") endif() -find_package(GTest REQUIRED) +find_package(GTest CONFIG REQUIRED) include(GoogleTest) add_executable(exporters_elasticsearch_test ${INSTALL_TEST_SRC_DIR}/test_exporters_elasticsearch.cc) target_link_libraries( exporters_elasticsearch_test - PRIVATE opentelemetry-cpp::elasticsearch_log_record_exporter GTest::GTest - GTest::Main) + PRIVATE opentelemetry-cpp::elasticsearch_log_record_exporter GTest::gtest + GTest::gtest_main) gtest_discover_tests(exporters_elasticsearch_test) diff --git a/install/test/cmake/component_tests/exporters_etw/CMakeLists.txt b/install/test/cmake/component_tests/exporters_etw/CMakeLists.txt index 98957cdc84..b2dcb302b0 100644 --- a/install/test/cmake/component_tests/exporters_etw/CMakeLists.txt +++ b/install/test/cmake/component_tests/exporters_etw/CMakeLists.txt @@ -10,11 +10,11 @@ if(NOT TARGET nlohmann_json::nlohmann_json) message(FATAL_ERROR "nlohmann_json::nlohmann_json target not found") endif() -find_package(GTest REQUIRED) +find_package(GTest CONFIG REQUIRED) include(GoogleTest) add_executable(exporters_etw_test ${INSTALL_TEST_SRC_DIR}/test_exporters_etw.cc) target_link_libraries(exporters_etw_test PRIVATE opentelemetry-cpp::etw_exporter - GTest::GTest GTest::Main) + GTest::gtest GTest::gtest_main) gtest_discover_tests(exporters_etw_test) diff --git a/install/test/cmake/component_tests/exporters_in_memory/CMakeLists.txt b/install/test/cmake/component_tests/exporters_in_memory/CMakeLists.txt index c7b7db369c..ca3ab3e32e 100644 --- a/install/test/cmake/component_tests/exporters_in_memory/CMakeLists.txt +++ b/install/test/cmake/component_tests/exporters_in_memory/CMakeLists.txt @@ -6,7 +6,7 @@ project(opentelemetry-cpp-exporters-in-memory-install-test LANGUAGES CXX) find_package(opentelemetry-cpp REQUIRED COMPONENTS exporters_in_memory) -find_package(GTest REQUIRED) +find_package(GTest CONFIG REQUIRED) include(GoogleTest) add_executable(exporters_in_memory_test @@ -14,6 +14,7 @@ add_executable(exporters_in_memory_test target_link_libraries( exporters_in_memory_test PRIVATE opentelemetry-cpp::in_memory_span_exporter - opentelemetry-cpp::in_memory_metric_exporter GTest::GTest GTest::Main) + opentelemetry-cpp::in_memory_metric_exporter GTest::gtest + GTest::gtest_main) gtest_discover_tests(exporters_in_memory_test) diff --git a/install/test/cmake/component_tests/exporters_ostream/CMakeLists.txt b/install/test/cmake/component_tests/exporters_ostream/CMakeLists.txt index e845302f08..2028b4b92a 100644 --- a/install/test/cmake/component_tests/exporters_ostream/CMakeLists.txt +++ b/install/test/cmake/component_tests/exporters_ostream/CMakeLists.txt @@ -6,7 +6,7 @@ project(opentelemetry-cpp-exporters-ostream-install-test LANGUAGES CXX) find_package(opentelemetry-cpp REQUIRED COMPONENTS exporters_ostream) -find_package(GTest REQUIRED) +find_package(GTest CONFIG REQUIRED) include(GoogleTest) add_executable(exporters_ostream_test @@ -15,6 +15,8 @@ target_link_libraries( exporters_ostream_test PRIVATE opentelemetry-cpp::ostream_log_record_exporter opentelemetry-cpp::ostream_metrics_exporter - opentelemetry-cpp::ostream_span_exporter GTest::GTest GTest::Main) + opentelemetry-cpp::ostream_span_exporter + GTest::gtest + GTest::gtest_main) gtest_discover_tests(exporters_ostream_test) diff --git a/install/test/cmake/component_tests/exporters_otlp_common/CMakeLists.txt b/install/test/cmake/component_tests/exporters_otlp_common/CMakeLists.txt index d2a44f337d..a9d9a0c275 100644 --- a/install/test/cmake/component_tests/exporters_otlp_common/CMakeLists.txt +++ b/install/test/cmake/component_tests/exporters_otlp_common/CMakeLists.txt @@ -10,7 +10,7 @@ if(NOT TARGET protobuf::libprotobuf) message(FATAL_ERROR "protobuf::libprotobuf target not found") endif() -find_package(GTest REQUIRED) +find_package(GTest CONFIG REQUIRED) include(GoogleTest) add_executable(exporters_otlp_common_test @@ -18,6 +18,6 @@ add_executable(exporters_otlp_common_test target_link_libraries( exporters_otlp_common_test PRIVATE opentelemetry-cpp::proto opentelemetry-cpp::otlp_recordable - GTest::GTest GTest::Main) + GTest::gtest GTest::gtest_main) gtest_discover_tests(exporters_otlp_common_test) diff --git a/install/test/cmake/component_tests/exporters_otlp_file/CMakeLists.txt b/install/test/cmake/component_tests/exporters_otlp_file/CMakeLists.txt index bcc667d17b..11d79dfd6d 100644 --- a/install/test/cmake/component_tests/exporters_otlp_file/CMakeLists.txt +++ b/install/test/cmake/component_tests/exporters_otlp_file/CMakeLists.txt @@ -10,7 +10,7 @@ if(NOT TARGET protobuf::libprotobuf) message(FATAL_ERROR "protobuf::libprotobuf target not found") endif() -find_package(GTest REQUIRED) +find_package(GTest CONFIG REQUIRED) include(GoogleTest) add_executable(exporters_otlp_file_test @@ -21,7 +21,7 @@ target_link_libraries( opentelemetry-cpp::otlp_file_exporter opentelemetry-cpp::otlp_file_log_record_exporter opentelemetry-cpp::otlp_file_metric_exporter - GTest::GTest - GTest::Main) + GTest::gtest + GTest::gtest_main) gtest_discover_tests(exporters_otlp_file_test) diff --git a/install/test/cmake/component_tests/exporters_otlp_grpc/CMakeLists.txt b/install/test/cmake/component_tests/exporters_otlp_grpc/CMakeLists.txt index a0db694190..6e9b4b6b91 100644 --- a/install/test/cmake/component_tests/exporters_otlp_grpc/CMakeLists.txt +++ b/install/test/cmake/component_tests/exporters_otlp_grpc/CMakeLists.txt @@ -14,7 +14,7 @@ if(NOT TARGET gRPC::grpc++) message(FATAL_ERROR "gRPC::grpc++ target not found") endif() -find_package(GTest REQUIRED) +find_package(GTest CONFIG REQUIRED) include(GoogleTest) add_executable(exporters_otlp_grpc_test @@ -24,7 +24,7 @@ target_link_libraries( PRIVATE opentelemetry-cpp::otlp_grpc_exporter opentelemetry-cpp::otlp_grpc_log_record_exporter opentelemetry-cpp::otlp_grpc_metrics_exporter - GTest::GTest - GTest::Main) + GTest::gtest + GTest::gtest_main) gtest_discover_tests(exporters_otlp_grpc_test) diff --git a/install/test/cmake/component_tests/exporters_otlp_http/CMakeLists.txt b/install/test/cmake/component_tests/exporters_otlp_http/CMakeLists.txt index bf1b3fdf14..09b4f433de 100644 --- a/install/test/cmake/component_tests/exporters_otlp_http/CMakeLists.txt +++ b/install/test/cmake/component_tests/exporters_otlp_http/CMakeLists.txt @@ -10,7 +10,7 @@ if(NOT TARGET protobuf::libprotobuf) message(FATAL_ERROR "protobuf::libprotobuf target not found") endif() -find_package(GTest REQUIRED) +find_package(GTest CONFIG REQUIRED) include(GoogleTest) add_executable(exporters_otlp_http_test @@ -21,7 +21,7 @@ target_link_libraries( opentelemetry-cpp::otlp_http_exporter opentelemetry-cpp::otlp_http_log_record_exporter opentelemetry-cpp::otlp_http_metric_exporter - GTest::GTest - GTest::Main) + GTest::gtest + GTest::gtest_main) gtest_discover_tests(exporters_otlp_http_test) diff --git a/install/test/cmake/component_tests/exporters_prometheus/CMakeLists.txt b/install/test/cmake/component_tests/exporters_prometheus/CMakeLists.txt index 8d93635909..526a01626d 100644 --- a/install/test/cmake/component_tests/exporters_prometheus/CMakeLists.txt +++ b/install/test/cmake/component_tests/exporters_prometheus/CMakeLists.txt @@ -10,13 +10,13 @@ if(NOT TARGET prometheus-cpp::core) message(FATAL_ERROR "prometheus-cpp::core target not found") endif() -find_package(GTest REQUIRED) +find_package(GTest CONFIG REQUIRED) include(GoogleTest) add_executable(exporters_prometheus_test ${INSTALL_TEST_SRC_DIR}/test_exporters_prometheus.cc) target_link_libraries( exporters_prometheus_test PRIVATE opentelemetry-cpp::prometheus_exporter - GTest::GTest GTest::Main) + GTest::gtest GTest::gtest_main) gtest_discover_tests(exporters_prometheus_test) diff --git a/install/test/cmake/component_tests/exporters_zipkin/CMakeLists.txt b/install/test/cmake/component_tests/exporters_zipkin/CMakeLists.txt index 09b7d53c46..378794bceb 100644 --- a/install/test/cmake/component_tests/exporters_zipkin/CMakeLists.txt +++ b/install/test/cmake/component_tests/exporters_zipkin/CMakeLists.txt @@ -10,13 +10,13 @@ if(NOT TARGET nlohmann_json::nlohmann_json) message(FATAL_ERROR "nlohmann_json::nlohmann_json target not found") endif() -find_package(GTest REQUIRED) +find_package(GTest CONFIG REQUIRED) include(GoogleTest) add_executable(exporters_zipkin_test ${INSTALL_TEST_SRC_DIR}/test_exporters_zipkin.cc) target_link_libraries( exporters_zipkin_test PRIVATE opentelemetry-cpp::zipkin_trace_exporter - GTest::GTest GTest::Main) + GTest::gtest GTest::gtest_main) gtest_discover_tests(exporters_zipkin_test) diff --git a/install/test/cmake/component_tests/ext_common/CMakeLists.txt b/install/test/cmake/component_tests/ext_common/CMakeLists.txt index 203449fdf3..c80058318b 100644 --- a/install/test/cmake/component_tests/ext_common/CMakeLists.txt +++ b/install/test/cmake/component_tests/ext_common/CMakeLists.txt @@ -6,11 +6,11 @@ project(opentelemetry-cpp-ext_common-install-test LANGUAGES CXX) find_package(opentelemetry-cpp REQUIRED COMPONENTS ext_common) -find_package(GTest REQUIRED) +find_package(GTest CONFIG REQUIRED) include(GoogleTest) add_executable(ext_common_test ${INSTALL_TEST_SRC_DIR}/test_ext_common.cc) target_link_libraries(ext_common_test PRIVATE opentelemetry-cpp::ext - GTest::GTest GTest::Main) + GTest::gtest GTest::gtest_main) gtest_discover_tests(ext_common_test) diff --git a/install/test/cmake/component_tests/ext_dll/CMakeLists.txt b/install/test/cmake/component_tests/ext_dll/CMakeLists.txt index dce42009cb..3e9dd8565c 100644 --- a/install/test/cmake/component_tests/ext_dll/CMakeLists.txt +++ b/install/test/cmake/component_tests/ext_dll/CMakeLists.txt @@ -8,7 +8,7 @@ find_package(opentelemetry-cpp REQUIRED COMPONENTS ext_dll) add_definitions(-DOPENTELEMETRY_BUILD_IMPORT_DLL) -find_package(GTest REQUIRED) +find_package(GTest CONFIG REQUIRED) include(GoogleTest) add_executable(ext_dll_test ${INSTALL_TEST_SRC_DIR}/test_ext_dll.cc) @@ -17,6 +17,6 @@ target_include_directories(ext_dll_test PRIVATE ${OPENTELEMETRY_CPP_INCLUDE_DIRS}) target_link_libraries(ext_dll_test PRIVATE opentelemetry-cpp::opentelemetry_cpp - GTest::GTest GTest::Main) + GTest::gtest GTest::gtest_main) gtest_discover_tests(ext_dll_test) diff --git a/install/test/cmake/component_tests/ext_http_curl/CMakeLists.txt b/install/test/cmake/component_tests/ext_http_curl/CMakeLists.txt index e1bac11f43..f9adda65cf 100644 --- a/install/test/cmake/component_tests/ext_http_curl/CMakeLists.txt +++ b/install/test/cmake/component_tests/ext_http_curl/CMakeLists.txt @@ -10,12 +10,12 @@ if(NOT TARGET CURL::libcurl) message(FATAL_ERROR "CURL::libcurl target not found") endif() -find_package(GTest REQUIRED) +find_package(GTest CONFIG REQUIRED) include(GoogleTest) add_executable(ext_http_curl_test ${INSTALL_TEST_SRC_DIR}/test_ext_http_curl.cc) target_link_libraries( - ext_http_curl_test PRIVATE opentelemetry-cpp::http_client_curl GTest::GTest - GTest::Main) + ext_http_curl_test PRIVATE opentelemetry-cpp::http_client_curl GTest::gtest + GTest::gtest_main) gtest_discover_tests(ext_http_curl_test) diff --git a/install/test/cmake/component_tests/sdk/CMakeLists.txt b/install/test/cmake/component_tests/sdk/CMakeLists.txt index 5bb7aa8a58..1dd110231d 100644 --- a/install/test/cmake/component_tests/sdk/CMakeLists.txt +++ b/install/test/cmake/component_tests/sdk/CMakeLists.txt @@ -10,7 +10,7 @@ if(NOT TARGET Threads::Threads) message(FATAL_ERROR "Threads::Threads target not found") endif() -find_package(GTest REQUIRED) +find_package(GTest CONFIG REQUIRED) include(GoogleTest) add_executable(sdk_test ${INSTALL_TEST_SRC_DIR}/test_sdk.cc) @@ -24,7 +24,7 @@ target_link_libraries( opentelemetry-cpp::trace opentelemetry-cpp::metrics opentelemetry-cpp::logs - GTest::GTest - GTest::Main) + GTest::gtest + GTest::gtest_main) gtest_discover_tests(sdk_test) diff --git a/install/test/cmake/component_tests/shims_opentracing/CMakeLists.txt b/install/test/cmake/component_tests/shims_opentracing/CMakeLists.txt index 32ef84982b..f541f15dd2 100644 --- a/install/test/cmake/component_tests/shims_opentracing/CMakeLists.txt +++ b/install/test/cmake/component_tests/shims_opentracing/CMakeLists.txt @@ -10,13 +10,13 @@ if(NOT TARGET OpenTracing::opentracing) message(FATAL_ERROR "OpenTracing::opentracing target not found") endif() -find_package(GTest REQUIRED) +find_package(GTest CONFIG REQUIRED) include(GoogleTest) add_executable(shims_opentracing_test ${INSTALL_TEST_SRC_DIR}/test_shims_opentracing.cc) target_link_libraries( shims_opentracing_test PRIVATE opentelemetry-cpp::opentracing_shim - GTest::GTest GTest::Main) + GTest::gtest GTest::gtest_main) gtest_discover_tests(shims_opentracing_test) diff --git a/install/test/cmake/package_test/CMakeLists.txt b/install/test/cmake/package_test/CMakeLists.txt index 8adad89e18..63f5bf4248 100644 --- a/install/test/cmake/package_test/CMakeLists.txt +++ b/install/test/cmake/package_test/CMakeLists.txt @@ -60,7 +60,7 @@ message( "Testing the full package install on components = ${INSTALL_TEST_COMPONENTS}" ) -find_package(GTest REQUIRED) +find_package(GTest CONFIG REQUIRED) include(GoogleTest) add_executable(full_test) @@ -73,6 +73,6 @@ endforeach() target_include_directories(full_test PRIVATE ${OPENTELEMETRY_CPP_INCLUDE_DIRS}) target_link_libraries(full_test PRIVATE ${OPENTELEMETRY_CPP_LIBRARIES} - GTest::GTest GTest::Main) + GTest::gtest GTest::gtest_main) gtest_discover_tests(full_test) From 97a1e75e543ebfa53284eb985f6450e01e0068a0 Mon Sep 17 00:00:00 2001 From: Douglas Barker Date: Tue, 8 Apr 2025 15:28:54 -0600 Subject: [PATCH 12/16] update install md file with note on the cmake minimum version and recommend cmake 3.15+ on windows. --- INSTALL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/INSTALL.md b/INSTALL.md index 3e12db5a1e..cba2e1ddb6 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -23,7 +23,7 @@ You can link OpenTelemetry C++ SDK with libraries provided in repository. To install Git, consult the [Set up Git](https://help.github.com/articles/set-up-git/) guide on GitHub. - [CMake](https://cmake.org/) for building opentelemetry-cpp API, SDK with their - unittests. We use CMake version 3.15.2 in our build system. To install CMake, + unittests. The minimum CMake version is 3.14. However on Windows cmake 3.15+ is strongly recommended. To install CMake, consult the [Installing CMake](https://cmake.org/install/) guide. - [GoogleTest](https://github.com/google/googletest) framework to build and run the unittests. Refer to From 7d29c69fdcb3eca1a32d86f20e7464aa91ca2194 Mon Sep 17 00:00:00 2001 From: Douglas Barker Date: Tue, 8 Apr 2025 15:32:56 -0600 Subject: [PATCH 13/16] fix markdownlint error --- INSTALL.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/INSTALL.md b/INSTALL.md index cba2e1ddb6..e63ed96d6f 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -23,7 +23,8 @@ You can link OpenTelemetry C++ SDK with libraries provided in repository. To install Git, consult the [Set up Git](https://help.github.com/articles/set-up-git/) guide on GitHub. - [CMake](https://cmake.org/) for building opentelemetry-cpp API, SDK with their - unittests. The minimum CMake version is 3.14. However on Windows cmake 3.15+ is strongly recommended. To install CMake, + unittests. The minimum CMake version is 3.14. + However on Windows cmake 3.15+ is strongly recommended. To install CMake, consult the [Installing CMake](https://cmake.org/install/) guide. - [GoogleTest](https://github.com/google/googletest) framework to build and run the unittests. Refer to From 9550ae2ed4ce92d21f88d396d6b496ecd8347f18 Mon Sep 17 00:00:00 2001 From: Douglas Barker Date: Tue, 8 Apr 2025 15:35:48 -0600 Subject: [PATCH 14/16] Update install.md with explict message about the known windows ci test failures with cmake 3.14 --- INSTALL.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/INSTALL.md b/INSTALL.md index e63ed96d6f..38bf3a6447 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -24,7 +24,8 @@ You can link OpenTelemetry C++ SDK with libraries provided in Git](https://help.github.com/articles/set-up-git/) guide on GitHub. - [CMake](https://cmake.org/) for building opentelemetry-cpp API, SDK with their unittests. The minimum CMake version is 3.14. - However on Windows cmake 3.15+ is strongly recommended. To install CMake, + Cmake 3.15+ is recommended on Windows due to known ci test failures with 3.14. + To install CMake, consult the [Installing CMake](https://cmake.org/install/) guide. - [GoogleTest](https://github.com/google/googletest) framework to build and run the unittests. Refer to From c0ff9877994082e0b69aee8442d50174fb0e1709 Mon Sep 17 00:00:00 2001 From: Douglas Barker Date: Wed, 9 Apr 2025 16:00:56 -0600 Subject: [PATCH 15/16] comments from review feedback --- .github/workflows/cmake_install.yml | 20 ++++++++++++++++++++ CMakeLists.txt | 9 +++++---- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/.github/workflows/cmake_install.yml b/.github/workflows/cmake_install.yml index 16e03d8521..ed4411398a 100644 --- a/.github/workflows/cmake_install.yml +++ b/.github/workflows/cmake_install.yml @@ -12,7 +12,9 @@ jobs: name: Windows 2022 vcpkg submodule versions cxx17 (static libs - dll) runs-on: windows-2022 env: + # Set to the latest version of cmake 3.x CMAKE_VERSION: '3.31.6' + # cxx17 is the default for windows-2022 CXX_STANDARD: '17' steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 @@ -33,6 +35,7 @@ jobs: env: # cmake 3.15 is the minimum for windows builds (See https://github.com/open-telemetry/opentelemetry-cpp/pull/3349#discussion_r2030319430) CMAKE_VERSION: '3.15.0' + # cxx14 is the default for windows-2019 CXX_STANDARD: '14' steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 @@ -50,7 +53,9 @@ jobs: runs-on: ubuntu-24.04 env: INSTALL_TEST_DIR: '/home/runner/install_test' + # CMake 3.28 is apt package version for Ubuntu 24.04 CMAKE_VERSION: '3.28.3' + # cxx17 is the default for Ubuntu 24.04 CXX_STANDARD: '17' BUILD_TYPE: 'Debug' steps: @@ -80,8 +85,13 @@ jobs: runs-on: ubuntu-24.04 env: INSTALL_TEST_DIR: '/home/runner/install_test' + # Set to the latest version of cmake 3.x CMAKE_VERSION: '3.31.6' + # Set to the latest cxx standard supported by opentelemetry-cpp CXX_STANDARD: '20' + # Versions below set to the latest version available + # The abseil and protobuf versions are taken from + # the grpc submodules at the GRPC_VERSION tag GOOGLETEST_VERSION: '1.16.0' ABSEIL_CPP_VERSION: '20240722.1' PROTOBUF_VERSION: '29.0' @@ -111,8 +121,11 @@ jobs: runs-on: ubuntu-22.04 env: INSTALL_TEST_DIR: '/home/runner/install_test' + # CMake 3.22 is the apt package version for Ubuntu 22.04 CMAKE_VERSION: '3.22.0' CXX_STANDARD: '17' + # These are stable versions tested in the main ci workflow + # and defaults in the devcontainer GOOGLETEST_VERSION: '1.14.0' ABSEIL_CPP_VERSION: '20230125.3' PROTOBUF_VERSION: '23.3' @@ -146,9 +159,13 @@ jobs: runs-on: ubuntu-22.04 env: INSTALL_TEST_DIR: '/home/runner/install_test' + # Set to the current minimum version of cmake CMAKE_VERSION: '3.14.0' + # cxx14 is the default for Ubuntu 22.04 CXX_STANDARD: '14' + # This is the apt package version of googletest for Ubuntu 22.04 GOOGLETEST_VERSION: '1.11.0' + # These are minimum versions tested in the main ci workflow ABSEIL_CPP_VERSION: '20220623.2' PROTOBUF_VERSION: '21.12' GRPC_VERSION: 'v1.49.2' @@ -181,6 +198,7 @@ jobs: runs-on: ubuntu-24.04 env: INSTALL_TEST_DIR: '/home/runner/install_test' + # CMake 3.28 is apt package version for Ubuntu 24.04 CMAKE_VERSION: '3.28.3' CXX_STANDARD: '17' CMAKE_TOOLCHAIN_FILE: /home/runner/conan/build/Debug/generators/conan_toolchain.cmake @@ -218,6 +236,7 @@ jobs: runs-on: ubuntu-24.04 env: INSTALL_TEST_DIR: '/home/runner/install_test' + # Set to the latest version of cmake 3.x CMAKE_VERSION: '3.31.6' CXX_STANDARD: '17' CMAKE_TOOLCHAIN_FILE: /home/runner/conan/build/Debug/generators/conan_toolchain.cmake @@ -274,6 +293,7 @@ jobs: runs-on: macos-14 env: INSTALL_TEST_DIR: '/Users/runner/install_test' + # Set to the latest version of cmake 3.x CMAKE_VERSION: '3.31.6' CXX_STANDARD: '17' BUILD_TYPE: 'Debug' diff --git a/CMakeLists.txt b/CMakeLists.txt index 8e2a608120..98b70798c6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -426,10 +426,11 @@ if(WITH_OTLP_GRPC # https://github.com/grpc/grpc/pull/33361 for more details. include(CMakeFindDependencyMacro) - # Protobuf 3.22+ and depends on abseil-cpp and must be found using the CONFIG - # search mode. The following attempts to find Protobuf using the CONFIG mode - # first, and if not found, falls back to the MODULE mode. See - # https://gitlab.kitware.com/cmake/cmake/-/issues/24321 for more details. + # Protobuf 3.22+ depends on abseil-cpp and must be found using the cmake + # find_package CONFIG search mode. The following attempts to find Protobuf + # using the CONFIG mode first, and if not found, falls back to the MODULE + # mode. See https://gitlab.kitware.com/cmake/cmake/-/issues/24321 for more + # details. find_package(Protobuf CONFIG) if(NOT Protobuf_FOUND) find_package(Protobuf MODULE) From f3944bfe475d07d114b7b0f8bc02e136c993358d Mon Sep 17 00:00:00 2001 From: Douglas Barker Date: Fri, 11 Apr 2025 08:49:18 -0600 Subject: [PATCH 16/16] update install.md --- INSTALL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/INSTALL.md b/INSTALL.md index 38bf3a6447..08292d481b 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -24,7 +24,7 @@ You can link OpenTelemetry C++ SDK with libraries provided in Git](https://help.github.com/articles/set-up-git/) guide on GitHub. - [CMake](https://cmake.org/) for building opentelemetry-cpp API, SDK with their unittests. The minimum CMake version is 3.14. - Cmake 3.15+ is recommended on Windows due to known ci test failures with 3.14. + CMake 3.15+ is recommended on Windows due to known CI test failures with 3.14. To install CMake, consult the [Installing CMake](https://cmake.org/install/) guide. - [GoogleTest](https://github.com/google/googletest) framework to build and run