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
}