From ee85d78971a71d5fdfa545421255e28367d8d002 Mon Sep 17 00:00:00 2001 From: Mike Kruskal Date: Wed, 3 May 2023 15:38:33 -0700 Subject: [PATCH] Define a new set of cmake tests. These more closely follow the standard practices of our users, where dependencies are pre-installed instead of using our provided sub-modules. This will prevent issues such as #12201 from reoccuring. Additionally, this cl bumps our Abseil dependency to the latest release, and fixes a GTest issue that went previously unnoticed. PiperOrigin-RevId: 529211944 --- .github/workflows/test_cpp.yml | 117 +++++++++++++++++---------------- cmake/gtest.cmake | 2 +- protobuf_deps.bzl | 4 +- 3 files changed, 63 insertions(+), 60 deletions(-) diff --git a/.github/workflows/test_cpp.yml b/.github/workflows/test_cpp.yml index 1b4a18c9526f..70f3a75a91dd 100644 --- a/.github/workflows/test_cpp.yml +++ b/.github/workflows/test_cpp.yml @@ -94,23 +94,11 @@ jobs: fail-fast: false # Don't cancel all jobs if one fails. matrix: include: - - command: >- - /test.sh - -Dprotobuf_BUILD_CONFORMANCE=ON - -Dprotobuf_BUILD_EXAMPLES=ON - -DCMAKE_CXX_STANDARD=14 + - flags: -Dprotobuf_BUILD_EXAMPLES=ON - name: Ninja - command: >- - /test.sh - -G Ninja - -Dprotobuf_BUILD_CONFORMANCE=ON - -DCMAKE_CXX_STANDARD=14 + flags: -G Ninja - name: Shared - command: >- - /test.sh - -Dprotobuf_BUILD_CONFORMANCE=ON - -Dprotobuf_BUILD_SHARED_LIBS=ON - -DCMAKE_CXX_STANDARD=14 + flags: -Dprotobuf_BUILD_SHARED_LIBS=ON -Dprotobuf_BUILD_EXAMPLES=ON name: Linux CMake ${{ matrix.name}} runs-on: ubuntu-latest @@ -120,11 +108,6 @@ jobs: with: ref: ${{ inputs.safe-checkout }} - # Initialize/update the submodule from remote to validate a new fetch based on .gitmodules - # We have to do this separately since actions/checkout doesn't support the "--remote" flag - - name: Update submodules - run: git submodule update --init --recursive - - name: Setup ccache uses: protocolbuffers/protobuf-ci/ccache@v1 with: @@ -133,9 +116,13 @@ jobs: - name: Run tests uses: protocolbuffers/protobuf-ci/docker@v1 with: - image: us-docker.pkg.dev/protobuf-build/containers/test/linux/cmake@sha256:e0eb6c69b7551d89f0dbdbe11906077a1d501229c28db39623b945e0c5d7029a + image: us-docker.pkg.dev/protobuf-build/containers/test/linux/cmake@sha256:7058879cac0224e443043eae2de82c13a63a54dd31855dac020c5522aa573cd2 credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }} - command: ${{ matrix.command }} ${{ env.CCACHE_CMAKE_FLAGS }} + command: >- + /test.sh ${{ matrix.flags}} ${{ env.CCACHE_CMAKE_FLAGS }} + -DCMAKE_CXX_STANDARD=14 -Dprotobuf_BUILD_TESTS=ON + -Dprotobuf_USE_EXTERNAL_GTEST=ON -Dprotobuf_ABSL_PROVIDER=package + linux-cmake-install: name: Linux CMake Install @@ -145,9 +132,7 @@ jobs: uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: ref: ${{ inputs.safe-checkout }} - - - name: Update submodules - run: git submodule update --init --recursive + submodules: recursive - name: Setup ccache uses: protocolbuffers/protobuf-ci/ccache@v1 @@ -157,19 +142,20 @@ jobs: - name: Run tests uses: protocolbuffers/protobuf-ci/docker@v1 with: - image: us-docker.pkg.dev/protobuf-build/containers/test/linux/cmake@sha256:e0eb6c69b7551d89f0dbdbe11906077a1d501229c28db39623b945e0c5d7029a + image: us-docker.pkg.dev/protobuf-build/containers/test/linux/cmake@sha256:7058879cac0224e443043eae2de82c13a63a54dd31855dac020c5522aa573cd2 credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }} command: >- - /install.sh -DCMAKE_CXX_STANDARD=14 ${{ env.CCACHE_CMAKE_FLAGS }} \&\& + /install.sh -DCMAKE_CXX_STANDARD=14 ${{ env.CCACHE_CMAKE_FLAGS }} -Dprotobuf_USE_EXTERNAL_GTEST=ON -Dprotobuf_ABSL_PROVIDER=package \&\& /test.sh ${{ env.CCACHE_CMAKE_FLAGS }} -Dprotobuf_REMOVE_INSTALLED_HEADERS=ON -Dprotobuf_BUILD_PROTOBUF_BINARIES=OFF -Dprotobuf_BUILD_CONFORMANCE=ON -DCMAKE_CXX_STANDARD=14 + -Dprotobuf_USE_EXTERNAL_GTEST=ON -Dprotobuf_ABSL_PROVIDER=package - linux-cmake-32-bit: - name: Linux CMake 32-bit + linux-cmake-examples: + name: Linux CMake Examples runs-on: ubuntu-latest steps: - name: Checkout pending changes @@ -177,31 +163,27 @@ jobs: with: ref: ${{ inputs.safe-checkout }} - - name: Update submodules - run: git submodule update --init --recursive - - name: Setup ccache uses: protocolbuffers/protobuf-ci/ccache@v1 with: - cache-prefix: linux-cmake-32-bit + cache-prefix: linux-cmake-examples - name: Run tests uses: protocolbuffers/protobuf-ci/docker@v1 with: - image: us-docker.pkg.dev/protobuf-build/containers/test/linux/32bit@sha256:f99f051daa8b12f4ebad5927f389bc71372f771ab080290ab451cbaf1648f9ea - platform: linux/386 + image: us-docker.pkg.dev/protobuf-build/containers/test/linux/cmake@sha256:7058879cac0224e443043eae2de82c13a63a54dd31855dac020c5522aa573cd2 credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }} command: >- - /bin/bash -cex ' - cd /workspace; - ccache -z; - cmake . -DCMAKE_CXX_STANDARD=14 ${{ env.CCACHE_CMAKE_FLAGS }}; - cmake --build . --parallel 20; - ctest --verbose --parallel 20; - ccache -s' + /install.sh -DCMAKE_CXX_STANDARD=14 ${{ env.CCACHE_CMAKE_FLAGS }} + -Dprotobuf_USE_EXTERNAL_GTEST=ON -Dprotobuf_ABSL_PROVIDER=package + -Dprotobuf_BUILD_EXAMPLES=OFF \&\& + cd examples \&\& + mkdir build \&\& + cmake -S . -B build -DCMAKE_CXX_STANDARD=14 \&\& + cmake --build build - linux-cmake-examples: - name: Linux CMake Examples + linux-cmake-submodules: + name: Linux CMake Submodules runs-on: ubuntu-latest steps: - name: Checkout pending changes @@ -213,7 +195,7 @@ jobs: - name: Setup ccache uses: protocolbuffers/protobuf-ci/ccache@v1 with: - cache-prefix: linux-cmake-examples + cache-prefix: linux-cmake-${{ matrix.name }} - name: Run tests uses: protocolbuffers/protobuf-ci/docker@v1 @@ -221,15 +203,38 @@ jobs: image: us-docker.pkg.dev/protobuf-build/containers/test/linux/cmake@sha256:e0eb6c69b7551d89f0dbdbe11906077a1d501229c28db39623b945e0c5d7029a credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }} command: >- - /install.sh -DCMAKE_CXX_STANDARD=14 ${{ env.CCACHE_CMAKE_FLAGS }} \&\& - cd examples \&\& - mkdir build \&\& - cmake - ${{ env.CCACHE_CMAKE_FLAGS }} - -Dprotobuf_BUILD_PROTOBUF_BINARIES=OFF - -DCMAKE_CXX_STANDARD=14 - -S . -B build \&\& - cmake --build build + /test.sh ${{ env.CCACHE_CMAKE_FLAGS }} + -Dprotobuf_BUILD_CONFORMANCE=ON -Dprotobuf_BUILD_EXAMPLES=ON -DCMAKE_CXX_STANDARD=14 + + linux-cmake-32-bit: + name: Linux CMake 32-bit + runs-on: ubuntu-latest + steps: + - name: Checkout pending changes + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 + with: + ref: ${{ inputs.safe-checkout }} + submodules: recursive + + - name: Setup ccache + uses: protocolbuffers/protobuf-ci/ccache@v1 + with: + cache-prefix: linux-cmake-32-bit + + - name: Run tests + uses: protocolbuffers/protobuf-ci/docker@v1 + with: + image: us-docker.pkg.dev/protobuf-build/containers/test/linux/32bit@sha256:f99f051daa8b12f4ebad5927f389bc71372f771ab080290ab451cbaf1648f9ea + platform: linux/386 + credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }} + command: >- + /bin/bash -cex ' + cd /workspace; + ccache -z; + cmake . -DCMAKE_CXX_STANDARD=14 ${{ env.CCACHE_CMAKE_FLAGS }}; + cmake --build . --parallel 20; + ctest --verbose --parallel 20; + ccache -s' non-linux: strategy: @@ -307,9 +312,7 @@ jobs: uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: ref: ${{ inputs.safe-checkout }} - - - name: Update submodules - run: git submodule update --init --recursive + submodules: recursive - name: Setup ccache uses: protocolbuffers/protobuf-ci/ccache@v1 diff --git a/cmake/gtest.cmake b/cmake/gtest.cmake index cf516d6d53b8..b891db9fe3c7 100644 --- a/cmake/gtest.cmake +++ b/cmake/gtest.cmake @@ -1,7 +1,7 @@ option(protobuf_USE_EXTERNAL_GTEST "Use external Google Test (i.e. not the one in third_party/googletest)" OFF) if (protobuf_USE_EXTERNAL_GTEST) - find_package(GTest REQUIRED) + find_package(GTest REQUIRED CONFIG) else() if (NOT EXISTS "${protobuf_SOURCE_DIR}/third_party/googletest/CMakeLists.txt") message(FATAL_ERROR diff --git a/protobuf_deps.bzl b/protobuf_deps.bzl index 5d5d29a73aab..a96170e28d6c 100644 --- a/protobuf_deps.bzl +++ b/protobuf_deps.bzl @@ -42,8 +42,8 @@ def protobuf_deps(): _github_archive( name = "com_google_absl", repo = "https://github.com/abseil/abseil-cpp", - commit = "b971ac5250ea8de900eae9f95e06548d14cd95fe", # Abseil LTS 20230125.2 - sha256 = "f7c2cb2c5accdcbbbd5c0c59f241a988c0b1da2a3b7134b823c0bd613b1a6880", + commit = "c2435f8342c2d0ed8101cb43adfd605fdc52dca2", # Abseil LTS 20230125.3 + sha256 = "ea1d31db00eb37e607bfda17ffac09064670ddf05da067944c4766f517876390", ) if not native.existing_rule("zlib"):