From 90284676501d02df3e43aae78a92e1eaf952ec21 Mon Sep 17 00:00:00 2001 From: Douglas Barker Date: Tue, 1 Apr 2025 11:17:12 -0600 Subject: [PATCH 1/3] pin cmake on ubuntu in ci and devcontainer --- .github/workflows/ci.yml | 60 ++++++++++++++++++++++++++++------------ ci/setup_cmake.sh | 30 ++++++++++++++++++-- 2 files changed, 69 insertions(+), 21 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e7c706bec6..eeac30411e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,8 +25,8 @@ jobs: # CXX: /usr/bin/g++-10 # run: | # sudo -E ./ci/setup_gcc10.sh -# sudo -E ./ci/setup_cmake.sh # sudo -E ./ci/setup_ci_environment.sh +# sudo -E ./ci/setup_cmake.sh # sudo -E ./ci/setup_googletest.sh # sudo -E ./ci/install_abseil.sh # sudo -E ./ci/install_protobuf.sh @@ -51,8 +51,9 @@ jobs: submodules: 'recursive' - name: setup run: | - sudo -E ./ci/setup_googletest.sh sudo -E ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh + sudo -E ./ci/setup_googletest.sh - name: run cmake tests run: | ./ci/do_ci.sh cmake.test @@ -71,8 +72,9 @@ jobs: PROTOBUF_VERSION: 21.12 run: | sudo apt remove needrestart #refer: https://github.com/actions/runner-images/issues/9937 - sudo -E ./ci/setup_googletest.sh sudo -E ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh + sudo -E ./ci/setup_googletest.sh sudo -E ./ci/install_protobuf.sh - name: setup grpc run: | @@ -107,8 +109,9 @@ jobs: PROTOBUF_VERSION: 21.12 run: | sudo apt remove needrestart #refer: https://github.com/actions/runner-images/issues/9937 - sudo -E ./ci/setup_googletest.sh sudo -E ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh + sudo -E ./ci/setup_googletest.sh sudo -E ./ci/install_protobuf.sh - name: setup grpc run: | @@ -143,8 +146,9 @@ jobs: PROTOBUF_VERSION: 21.12 run: | sudo apt remove needrestart #refer: https://github.com/actions/runner-images/issues/9937 - sudo -E ./ci/setup_googletest.sh sudo -E ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh + sudo -E ./ci/setup_googletest.sh sudo -E ./ci/install_protobuf.sh - name: setup grpc run: | @@ -181,6 +185,7 @@ jobs: sudo apt remove needrestart #refer: https://github.com/actions/runner-images/issues/9937 sudo -E ./ci/setup_googletest.sh sudo -E ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh sudo -E ./ci/install_protobuf.sh - name: setup grpc run: | @@ -215,8 +220,9 @@ jobs: PROTOBUF_VERSION: 21.12 run: | sudo apt remove needrestart #refer: https://github.com/actions/runner-images/issues/9937 - sudo -E ./ci/setup_googletest.sh sudo -E ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh + sudo -E ./ci/setup_googletest.sh sudo -E ./ci/install_protobuf.sh - name: setup grpc run: | @@ -292,8 +298,9 @@ jobs: CC: /usr/bin/gcc-12 CXX: /usr/bin/g++-12 run: | - sudo -E ./ci/setup_googletest.sh sudo -E ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh + sudo -E ./ci/setup_googletest.sh - name: run cmake tests (without otlp-exporter) env: CC: /usr/bin/gcc-12 @@ -310,8 +317,10 @@ jobs: # submodules: 'recursive' # - name: setup # run: | -# sudo -E ./ci/setup_googletest.sh + # sudo -E ./ci/setup_ci_environment.sh +# sudo -E ./ci/setup_cmake.sh +# sudo -E ./ci/setup_googletest.sh # - name: run cmake tests (enable abseil-cpp) # run: | # sudo ./ci/install_abseil.sh @@ -326,8 +335,9 @@ jobs: submodules: 'recursive' - name: setup run: | - sudo -E ./ci/setup_googletest.sh sudo -E ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh + sudo -E ./ci/setup_googletest.sh - name: run cmake tests (enable opentracing-shim) run: ./ci/do_ci.sh cmake.opentracing_shim.test @@ -341,6 +351,7 @@ jobs: - name: setup run: | sudo -E ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh sudo -E ./ci/setup_googletest.sh - name: run tests (enable stl) env: @@ -357,6 +368,7 @@ jobs: - name: setup run: | sudo -E ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh sudo -E ./ci/setup_googletest.sh - name: run tests (enable stl) env: @@ -373,6 +385,7 @@ jobs: - name: setup run: | sudo -E ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh sudo -E ./ci/setup_googletest.sh - name: run tests env: @@ -397,6 +410,7 @@ jobs: CXXFLAGS: "-stdlib=libc++" run: | sudo -E ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh sudo -E ./ci/setup_googletest.sh - name: run tests env: @@ -423,6 +437,7 @@ jobs: - name: setup run: | sudo -E ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh sudo -E ./ci/setup_googletest.sh - name: run tests env: @@ -447,6 +462,7 @@ jobs: CXXFLAGS: "-stdlib=libc++" run: | sudo -E ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh sudo -E ./ci/setup_googletest.sh - name: run tests env: @@ -472,8 +488,9 @@ jobs: submodules: 'recursive' - name: setup run: | - sudo -E ./ci/setup_googletest.sh sudo -E ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh + sudo -E ./ci/setup_googletest.sh - name: run otlp exporter tests run: | sudo ./ci/setup_grpc.sh @@ -501,8 +518,9 @@ jobs: ABSEIL_CPP_VERSION: '20230125.3' CXX_STANDARD: '14' run: | - sudo ./ci/setup_googletest.sh - sudo ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh + sudo -E ./ci/setup_googletest.sh sudo -E ./ci/install_abseil.sh sudo -E ./ci/install_protobuf.sh - name: run otlp exporter tests @@ -522,8 +540,9 @@ jobs: submodules: 'recursive' - name: setup run: | - sudo -E ./ci/setup_googletest.sh sudo -E ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh + sudo -E ./ci/setup_googletest.sh - name: run otlp exporter tests run: | sudo ./ci/setup_grpc.sh @@ -538,8 +557,9 @@ jobs: submodules: 'recursive' - name: setup run: | - sudo -E ./ci/setup_googletest.sh sudo -E ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh + sudo -E ./ci/setup_googletest.sh - name: run otlp exporter tests run: | sudo ./ci/setup_grpc.sh -T @@ -554,8 +574,9 @@ jobs: # submodules: 'recursive' # - name: setup # run: | -# sudo -E ./ci/setup_googletest.sh # sudo -E ./ci/setup_ci_environment.sh +# sudo -E ./ci/setup_cmake.sh +# sudo -E ./ci/setup_googletest.sh # - name: run cmake install (with abseil) # run: | # sudo ./ci/install_abseil.sh @@ -576,8 +597,9 @@ jobs: CC: /usr/bin/gcc-12 CXX: /usr/bin/g++-12 run: | - sudo -E ./ci/setup_googletest.sh sudo -E ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh + sudo -E ./ci/setup_googletest.sh - name: run tests env: CC: /usr/bin/gcc-12 @@ -903,8 +925,9 @@ jobs: CC: /usr/bin/gcc-10 CXX: /usr/bin/g++-10 run: | - sudo -E ./ci/setup_googletest.sh sudo -E ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh + sudo -E ./ci/setup_googletest.sh - name: run tests and generate report env: CC: /usr/bin/gcc-10 @@ -974,8 +997,9 @@ jobs: CC: /usr/bin/gcc-12 CXX: /usr/bin/g++-12 run: | - sudo -E ./ci/setup_googletest.sh sudo -E ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh + sudo -E ./ci/setup_googletest.sh - name: run w3c trace-context test server (background) env: CXX_STANDARD: '14' diff --git a/ci/setup_cmake.sh b/ci/setup_cmake.sh index 0cb5d7eb79..01270b84f1 100755 --- a/ci/setup_cmake.sh +++ b/ci/setup_cmake.sh @@ -4,6 +4,30 @@ # SPDX-License-Identifier: Apache-2.0 set -e -apt-get update -apt-get install --no-install-recommends --no-install-suggests -y \ - cmake + +# Use CMAKE_VERSION env var if set, else default to 3.31.6 +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" + +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" + +mkdir -p /opt/cmake +mv "$CMAKE_DIR" /opt/cmake/cmake + +for file in /opt/cmake/cmake/bin/*; do + ln -sf "$file" /usr/local/bin/$(basename "$file") +done + +rm -f "$CMAKE_TAR" + +cmake --version From e32778973a825a4fc424bbe99ce300ef811ce060 Mon Sep 17 00:00:00 2001 From: Douglas Barker Date: Tue, 1 Apr 2025 12:06:26 -0600 Subject: [PATCH 2/3] add setup cmake script for windows. install pinned cmake in more ubuntu jobs --- .github/workflows/ci.yml | 10 +++++++++- .github/workflows/iwyu.yml | 3 ++- ci/setup_cmake.ps1 | 15 +++++++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 ci/setup_cmake.ps1 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index eeac30411e..a11077708f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -183,9 +183,9 @@ jobs: PROTOBUF_VERSION: 21.12 run: | sudo apt remove needrestart #refer: https://github.com/actions/runner-images/issues/9937 - sudo -E ./ci/setup_googletest.sh sudo -E ./ci/setup_ci_environment.sh sudo -E ./ci/setup_cmake.sh + sudo -E ./ci/setup_googletest.sh sudo -E ./ci/install_protobuf.sh - name: setup grpc run: | @@ -252,6 +252,7 @@ jobs: submodules: 'recursive' - name: setup run: | + ./ci/setup_cmake.ps1 ./ci/setup_windows_ci_environment.ps1 - name: run tests run: ./ci/do_ci.ps1 cmake.maintainer.test @@ -265,6 +266,7 @@ jobs: submodules: 'recursive' - name: setup run: | + ./ci/setup_cmake.ps1 ./ci/setup_windows_ci_environment.ps1 - name: run tests env: @@ -280,6 +282,7 @@ jobs: submodules: 'recursive' - name: setup run: | + ./ci/setup_cmake.ps1 ./ci/setup_windows_ci_environment.ps1 - name: run tests env: @@ -623,6 +626,7 @@ jobs: - name: setup run: | sudo ./ci/setup_ci_environment.sh + sudo ./ci/setup_cmake.sh sudo ./ci/install_bazelisk.sh - name: run tests run: ./ci/do_ci.sh bazel.test @@ -846,6 +850,7 @@ jobs: submodules: 'recursive' - name: setup run: | + ./ci/setup_cmake.ps1 ./ci/setup_windows_ci_environment.ps1 ./ci/install_windows_protobuf.ps1 - name: run cmake test @@ -862,6 +867,7 @@ jobs: submodules: 'recursive' - name: setup run: | + ./ci/setup_cmake.ps1 ./ci/setup_windows_ci_environment.ps1 ./ci/install_windows_protobuf.ps1 - name: run cmake test (DLL build) @@ -880,6 +886,7 @@ jobs: submodules: 'recursive' - name: setup run: | + ./ci/setup_cmake.ps1 ./ci/setup_windows_ci_environment.ps1 ./ci/install_windows_protobuf.ps1 - name: run cmake test @@ -909,6 +916,7 @@ jobs: submodules: 'recursive' - name: setup run: | + ./ci/setup_cmake.ps1 ./ci/setup_windows_ci_environment.ps1 - name: run tests run: ./ci/do_ci.ps1 cmake.test_example_plugin diff --git a/.github/workflows/iwyu.yml b/.github/workflows/iwyu.yml index 1e4d60ff9c..db19cd80f3 100644 --- a/.github/workflows/iwyu.yml +++ b/.github/workflows/iwyu.yml @@ -21,7 +21,6 @@ jobs: sudo apt install -y --no-install-recommends --no-install-suggests \ build-essential \ iwyu \ - cmake \ ninja-build \ libssl-dev \ libcurl4-openssl-dev \ @@ -30,6 +29,8 @@ jobs: libgmock-dev \ libgtest-dev \ libbenchmark-dev + sudo ./ci/setup_cmake.sh + - name: setup grpc run: | diff --git a/ci/setup_cmake.ps1 b/ci/setup_cmake.ps1 new file mode 100644 index 0000000000..85ff369305 --- /dev/null +++ b/ci/setup_cmake.ps1 @@ -0,0 +1,15 @@ +# Copyright The OpenTelemetry Authors +# SPDX-License-Identifier: Apache-2.0 + +$ErrorActionPreference = "Stop" +trap { $host.SetShouldExit(1) } + +if (-not $env:CMAKE_VERSION) { $env:CMAKE_VERSION = "3.31.6" } +$CMAKE_VERSION = $env:CMAKE_VERSION + +choco uninstall cmake -y + +Write-Host "Installing CMake version $CMAKE_VERSION ..." +choco install cmake --version=$CMAKE_VERSION -y + +cmake --version From ef957507cf046c63e73c442f4a620b2f1f919227 Mon Sep 17 00:00:00 2001 From: Douglas Barker Date: Tue, 1 Apr 2025 12:20:45 -0600 Subject: [PATCH 3/3] pin cmake on bazel builds. force the cmake downgrade on windows --- .github/workflows/ci.yml | 7 +++++++ ci/setup_cmake.ps1 | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a11077708f..bc8fde8bbc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -648,6 +648,7 @@ jobs: - name: setup run: | sudo ./ci/setup_ci_environment.sh + sudo ./ci/setup_cmake.sh sudo ./ci/install_bazelisk.sh - name: run tests run: ./ci/do_ci.sh bazel.no_bzlmod.test @@ -669,6 +670,7 @@ jobs: - name: setup run: | sudo ./ci/setup_ci_environment.sh + sudo ./ci/setup_cmake.sh sudo ./ci/install_bazelisk.sh - name: run tests run: ./ci/do_ci.sh bazel.with_async_export.test @@ -690,6 +692,7 @@ jobs: - name: setup run: | sudo ./ci/setup_ci_environment.sh + sudo ./ci/setup_cmake.sh sudo ./ci/install_bazelisk.sh - name: run tests run: ./ci/do_ci.sh bazel.valgrind @@ -711,6 +714,7 @@ jobs: - name: setup run: | sudo ./ci/setup_ci_environment.sh + sudo ./ci/setup_cmake.sh sudo ./ci/install_bazelisk.sh - name: run tests run: ./ci/do_ci.sh bazel.noexcept @@ -732,6 +736,7 @@ jobs: - name: setup run: | sudo ./ci/setup_ci_environment.sh + sudo ./ci/setup_cmake.sh sudo ./ci/install_bazelisk.sh - name: run tests run: ./ci/do_ci.sh bazel.nortti @@ -753,6 +758,7 @@ jobs: - name: setup run: | sudo ./ci/setup_ci_environment.sh + sudo ./ci/setup_cmake.sh sudo ./ci/install_bazelisk.sh - name: run tests run: ./ci/do_ci.sh bazel.asan @@ -774,6 +780,7 @@ jobs: - name: setup run: | sudo ./ci/setup_ci_environment.sh + sudo ./ci/setup_cmake.sh sudo ./ci/install_bazelisk.sh - name: run tests run: ./ci/do_ci.sh bazel.tsan diff --git a/ci/setup_cmake.ps1 b/ci/setup_cmake.ps1 index 85ff369305..dbe332d139 100644 --- a/ci/setup_cmake.ps1 +++ b/ci/setup_cmake.ps1 @@ -7,9 +7,9 @@ trap { $host.SetShouldExit(1) } if (-not $env:CMAKE_VERSION) { $env:CMAKE_VERSION = "3.31.6" } $CMAKE_VERSION = $env:CMAKE_VERSION -choco uninstall cmake -y +choco uninstall cmake cmake.install -y --remove-dependencies --skip-autouninstaller --force --no-progress Write-Host "Installing CMake version $CMAKE_VERSION ..." -choco install cmake --version=$CMAKE_VERSION -y +choco install cmake --version=$CMAKE_VERSION --allow-downgrade -y --force --no-progress cmake --version