This is an automated email from the ASF dual-hosted git repository.

paleolimbot pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-nanoarrow.git


The following commit(s) were added to refs/heads/main by this push:
     new 478ef37  fix: Support centos7/gcc 4.8 for CMake build + test workflow 
(#133)
478ef37 is described below

commit 478ef37191abb178a521905938dc97a06634bf0d
Author: Dewey Dunnington <[email protected]>
AuthorDate: Tue Feb 28 14:35:06 2023 -0400

    fix: Support centos7/gcc 4.8 for CMake build + test workflow (#133)
    
    Closes #132.
---
 CMakeLists.txt                          | 42 ++++++++++++++++++++++++---------
 dev/release/verify-release-candidate.sh | 34 +++++++++++++++++++-------
 2 files changed, 57 insertions(+), 19 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1c569fe..dc91a01 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -16,7 +16,11 @@
 # under the License.
 
 message(STATUS "Building using CMake version: ${CMAKE_VERSION}")
-cmake_minimum_required(VERSION 3.16)
+cmake_minimum_required(VERSION 3.14)
+
+if(NOT DEFINED CMAKE_C_STANDARD)
+  set(CMAKE_C_STANDARD 99)
+endif()
 
 set(NANOARROW_VERSION "0.1.0-SNAPSHOT")
 string(REGEX MATCH "^[0-9]+\\.[0-9]+\\.[0-9]+" NANOARROW_BASE_VERSION 
"${NANOARROW_VERSION}")
@@ -155,10 +159,26 @@ if(NANOARROW_BUILD_TESTS)
     endif()
     set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
-    FetchContent_Declare(
-        googletest
-        URL https://github.com/google/googletest/archive/release-1.11.0.zip
-    )
+    # Avoids a warning about timestamps on downloaded files (prefer new policy
+    # if available))
+    if (${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.23")
+        cmake_policy(SET CMP0135 NEW)
+    endif()
+
+    # Use an old version of googletest if we have to to support gcc 4.8
+    if(NOT CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR
+       CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "5.0.0")
+        FetchContent_Declare(
+            googletest
+            URL https://github.com/google/googletest/archive/release-1.11.0.zip
+        )
+    else()
+        FetchContent_Declare(
+            googletest
+            URL https://github.com/google/googletest/archive/release-1.10.0.zip
+        )
+    endif()
+
     FetchContent_MakeAvailable(googletest)
 
     add_executable(utils_test src/nanoarrow/utils_test.cc)
@@ -184,12 +204,12 @@ if(NANOARROW_BUILD_TESTS)
         set(NANOARROW_ARROW_TARGET arrow_shared)
     endif()
 
-    target_link_libraries(utils_test nanoarrow GTest::gtest_main 
${NANOARROW_ARROW_TARGET})
-    target_link_libraries(buffer_test nanoarrow GTest::gtest_main)
-    target_link_libraries(array_test nanoarrow GTest::gtest_main 
${NANOARROW_ARROW_TARGET})
-    target_link_libraries(schema_test nanoarrow GTest::gtest_main 
${NANOARROW_ARROW_TARGET})
-    target_link_libraries(array_stream_test nanoarrow GTest::gtest_main)
-    target_link_libraries(nanoarrow_hpp_test nanoarrow GTest::gtest_main)
+    target_link_libraries(utils_test nanoarrow gtest_main 
${NANOARROW_ARROW_TARGET})
+    target_link_libraries(buffer_test nanoarrow gtest_main)
+    target_link_libraries(array_test nanoarrow gtest_main 
${NANOARROW_ARROW_TARGET})
+    target_link_libraries(schema_test nanoarrow gtest_main 
${NANOARROW_ARROW_TARGET})
+    target_link_libraries(array_stream_test nanoarrow gtest_main)
+    target_link_libraries(nanoarrow_hpp_test nanoarrow gtest_main)
 
     include(GoogleTest)
     gtest_discover_tests(utils_test)
diff --git a/dev/release/verify-release-candidate.sh 
b/dev/release/verify-release-candidate.sh
index 14be446..8417cc9 100755
--- a/dev/release/verify-release-candidate.sh
+++ b/dev/release/verify-release-candidate.sh
@@ -18,11 +18,13 @@
 # under the License.
 #
 # Requirements
-# - cmake >= 3.16
+# - cmake >= 3.14
 # - R >= 3.5.0
-# - Arrow C++ >= 10.0.0
+# - Arrow C++ >= 9.0.0
 #
 # Environment Variables
+# - CMAKE_BIN: Command to use for cmake (e.g., cmake3 on Centos7)
+# - CTEST_BIN: Command to use for ctest (e.g., ctest3 on Centos7)
 # - NANOARROW_CMAKE_OPTIONS (e.g., to help cmake find Arrow C++)
 # - R_HOME: Path to the desired R installation. Defaults to `R` on PATH.
 # - TEST_SOURCE: Set to 0 to selectively run component verification.
@@ -177,19 +179,27 @@ setup_tempdir() {
 test_c() {
   show_header "Build and test C library"
 
+  if [ -z "${CMAKE_BIN}" ]; then
+    CMAKE_BIN=cmake
+  fi
+
+  if [ -z "${CTEST_BIN}" ]; then
+    CTEST_BIN=ctest
+  fi
+
   mkdir -p $NANOARROW_TMPDIR/build
   pushd $NANOARROW_TMPDIR/build
 
   show_info "Configure CMake Project"
-  cmake ${NANOARROW_SOURCE_DIR} \
+  "$CMAKE_BIN" ${NANOARROW_SOURCE_DIR} \
     -DNANOARROW_BUILD_TESTS=ON \
     ${NANOARROW_CMAKE_OPTIONS:-}
 
   show_info "Build CMake Project"
-  cmake --build .
+  "$CMAKE_BIN" --build .
 
   show_info "Run Tests"
-  ctest --output-on-failure
+  "$CTEST_BIN" --output-on-failure
 
   popd
 }
@@ -197,20 +207,28 @@ test_c() {
 test_c_bundled() {
   show_header "Build test C library"
 
+  if [ -z "${CMAKE_BIN}" ]; then
+    CMAKE_BIN=cmake
+  fi
+
+  if [ -z "${CTEST_BIN}" ]; then
+    CTEST_BIN=ctest
+  fi
+
   mkdir -p $NANOARROW_TMPDIR/build_bundled
   pushd $NANOARROW_TMPDIR/build_bundled
 
   show_info "Configure CMake Project"
-  cmake ${NANOARROW_SOURCE_DIR} \
+  "$CMAKE_BIN" ${NANOARROW_SOURCE_DIR} \
     -DNANOARROW_BUILD_TESTS=ON \
     -DNANOARROW_BUNDLE=ON \
     ${NANOARROW_CMAKE_OPTIONS:-}
 
   show_info "Build CMake Project"
-  cmake --build .
+  "$CMAKE_BIN" --build .
 
   show_info "Run Tests"
-  ctest --output-on-failure
+  "$CTEST_BIN" --output-on-failure
 
   popd
 }

Reply via email to