From b36a25b718985f36676d9288899bee35bde8f976 Mon Sep 17 00:00:00 2001 From: soladdev Date: Sat, 2 May 2026 04:52:39 +1000 Subject: [PATCH] fix: update linux/macos presubmit script --- ci/linux-presubmit.sh | 75 ++++++++++++++++++++----------------------- ci/macos-presubmit.sh | 36 ++++++++++----------- 2 files changed, 52 insertions(+), 59 deletions(-) diff --git a/ci/linux-presubmit.sh b/ci/linux-presubmit.sh index c598c573a..75e4ac5b7 100644 --- a/ci/linux-presubmit.sh +++ b/ci/linux-presubmit.sh @@ -49,49 +49,42 @@ if [[ -z ${STD:-} ]]; then STD="c++17 c++20 c++23" fi -# Test CMake + GCC -for cmake_off_on in OFF ON; do - time docker run \ - --volume="${GTEST_ROOT}:/src:ro" \ - --tmpfs="/build:exec" \ - --workdir="/build" \ - --rm \ - --env="CC=/usr/local/bin/gcc" \ - --env=CXXFLAGS="-Werror -Wdeprecated" \ - ${LINUX_LATEST_CONTAINER} \ - /bin/bash -c " - cmake /src \ - -DCMAKE_CXX_STANDARD=17 \ - -Dgtest_build_samples=ON \ - -Dgtest_build_tests=ON \ - -Dgmock_build_tests=ON \ - -Dcxx_no_exception=${cmake_off_on} \ - -Dcxx_no_rtti=${cmake_off_on} && \ - make -j$(nproc) && \ - ctest -j$(nproc) --output-on-failure" -done +# Test CMake + GCC (~internal_utils.cmake computes cxx_no_* flag strings from the +# compiler; passing -Dcxx_no_*=OFF/ON does not toggle configs.) +time docker run \ + --volume="${GTEST_ROOT}:/src:ro" \ + --tmpfs="/build:exec" \ + --workdir="/build" \ + --rm \ + --env="CC=/usr/local/bin/gcc" \ + --env=CXXFLAGS="-Werror -Wdeprecated" \ + ${LINUX_LATEST_CONTAINER} \ + /bin/bash -c " + cmake /src \ + -DCMAKE_CXX_STANDARD=17 \ + -Dgtest_build_samples=ON \ + -Dgtest_build_tests=ON \ + -Dgmock_build_tests=ON && \ + make -j\$(nproc) && \ + ctest -j\$(nproc) --output-on-failure" # Test CMake + Clang -for cmake_off_on in OFF ON; do - time docker run \ - --volume="${GTEST_ROOT}:/src:ro" \ - --tmpfs="/build:exec" \ - --workdir="/build" \ - --rm \ - --env="CC=/opt/llvm/bin/clang" \ - --env=CXXFLAGS="-Werror -Wdeprecated --gcc-toolchain=/usr/local" \ - ${LINUX_LATEST_CONTAINER} \ - /bin/bash -c " - cmake /src \ - -DCMAKE_CXX_STANDARD=17 \ - -Dgtest_build_samples=ON \ - -Dgtest_build_tests=ON \ - -Dgmock_build_tests=ON \ - -Dcxx_no_exception=${cmake_off_on} \ - -Dcxx_no_rtti=${cmake_off_on} && \ - make -j$(nproc) && \ - ctest -j$(nproc) --output-on-failure" -done +time docker run \ + --volume="${GTEST_ROOT}:/src:ro" \ + --tmpfs="/build:exec" \ + --workdir="/build" \ + --rm \ + --env="CC=/opt/llvm/bin/clang" \ + --env=CXXFLAGS="-Werror -Wdeprecated --gcc-toolchain=/usr/local" \ + ${LINUX_LATEST_CONTAINER} \ + /bin/bash -c " + cmake /src \ + -DCMAKE_CXX_STANDARD=17 \ + -Dgtest_build_samples=ON \ + -Dgtest_build_tests=ON \ + -Dgmock_build_tests=ON && \ + make -j\$(nproc) && \ + ctest -j\$(nproc) --output-on-failure" # Do one test with an older version of GCC time docker run \ diff --git a/ci/macos-presubmit.sh b/ci/macos-presubmit.sh index f330f4f8e..840d38f07 100644 --- a/ci/macos-presubmit.sh +++ b/ci/macos-presubmit.sh @@ -36,27 +36,27 @@ sudo xcode-select -s /Applications/Xcode_26.2.app/Contents/Developer brew install cmake -export CMAKE_BUILD_PARALLEL_LEVEL=$(sysctl -n hw.ncpu) -export CTEST_PARALLEL_LEVEL=$(sysctl -n hw.ncpu) +# macOS does not provide nproc(1); use hw.ncpu like parallel CMake/CTest levels. +NCPU="$(sysctl -n hw.ncpu)" +export CMAKE_BUILD_PARALLEL_LEVEL="${NCPU}" +export CTEST_PARALLEL_LEVEL="${NCPU}" if [[ -z ${GTEST_ROOT:-} ]]; then - GTEST_ROOT="$(realpath $(dirname ${0})/..)" + GTEST_ROOT="$(realpath "$(dirname "${0}")/..")" fi -# Test the CMake build -for cmake_off_on in OFF ON; do - BUILD_DIR=$(mktemp -d build_dir.XXXXXXXX) - cd ${BUILD_DIR} - time cmake ${GTEST_ROOT} \ - -DCMAKE_CXX_STANDARD=17 \ - -Dgtest_build_samples=ON \ - -Dgtest_build_tests=ON \ - -Dgmock_build_tests=ON \ - -Dcxx_no_exception=${cmake_off_on} \ - -Dcxx_no_rtti=${cmake_off_on} - time make -j$(nproc) - time ctest -j$(nproc) --output-on-failure -done +# Test the CMake build. cxx_no_exception / cxx_no_rtti are full flag strings set +# in googletest/cmake/internal_utils.cmake; passing -Dcxx_no_*=OFF/ON does not +# toggle builds and was misleading, so we use a single configure here. +BUILD_DIR="$(mktemp -d "${TMPDIR:-/tmp}/gtest_cmake_build.XXXXXXXX")" +cd "${BUILD_DIR}" +time cmake "${GTEST_ROOT}" \ + -DCMAKE_CXX_STANDARD=17 \ + -Dgtest_build_samples=ON \ + -Dgtest_build_tests=ON \ + -Dgmock_build_tests=ON +time make -j"${NCPU}" +time ctest -j"${NCPU}" --output-on-failure # Test the Bazel build @@ -75,7 +75,7 @@ if [[ ${KOKORO_GFILE_DIR:-} ]] && [[ -f "${KOKORO_GFILE_DIR}/distdir/googletest_ BAZEL_EXTRA_ARGS="--vendor_dir=${HOME}/googletest_vendor ${BAZEL_EXTRA_ARGS:-}" fi -cd ${GTEST_ROOT} +cd "${GTEST_ROOT}" for absl in 0 1; do ${BAZEL_BIN} test ... \ --copt="-Wall" \