From 7050107c73453e21cb8d8d0162e42adb644b503f Mon Sep 17 00:00:00 2001 From: Mike Kruskal Date: Fri, 5 May 2023 10:24:29 -0700 Subject: [PATCH] Avoid using string(JOIN..., which requires cmake 3.12 This also downgrades our tests to use cmake 3.10, compatible with our support window. Closes #12672 PiperOrigin-RevId: 529751568 --- .github/workflows/test_cpp.yml | 20 ++++++++++++-------- cmake/install.cmake | 8 ++++++-- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/.github/workflows/test_cpp.yml b/.github/workflows/test_cpp.yml index 70f3a75a91dd..d7186893d8a4 100644 --- a/.github/workflows/test_cpp.yml +++ b/.github/workflows/test_cpp.yml @@ -116,10 +116,11 @@ jobs: - name: Run tests uses: protocolbuffers/protobuf-ci/docker@v1 with: - image: us-docker.pkg.dev/protobuf-build/containers/test/linux/cmake@sha256:7058879cac0224e443043eae2de82c13a63a54dd31855dac020c5522aa573cd2 + image: us-docker.pkg.dev/protobuf-build/containers/test/linux/cmake:3.10.3-1da1e086a7d1863b8bdd181ef6388a02dcd62f3a credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }} command: >- /test.sh ${{ matrix.flags}} ${{ env.CCACHE_CMAKE_FLAGS }} + -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_CXX_STANDARD=14 -Dprotobuf_BUILD_TESTS=ON -Dprotobuf_USE_EXTERNAL_GTEST=ON -Dprotobuf_ABSL_PROVIDER=package @@ -142,12 +143,13 @@ jobs: - name: Run tests uses: protocolbuffers/protobuf-ci/docker@v1 with: - image: us-docker.pkg.dev/protobuf-build/containers/test/linux/cmake@sha256:7058879cac0224e443043eae2de82c13a63a54dd31855dac020c5522aa573cd2 + image: us-docker.pkg.dev/protobuf-build/containers/test/linux/cmake:3.10.3-1da1e086a7d1863b8bdd181ef6388a02dcd62f3a credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }} command: >- /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 }} + -DCMAKE_VERBOSE_MAKEFILE=ON -Dprotobuf_REMOVE_INSTALLED_HEADERS=ON -Dprotobuf_BUILD_PROTOBUF_BINARIES=OFF -Dprotobuf_BUILD_CONFORMANCE=ON @@ -171,16 +173,17 @@ jobs: - name: Run tests uses: protocolbuffers/protobuf-ci/docker@v1 with: - image: us-docker.pkg.dev/protobuf-build/containers/test/linux/cmake@sha256:7058879cac0224e443043eae2de82c13a63a54dd31855dac020c5522aa573cd2 + image: us-docker.pkg.dev/protobuf-build/containers/test/linux/cmake:3.10.3-1da1e086a7d1863b8bdd181ef6388a02dcd62f3a credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }} command: >- /install.sh -DCMAKE_CXX_STANDARD=14 ${{ env.CCACHE_CMAKE_FLAGS }} + -DCMAKE_VERBOSE_MAKEFILE=ON -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 + mkdir examples/build \&\& + cd examples/build \&\& + cmake .. -DCMAKE_CXX_STANDARD=14 \&\& + cmake --build . linux-cmake-submodules: name: Linux CMake Submodules @@ -200,10 +203,11 @@ 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:3.13.3-1da1e086a7d1863b8bdd181ef6388a02dcd62f3a credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }} command: >- /test.sh ${{ env.CCACHE_CMAKE_FLAGS }} + -DCMAKE_VERBOSE_MAKEFILE=ON -Dprotobuf_BUILD_CONFORMANCE=ON -Dprotobuf_BUILD_EXAMPLES=ON -DCMAKE_CXX_STANDARD=14 linux-cmake-32-bit: diff --git a/cmake/install.cmake b/cmake/install.cmake index af891ca0c3d1..9d837ac536c9 100644 --- a/cmake/install.cmake +++ b/cmake/install.cmake @@ -6,8 +6,12 @@ foreach(_target IN LISTS protobuf_ABSL_USED_TARGETS) endforeach() list(APPEND _pc_targets "utf8_range") -string(JOIN " " _pc_target_list ${_pc_targets}) -set(_protobuf_PC_REQUIRES ${_pc_target_list}) +set(_protobuf_PC_REQUIRES "") +set(_sep "") +foreach (_target IN LISTS _pc_target_list) + string(CONCAT _protobuf_PC_REQUIRES "${_protobuf_PC_REQUIRES}" "${_sep}" "${_target}") + set(_sep " ") +endforeach () configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/protobuf.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/protobuf.pc @ONLY)