From e3aa0a5dbe2e11c309fc1816dff1d50aac24719c Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Tue, 23 May 2023 09:52:38 +0200 Subject: [PATCH 1/5] [DEPRECATION] Drop C++11 support (#2146) --- .github/workflows/benchmark.yml | 6 ++- .github/workflows/ci.yml | 53 +++++++++++++++++---------- .github/workflows/codeql-analysis.yml | 8 +++- CMakeLists.txt | 5 ++- bazel/repository.bzl | 6 +-- ci/do_ci.sh | 1 + ci/setup_cmake.sh | 16 ++++++-- third_party_release | 2 +- 8 files changed, 64 insertions(+), 33 deletions(-) diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index 1826603214..9823252c58 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -24,9 +24,11 @@ jobs: path: /home/runner/.cache/bazel key: bazel_benchmark - name: setup + env: + GOOGLETEST_VERSION: 1.13.0 run: | - sudo ./ci/setup_cmake.sh - sudo ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh + sudo -E ./ci/setup_ci_environment.sh - name: Run benchmark id: run_benchmarks run: | diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e1666dabbb..ace58fe8dc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,6 +18,7 @@ jobs: env: CC: /usr/bin/gcc-10 CXX: /usr/bin/g++-10 + GOOGLETEST_VERSION: 1.13.0 run: | sudo -E ./ci/setup_cmake.sh sudo -E ./ci/setup_ci_environment.sh @@ -76,7 +77,7 @@ jobs: env: CC: /usr/bin/gcc-12 CXX: /usr/bin/g++-12 - GOOGLETEST_VERSION: 1.12.1 + GOOGLETEST_VERSION: 1.13.0 PROTOBUF_VERSION: 21.12 run: | sudo -E ./ci/setup_cmake.sh @@ -109,7 +110,7 @@ jobs: env: CC: /usr/bin/gcc-12 CXX: /usr/bin/g++-12 - GOOGLETEST_VERSION: 1.12.1 + GOOGLETEST_VERSION: 1.13.0 PROTOBUF_VERSION: 21.12 run: | sudo -E ./ci/setup_cmake.sh @@ -142,7 +143,7 @@ jobs: env: CC: /usr/bin/clang-14 CXX: /usr/bin/clang++-14 - GOOGLETEST_VERSION: 1.12.1 + GOOGLETEST_VERSION: 1.13.0 PROTOBUF_VERSION: 21.12 run: | sudo -E ./ci/setup_cmake.sh @@ -175,7 +176,7 @@ jobs: env: CC: /usr/bin/clang-14 CXX: /usr/bin/clang++-14 - GOOGLETEST_VERSION: 1.12.1 + GOOGLETEST_VERSION: 1.13.0 PROTOBUF_VERSION: 21.12 run: | sudo -E ./ci/setup_cmake.sh @@ -222,6 +223,7 @@ jobs: env: CC: /usr/bin/gcc-10 CXX: /usr/bin/g++-10 + GOOGLETEST_VERSION: 1.13.0 run: | sudo -E ./ci/setup_cmake.sh sudo -E ./ci/setup_ci_environment.sh @@ -240,9 +242,11 @@ jobs: with: submodules: 'recursive' - name: setup + env: + GOOGLETEST_VERSION: 1.13.0 run: | - sudo ./ci/setup_cmake.sh - sudo ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh + sudo -E ./ci/setup_ci_environment.sh - name: run cmake tests (enable abseil-cpp) run: | sudo ./ci/install_abseil.sh @@ -256,9 +260,11 @@ jobs: with: submodules: 'recursive' - name: setup + env: + GOOGLETEST_VERSION: 1.13.0 run: | - sudo ./ci/setup_cmake.sh - sudo ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh + sudo -E ./ci/setup_ci_environment.sh - name: run cmake tests (enable opentracing-shim) run: ./ci/do_ci.sh cmake.opentracing_shim.test @@ -281,8 +287,8 @@ jobs: env: CC: /usr/bin/gcc-4.8 CXX: /usr/bin/g++-4.8 - GOOGLETEST_VERSION: "1.10.0" - run: sudo -E ./ci/setup_cmake.sh + run: | + sudo -E ./ci/setup_cmake.sh - name: run tests env: CC: /usr/bin/gcc-4.8 @@ -308,7 +314,6 @@ jobs: env: CC: /usr/bin/gcc-4.8 CXX: /usr/bin/g++-4.8 - GOOGLETEST_VERSION: "1.10.0" run: | sudo -E ./ci/setup_cmake.sh sudo -E ./ci/setup_grpc.sh -v 4.8 @@ -327,7 +332,8 @@ jobs: submodules: 'recursive' - name: setup env: - CMAKE_VERSION: "3.20.6" + CMAKE_VERSION: 3.20.6 + GOOGLETEST_VERSION: 1.13.0 run: | sudo -E ./ci/setup_ci_environment.sh sudo -E ./ci/setup_cmake.sh @@ -348,7 +354,8 @@ jobs: CC: /usr/bin/clang CXX: /usr/bin/clang++ CXXFLAGS: "-stdlib=libc++" - CMAKE_VERSION: "3.20.6" + CMAKE_VERSION: 3.20.6 + GOOGLETEST_VERSION: 1.13.0 run: | sudo -E ./ci/setup_ci_environment.sh sudo -E ./ci/setup_cmake.sh @@ -373,9 +380,11 @@ jobs: with: submodules: 'recursive' - name: setup + env: + GOOGLETEST_VERSION: 1.13.0 run: | - sudo ./ci/setup_cmake.sh - sudo ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh + sudo -E ./ci/setup_ci_environment.sh - name: run otlp exporter tests run: | sudo ./ci/setup_grpc.sh @@ -389,9 +398,11 @@ jobs: with: submodules: 'recursive' - name: setup + env: + GOOGLETEST_VERSION: 1.13.0 run: | - sudo ./ci/setup_cmake.sh - sudo ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh + sudo -E ./ci/setup_ci_environment.sh - name: run otlp exporter tests run: | sudo ./ci/setup_grpc.sh @@ -405,9 +416,11 @@ jobs: with: submodules: 'recursive' - name: setup + env: + GOOGLETEST_VERSION: 1.13.0 run: | - sudo ./ci/setup_cmake.sh - sudo ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh + sudo -E ./ci/setup_ci_environment.sh - name: run otlp exporter tests run: | sudo ./ci/setup_grpc.sh -T @@ -424,6 +437,7 @@ jobs: env: CC: /usr/bin/gcc-10 CXX: /usr/bin/g++-10 + GOOGLETEST_VERSION: 1.13.0 run: | sudo -E ./ci/setup_cmake.sh sudo -E ./ci/setup_ci_environment.sh @@ -753,6 +767,7 @@ jobs: env: CC: /usr/bin/gcc-10 CXX: /usr/bin/g++-10 + GOOGLETEST_VERSION: 1.13.0 run: | sudo -E ./ci/setup_cmake.sh sudo -E ./ci/setup_ci_environment.sh diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index d86e1d55d2..b751e6d407 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -19,9 +19,13 @@ jobs: run: | rm -rf third_party - name: Setup + env: + CC: /usr/bin/gcc-10 + CXX: /usr/bin/g++-10 + GOOGLETEST_VERSION: 1.13.0 run: | - sudo CC=/usr/bin/gcc-10 CXX=/usr/bin/g++-10 ./ci/setup_cmake.sh - sudo CC=/usr/bin/gcc-10 CXX=/usr/bin/g++-10 ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh + sudo -E ./ci/setup_ci_environment.sh - name: Initialize CodeQL uses: github/codeql-action/init@v2 with: diff --git a/CMakeLists.txt b/CMakeLists.txt index fb483f5a58..db42f74a33 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -208,8 +208,8 @@ set(OTELCPP_PROTO_PATH if(WIN32) if(BUILD_TESTING) if(MSVC) - # GTest bug: https://github.com/google/googletest/issues/860 - add_compile_options(/wd4275) + # Warning as error: warning STL4036: is removed in C++20 + add_compile_options(/wd4996) endif() endif() option(WITH_ETW "Whether to include the ETW Exporter in the SDK" ON) @@ -512,6 +512,7 @@ list(APPEND CMAKE_PREFIX_PATH "${CMAKE_BINARY_DIR}") include(CTest) if(BUILD_TESTING) + set(CMAKE_CXX_STANDARD 20) add_definitions(-DENABLE_TEST) if(EXISTS ${CMAKE_BINARY_DIR}/lib/libgtest.a) # Prefer GTest from build tree. GTest is not always working with diff --git a/bazel/repository.bzl b/bazel/repository.bzl index 6831af9aa7..dd02fc98fc 100644 --- a/bazel/repository.bzl +++ b/bazel/repository.bzl @@ -46,10 +46,10 @@ def opentelemetry_cpp_deps(): maybe( http_archive, name = "com_google_googletest", - sha256 = "81964fe578e9bd7c94dfdb09c8e4d6e6759e19967e397dbea48d1c10e45d0df2", - strip_prefix = "googletest-release-1.12.1", + sha256 = "ad7fdba11ea011c1d925b3289cf4af2c66a352e18d4c7264392fead75e919363", + strip_prefix = "googletest-1.13.0", urls = [ - "https://github.com/google/googletest/archive/release-1.12.1.tar.gz", + "https://github.com/google/googletest/archive/v1.13.0.tar.gz", ], ) diff --git a/ci/do_ci.sh b/ci/do_ci.sh index 42bf3df416..e54eb10ce1 100755 --- a/ci/do_ci.sh +++ b/ci/do_ci.sh @@ -226,6 +226,7 @@ elif [[ "$1" == "cmake.c++20.stl.test" ]]; then -DWITH_LOGS_PREVIEW=ON \ -DCMAKE_CXX_FLAGS="-Werror $CXXFLAGS" \ -DWITH_ASYNC_EXPORT_PREVIEW=ON \ + -DCMAKE_CXX_STANDARD=20 \ -DWITH_STL=ON \ ${IWYU} \ "${SRC_DIR}" diff --git a/ci/setup_cmake.sh b/ci/setup_cmake.sh index cdce76b38d..02f6a20f7d 100755 --- a/ci/setup_cmake.sh +++ b/ci/setup_cmake.sh @@ -12,8 +12,16 @@ if [ "x$CMAKE_VERSION" = "x" ]; then export CMAKE_VERSION=3.15.2 fi +# This variable not set on CI pipeline for only legacy environment(GCC 4.8). +# With 1.13.0 version, C++14 must be set which does not supported by legacy environment anymore. +# Also with this version, release version path needs to be adapted. if [ "x$GOOGLETEST_VERSION" = "x" ]; then - export GOOGLETEST_VERSION=1.12.1 + export GOOGLETEST_VERSION=1.10.0 + GOOGLETEST_VERSION_PATH="release-${GOOGLETEST_VERSION}" + GOOGLETEST_FOLDER_PATH="googletest-release-${GOOGLETEST_VERSION}" +else + GOOGLETEST_VERSION_PATH="v${GOOGLETEST_VERSION}" + GOOGLETEST_FOLDER_PATH="googletest-${GOOGLETEST_VERSION}" fi cmake_install() { @@ -31,9 +39,9 @@ googletest_install() { # https://gist.github.com/dlime/313f74fd23e4267c4a915086b84c7d3d tmp_dir=$(mktemp -d) pushd $tmp_dir - wget https://github.com/google/googletest/archive/release-${GOOGLETEST_VERSION}.tar.gz - tar -xf release-${GOOGLETEST_VERSION}.tar.gz - cd googletest-release-${GOOGLETEST_VERSION}/ + wget https://github.com/google/googletest/archive/${GOOGLETEST_VERSION_PATH}.tar.gz + tar -xf ${GOOGLETEST_VERSION_PATH}.tar.gz + cd ${GOOGLETEST_FOLDER_PATH}/ mkdir build && cd build cmake .. -DBUILD_SHARED_LIBS=ON -DINSTALL_GTEST=ON -DCMAKE_INSTALL_PREFIX:PATH=/usr make -j $(nproc) diff --git a/third_party_release b/third_party_release index 2120898cd9..9fae12fc31 100644 --- a/third_party_release +++ b/third_party_release @@ -16,7 +16,7 @@ gRPC=v1.49.2 abseil=20220623.1 benchmark=v1.7.1 -googletest=release-1.12.1 +googletest=release-1.13.0 ms-gsl=v3.1.0-67-g6f45293 nlohmann-json=v3.11.2 opentelemetry-proto=v1.0.0 From cc68517b2a4381e023ab862fc3112bc64408ed6e Mon Sep 17 00:00:00 2001 From: Cengizhan Pasaoglu Date: Tue, 4 Jul 2023 11:19:13 +0200 Subject: [PATCH 2/5] Fix scripts after review comments #2114 --- .github/workflows/benchmark.yml | 2 -- .github/workflows/ci.yml | 22 ++-------------------- .github/workflows/codeql-analysis.yml | 1 - CMakeLists.txt | 1 - ci/do_ci.sh | 17 ++++++++++++++--- ci/setup_cmake.sh | 13 ++++++++----- 6 files changed, 24 insertions(+), 32 deletions(-) diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index 9823252c58..cc63677a24 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -24,8 +24,6 @@ jobs: path: /home/runner/.cache/bazel key: bazel_benchmark - name: setup - env: - GOOGLETEST_VERSION: 1.13.0 run: | sudo -E ./ci/setup_cmake.sh sudo -E ./ci/setup_ci_environment.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ace58fe8dc..ff33aa46e3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,7 +18,6 @@ jobs: env: CC: /usr/bin/gcc-10 CXX: /usr/bin/g++-10 - GOOGLETEST_VERSION: 1.13.0 run: | sudo -E ./ci/setup_cmake.sh sudo -E ./ci/setup_ci_environment.sh @@ -77,7 +76,6 @@ jobs: env: CC: /usr/bin/gcc-12 CXX: /usr/bin/g++-12 - GOOGLETEST_VERSION: 1.13.0 PROTOBUF_VERSION: 21.12 run: | sudo -E ./ci/setup_cmake.sh @@ -110,7 +108,6 @@ jobs: env: CC: /usr/bin/gcc-12 CXX: /usr/bin/g++-12 - GOOGLETEST_VERSION: 1.13.0 PROTOBUF_VERSION: 21.12 run: | sudo -E ./ci/setup_cmake.sh @@ -143,7 +140,6 @@ jobs: env: CC: /usr/bin/clang-14 CXX: /usr/bin/clang++-14 - GOOGLETEST_VERSION: 1.13.0 PROTOBUF_VERSION: 21.12 run: | sudo -E ./ci/setup_cmake.sh @@ -176,7 +172,6 @@ jobs: env: CC: /usr/bin/clang-14 CXX: /usr/bin/clang++-14 - GOOGLETEST_VERSION: 1.13.0 PROTOBUF_VERSION: 21.12 run: | sudo -E ./ci/setup_cmake.sh @@ -223,7 +218,6 @@ jobs: env: CC: /usr/bin/gcc-10 CXX: /usr/bin/g++-10 - GOOGLETEST_VERSION: 1.13.0 run: | sudo -E ./ci/setup_cmake.sh sudo -E ./ci/setup_ci_environment.sh @@ -242,8 +236,6 @@ jobs: with: submodules: 'recursive' - name: setup - env: - GOOGLETEST_VERSION: 1.13.0 run: | sudo -E ./ci/setup_cmake.sh sudo -E ./ci/setup_ci_environment.sh @@ -260,8 +252,6 @@ jobs: with: submodules: 'recursive' - name: setup - env: - GOOGLETEST_VERSION: 1.13.0 run: | sudo -E ./ci/setup_cmake.sh sudo -E ./ci/setup_ci_environment.sh @@ -287,6 +277,7 @@ jobs: env: CC: /usr/bin/gcc-4.8 CXX: /usr/bin/g++-4.8 + GOOGLETEST_VERSION: 1.10.0 run: | sudo -E ./ci/setup_cmake.sh - name: run tests @@ -314,6 +305,7 @@ jobs: env: CC: /usr/bin/gcc-4.8 CXX: /usr/bin/g++-4.8 + GOOGLETEST_VERSION: 1.10.0 run: | sudo -E ./ci/setup_cmake.sh sudo -E ./ci/setup_grpc.sh -v 4.8 @@ -333,7 +325,6 @@ jobs: - name: setup env: CMAKE_VERSION: 3.20.6 - GOOGLETEST_VERSION: 1.13.0 run: | sudo -E ./ci/setup_ci_environment.sh sudo -E ./ci/setup_cmake.sh @@ -355,7 +346,6 @@ jobs: CXX: /usr/bin/clang++ CXXFLAGS: "-stdlib=libc++" CMAKE_VERSION: 3.20.6 - GOOGLETEST_VERSION: 1.13.0 run: | sudo -E ./ci/setup_ci_environment.sh sudo -E ./ci/setup_cmake.sh @@ -380,8 +370,6 @@ jobs: with: submodules: 'recursive' - name: setup - env: - GOOGLETEST_VERSION: 1.13.0 run: | sudo -E ./ci/setup_cmake.sh sudo -E ./ci/setup_ci_environment.sh @@ -398,8 +386,6 @@ jobs: with: submodules: 'recursive' - name: setup - env: - GOOGLETEST_VERSION: 1.13.0 run: | sudo -E ./ci/setup_cmake.sh sudo -E ./ci/setup_ci_environment.sh @@ -416,8 +402,6 @@ jobs: with: submodules: 'recursive' - name: setup - env: - GOOGLETEST_VERSION: 1.13.0 run: | sudo -E ./ci/setup_cmake.sh sudo -E ./ci/setup_ci_environment.sh @@ -437,7 +421,6 @@ jobs: env: CC: /usr/bin/gcc-10 CXX: /usr/bin/g++-10 - GOOGLETEST_VERSION: 1.13.0 run: | sudo -E ./ci/setup_cmake.sh sudo -E ./ci/setup_ci_environment.sh @@ -767,7 +750,6 @@ jobs: env: CC: /usr/bin/gcc-10 CXX: /usr/bin/g++-10 - GOOGLETEST_VERSION: 1.13.0 run: | sudo -E ./ci/setup_cmake.sh sudo -E ./ci/setup_ci_environment.sh diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index b751e6d407..8d0071ce11 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -22,7 +22,6 @@ jobs: env: CC: /usr/bin/gcc-10 CXX: /usr/bin/g++-10 - GOOGLETEST_VERSION: 1.13.0 run: | sudo -E ./ci/setup_cmake.sh sudo -E ./ci/setup_ci_environment.sh diff --git a/CMakeLists.txt b/CMakeLists.txt index db42f74a33..d788a14c6c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -512,7 +512,6 @@ list(APPEND CMAKE_PREFIX_PATH "${CMAKE_BINARY_DIR}") include(CTest) if(BUILD_TESTING) - set(CMAKE_CXX_STANDARD 20) add_definitions(-DENABLE_TEST) if(EXISTS ${CMAKE_BINARY_DIR}/lib/libgtest.a) # Prefer GTest from build tree. GTest is not always working with diff --git a/ci/do_ci.sh b/ci/do_ci.sh index e54eb10ce1..f23dae80e8 100755 --- a/ci/do_ci.sh +++ b/ci/do_ci.sh @@ -89,6 +89,7 @@ if [[ "$1" == "cmake.test" ]]; then cd "${BUILD_DIR}" rm -rf * cmake -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_CXX_STANDARD=14 \ -DWITH_PROMETHEUS=ON \ -DWITH_ZIPKIN=ON \ -DWITH_ELASTICSEARCH=ON \ @@ -103,6 +104,7 @@ elif [[ "$1" == "cmake.maintainer.sync.test" ]]; then cd "${BUILD_DIR}" rm -rf * cmake -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_CXX_STANDARD=14 \ -DWITH_OTLP_HTTP=ON \ -DWITH_OTLP_HTTP_SSL_PREVIEW=ON \ -DWITH_OTLP_HTTP_SSL_TLS_PREVIEW=ON \ @@ -126,6 +128,7 @@ elif [[ "$1" == "cmake.maintainer.async.test" ]]; then cd "${BUILD_DIR}" rm -rf * cmake -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_CXX_STANDARD=14 \ -DWITH_OTLP_HTTP=ON \ -DWITH_OTLP_HTTP_SSL_PREVIEW=ON \ -DWITH_OTLP_HTTP_SSL_TLS_PREVIEW=ON \ @@ -172,6 +175,7 @@ elif [[ "$1" == "cmake.with_async_export.test" ]]; then cd "${BUILD_DIR}" rm -rf * cmake -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_CXX_STANDARD=14 \ -DWITH_PROMETHEUS=ON \ -DWITH_ZIPKIN=ON \ -DWITH_ELASTICSEARCH=ON \ @@ -187,6 +191,7 @@ elif [[ "$1" == "cmake.abseil.test" ]]; then cd "${BUILD_DIR}" rm -rf * cmake -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_CXX_STANDARD=14 \ -DWITH_METRICS_EXEMPLAR_PREVIEW=ON \ -DWITH_LOGS_PREVIEW=ON \ -DCMAKE_CXX_FLAGS="-Werror $CXXFLAGS" \ @@ -200,6 +205,7 @@ elif [[ "$1" == "cmake.opentracing_shim.test" ]]; then cd "${BUILD_DIR}" rm -rf * cmake -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_CXX_STANDARD=14 \ -DCMAKE_CXX_FLAGS="-Werror -Wno-error=redundant-move $CXXFLAGS" \ -DWITH_OPENTRACING=ON \ "${SRC_DIR}" @@ -210,9 +216,9 @@ elif [[ "$1" == "cmake.c++20.test" ]]; then cd "${BUILD_DIR}" rm -rf * cmake -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_CXX_STANDARD=20 \ -DCMAKE_CXX_FLAGS="-Werror $CXXFLAGS" \ -DWITH_ASYNC_EXPORT_PREVIEW=ON \ - -DCMAKE_CXX_STANDARD=20 \ ${IWYU} \ "${SRC_DIR}" eval "$MAKE_COMMAND" @@ -222,11 +228,11 @@ elif [[ "$1" == "cmake.c++20.stl.test" ]]; then cd "${BUILD_DIR}" rm -rf * cmake -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_CXX_STANDARD=20 \ -DWITH_METRICS_EXEMPLAR_PREVIEW=ON \ -DWITH_LOGS_PREVIEW=ON \ -DCMAKE_CXX_FLAGS="-Werror $CXXFLAGS" \ -DWITH_ASYNC_EXPORT_PREVIEW=ON \ - -DCMAKE_CXX_STANDARD=20 \ -DWITH_STL=ON \ ${IWYU} \ "${SRC_DIR}" @@ -239,8 +245,8 @@ elif [[ "$1" == "cmake.legacy.test" ]]; then export BUILD_ROOT="${BUILD_DIR}" ${SRC_DIR}/tools/build-benchmark.sh cmake -DCMAKE_BUILD_TYPE=Debug \ - -DCMAKE_CXX_FLAGS="-Werror $CXXFLAGS" \ -DCMAKE_CXX_STANDARD=11 \ + -DCMAKE_CXX_FLAGS="-Werror $CXXFLAGS" \ "${SRC_DIR}" make -j $(nproc) make test @@ -266,6 +272,7 @@ elif [[ "$1" == "cmake.exporter.otprotocol.test" ]]; then cd "${BUILD_DIR}" rm -rf * cmake -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_CXX_STANDARD=14 \ -DWITH_OTLP_GRPC=ON \ -DWITH_OTLP_HTTP=ON \ -DWITH_OTLP_GRPC_SSL_MTLS_PREVIEW=ON \ @@ -280,6 +287,7 @@ elif [[ "$1" == "cmake.exporter.otprotocol.shared_libs.with_static_grpc.test" ]] cd "${BUILD_DIR}" rm -rf * cmake -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_CXX_STANDARD=14 \ -DWITH_OTLP_GRPC=ON \ -DWITH_OTLP_HTTP=ON \ -DBUILD_SHARED_LIBS=ON \ @@ -294,6 +302,7 @@ elif [[ "$1" == "cmake.exporter.otprotocol.with_async_export.test" ]]; then cd "${BUILD_DIR}" rm -rf * cmake -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_CXX_STANDARD=14 \ -DWITH_OTLP_GRPC=ON \ -DWITH_OTLP_HTTP=ON \ -DWITH_ASYNC_EXPORT_PREVIEW=ON \ @@ -308,6 +317,7 @@ elif [[ "$1" == "cmake.do_not_install.test" ]]; then cd "${BUILD_DIR}" rm -rf * cmake -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_CXX_STANDARD=14 \ -DWITH_OTLP_GRPC=ON \ -DWITH_OTLP_HTTP=ON \ -DWITH_ASYNC_EXPORT_PREVIEW=ON \ @@ -434,6 +444,7 @@ elif [[ "$1" == "code.coverage" ]]; then cd "${BUILD_DIR}" rm -rf * cmake -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_CXX_STANDARD=14 \ -DCMAKE_CXX_FLAGS="-Werror --coverage $CXXFLAGS" \ "${SRC_DIR}" make diff --git a/ci/setup_cmake.sh b/ci/setup_cmake.sh index 02f6a20f7d..7c96d17c88 100755 --- a/ci/setup_cmake.sh +++ b/ci/setup_cmake.sh @@ -9,19 +9,22 @@ export DEBIAN_FRONTEND=noninteractive apt-get update if [ "x$CMAKE_VERSION" = "x" ]; then + # By default, CMake version set the following version. export CMAKE_VERSION=3.15.2 fi # This variable not set on CI pipeline for only legacy environment(GCC 4.8). # With 1.13.0 version, C++14 must be set which does not supported by legacy environment anymore. # Also with this version, release version path needs to be adapted. -if [ "x$GOOGLETEST_VERSION" = "x" ]; then - export GOOGLETEST_VERSION=1.10.0 - GOOGLETEST_VERSION_PATH="release-${GOOGLETEST_VERSION}" - GOOGLETEST_FOLDER_PATH="googletest-release-${GOOGLETEST_VERSION}" -else +if [ -z "${GOOGLETEST_VERSION}" ]; then + # By default, GoogleTest version set the following version. + export GOOGLETEST_VERSION=1.13.0 GOOGLETEST_VERSION_PATH="v${GOOGLETEST_VERSION}" GOOGLETEST_FOLDER_PATH="googletest-${GOOGLETEST_VERSION}" +else + GOOGLETEST_VERSION_PATH="release-${GOOGLETEST_VERSION}" + GOOGLETEST_FOLDER_PATH="googletest-release-${GOOGLETEST_VERSION}" + fi cmake_install() { From dab4111f6590fb6e5fc5214d07c400fe43ee6123 Mon Sep 17 00:00:00 2001 From: Cengizhan Pasaoglu Date: Mon, 10 Jul 2023 13:10:32 +0200 Subject: [PATCH 3/5] Split up GoogleTest version and deploy path --- .github/workflows/codeql-analysis.yml | 1 + ci/setup_cmake.sh | 117 ++++++++++++++++++-------- 2 files changed, 83 insertions(+), 35 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 8d0071ce11..15187cb39b 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -22,6 +22,7 @@ jobs: env: CC: /usr/bin/gcc-10 CXX: /usr/bin/g++-10 + GOOGLETEST_VERSION: 1.12.1 run: | sudo -E ./ci/setup_cmake.sh sudo -E ./ci/setup_ci_environment.sh diff --git a/ci/setup_cmake.sh b/ci/setup_cmake.sh index 7c96d17c88..97abbb4ec5 100755 --- a/ci/setup_cmake.sh +++ b/ci/setup_cmake.sh @@ -8,6 +8,45 @@ set -e export DEBIAN_FRONTEND=noninteractive apt-get update +VERSION_COMPARE_SIGN="" +GOOGLETEST_LATEST_VERSION=1.13.0 + +function version_compare() +{ + if [[ $1 == $2 ]] + then + VERSION_COMPARE_SIGN="=" + return + fi + local IFS=. + local i left=($1) right=($2) + # fill empty fields in left with zeros + for ((i=${#left[@]}; i<${#right[@]}; i++)) + do + left[i]=0 + done + for ((i=0; i<${#left[@]}; i++)) + do + if [[ -z ${right[i]} ]] + then + # fill empty fields in right with zeros + right[i]=0 + fi + if ((10#${left[i]} > 10#${right[i]})) + then + VERSION_COMPARE_SIGN=">" + return + fi + if ((10#${left[i]} < 10#${right[i]})) + then + VERSION_COMPARE_SIGN="<" + return + fi + done + + VERSION_COMPARE_SIGN="=" +} + if [ "x$CMAKE_VERSION" = "x" ]; then # By default, CMake version set the following version. export CMAKE_VERSION=3.15.2 @@ -18,52 +57,60 @@ fi # Also with this version, release version path needs to be adapted. if [ -z "${GOOGLETEST_VERSION}" ]; then # By default, GoogleTest version set the following version. - export GOOGLETEST_VERSION=1.13.0 - GOOGLETEST_VERSION_PATH="v${GOOGLETEST_VERSION}" - GOOGLETEST_FOLDER_PATH="googletest-${GOOGLETEST_VERSION}" -else + export GOOGLETEST_VERSION=${GOOGLETEST_LATEST_VERSION} +fi + +version_compare ${GOOGLETEST_VERSION} ${GOOGLETEST_LATEST_VERSION} + +# If GoogleTest version less than ${GOOGLETEST_LATEST_VERSION} +# Else otherwise +if [ "${VERSION_COMPARE_SIGN}" == "<" ]; then GOOGLETEST_VERSION_PATH="release-${GOOGLETEST_VERSION}" GOOGLETEST_FOLDER_PATH="googletest-release-${GOOGLETEST_VERSION}" - +else + GOOGLETEST_VERSION_PATH="v${GOOGLETEST_VERSION}" + GOOGLETEST_FOLDER_PATH="googletest-${GOOGLETEST_VERSION}" fi -cmake_install() { - tmp_dir=$(mktemp -d) - pushd $tmp_dir - wget https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-Linux-x86_64.sh - chmod +x cmake-${CMAKE_VERSION}-Linux-x86_64.sh - ./cmake-${CMAKE_VERSION}-Linux-x86_64.sh --prefix=/usr/local --skip-license - rm cmake-${CMAKE_VERSION}-Linux-x86_64.sh - popd +cmake_install() +{ + tmp_dir=$(mktemp -d) + pushd $tmp_dir + wget https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-Linux-x86_64.sh + chmod +x cmake-${CMAKE_VERSION}-Linux-x86_64.sh + ./cmake-${CMAKE_VERSION}-Linux-x86_64.sh --prefix=/usr/local --skip-license + rm cmake-${CMAKE_VERSION}-Linux-x86_64.sh + popd } -googletest_install() { - # Follows these instructions - # https://gist.github.com/dlime/313f74fd23e4267c4a915086b84c7d3d - tmp_dir=$(mktemp -d) - pushd $tmp_dir - wget https://github.com/google/googletest/archive/${GOOGLETEST_VERSION_PATH}.tar.gz - tar -xf ${GOOGLETEST_VERSION_PATH}.tar.gz - cd ${GOOGLETEST_FOLDER_PATH}/ - mkdir build && cd build - cmake .. -DBUILD_SHARED_LIBS=ON -DINSTALL_GTEST=ON -DCMAKE_INSTALL_PREFIX:PATH=/usr - make -j $(nproc) - make install - ldconfig - popd +googletest_install() +{ + # Follows these instructions + # https://gist.github.com/dlime/313f74fd23e4267c4a915086b84c7d3d + tmp_dir=$(mktemp -d) + pushd $tmp_dir + wget https://github.com/google/googletest/archive/${GOOGLETEST_VERSION_PATH}.tar.gz + tar -xf ${GOOGLETEST_VERSION_PATH}.tar.gz + cd ${GOOGLETEST_FOLDER_PATH}/ + mkdir build && cd build + cmake .. -DBUILD_SHARED_LIBS=ON -DINSTALL_GTEST=ON -DCMAKE_INSTALL_PREFIX:PATH=/usr + make -j $(nproc) + make install + ldconfig + popd } cmake_install set +e -echo \ - libbenchmark-dev \ - zlib1g-dev \ - sudo \ - libcurl4-openssl-dev \ - nlohmann-json-dev \ - nlohmann-json3 \ - nlohmann-json3-dev | xargs -n 1 apt-get install --ignore-missing --no-install-recommends --no-install-suggests -y +echo \ + libbenchmark-dev \ + zlib1g-dev \ + sudo \ + libcurl4-openssl-dev \ + nlohmann-json-dev \ + nlohmann-json3 \ + nlohmann-json3-dev | xargs -n 1 apt-get install --ignore-missing --no-install-recommends --no-install-suggests -y set -e googletest_install From 83ee1cf71cbd1f6194520474c970ad7ea775b813 Mon Sep 17 00:00:00 2001 From: Cengizhan Pasaoglu Date: Mon, 10 Jul 2023 15:25:32 +0200 Subject: [PATCH 4/5] Use regex instead of version compare for GoogleTest --- ci/setup_cmake.sh | 45 +++------------------------------------------ 1 file changed, 3 insertions(+), 42 deletions(-) diff --git a/ci/setup_cmake.sh b/ci/setup_cmake.sh index 97abbb4ec5..e92c8baf43 100755 --- a/ci/setup_cmake.sh +++ b/ci/setup_cmake.sh @@ -8,45 +8,6 @@ set -e export DEBIAN_FRONTEND=noninteractive apt-get update -VERSION_COMPARE_SIGN="" -GOOGLETEST_LATEST_VERSION=1.13.0 - -function version_compare() -{ - if [[ $1 == $2 ]] - then - VERSION_COMPARE_SIGN="=" - return - fi - local IFS=. - local i left=($1) right=($2) - # fill empty fields in left with zeros - for ((i=${#left[@]}; i<${#right[@]}; i++)) - do - left[i]=0 - done - for ((i=0; i<${#left[@]}; i++)) - do - if [[ -z ${right[i]} ]] - then - # fill empty fields in right with zeros - right[i]=0 - fi - if ((10#${left[i]} > 10#${right[i]})) - then - VERSION_COMPARE_SIGN=">" - return - fi - if ((10#${left[i]} < 10#${right[i]})) - then - VERSION_COMPARE_SIGN="<" - return - fi - done - - VERSION_COMPARE_SIGN="=" -} - if [ "x$CMAKE_VERSION" = "x" ]; then # By default, CMake version set the following version. export CMAKE_VERSION=3.15.2 @@ -57,14 +18,14 @@ fi # Also with this version, release version path needs to be adapted. if [ -z "${GOOGLETEST_VERSION}" ]; then # By default, GoogleTest version set the following version. - export GOOGLETEST_VERSION=${GOOGLETEST_LATEST_VERSION} + export GOOGLETEST_VERSION=1.13.0 fi -version_compare ${GOOGLETEST_VERSION} ${GOOGLETEST_LATEST_VERSION} +OLD_GOOGLETEST_VERSION_REGEXP="^1\.([0-9]|10|11|12)(\..*)?$" # If GoogleTest version less than ${GOOGLETEST_LATEST_VERSION} # Else otherwise -if [ "${VERSION_COMPARE_SIGN}" == "<" ]; then +if [[ "${GOOGLETEST_VERSION}" =~ "${OLD_GOOGLETEST_VERSION_REGEXP}" ]]; then GOOGLETEST_VERSION_PATH="release-${GOOGLETEST_VERSION}" GOOGLETEST_FOLDER_PATH="googletest-release-${GOOGLETEST_VERSION}" else From a3fa3c9a3ca8134101d4187b21e88f80a1e1d794 Mon Sep 17 00:00:00 2001 From: Cengizhan Pasaoglu Date: Mon, 10 Jul 2023 20:06:47 +0200 Subject: [PATCH 5/5] Remove double quotes for different GoogleTest version comparison --- ci/setup_cmake.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/setup_cmake.sh b/ci/setup_cmake.sh index e92c8baf43..9684aa1d55 100755 --- a/ci/setup_cmake.sh +++ b/ci/setup_cmake.sh @@ -25,7 +25,7 @@ OLD_GOOGLETEST_VERSION_REGEXP="^1\.([0-9]|10|11|12)(\..*)?$" # If GoogleTest version less than ${GOOGLETEST_LATEST_VERSION} # Else otherwise -if [[ "${GOOGLETEST_VERSION}" =~ "${OLD_GOOGLETEST_VERSION_REGEXP}" ]]; then +if [[ ${GOOGLETEST_VERSION} =~ ${OLD_GOOGLETEST_VERSION_REGEXP} ]]; then GOOGLETEST_VERSION_PATH="release-${GOOGLETEST_VERSION}" GOOGLETEST_FOLDER_PATH="googletest-release-${GOOGLETEST_VERSION}" else