You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by ko...@apache.org on 2022/11/15 08:51:11 UTC
[arrow] 15/27: ARROW-18080: [C++] Remove gcc <= 4.9 workarounds (#14441)
This is an automated email from the ASF dual-hosted git repository.
kou pushed a commit to branch maint-10.0.x
in repository https://gitbox.apache.org/repos/asf/arrow.git
commit b7b92fa88ea54123b4fd804835556c7763b3ea40
Author: Neal Richardson <ne...@gmail.com>
AuthorDate: Tue Oct 18 20:54:46 2022 -0400
ARROW-18080: [C++] Remove gcc <= 4.9 workarounds (#14441)
This is most of them I could find. There's another one in `python/pyarrow/src/arrow/python/datetime.cc` to remove but it's more involved.
Authored-by: Neal Richardson <ne...@gmail.com>
Signed-off-by: Sutou Kouhei <ko...@clear-code.com>
---
cpp/cmake_modules/SetupCxxFlags.cmake | 39 +++++++++--------------------
cpp/cmake_modules/ThirdpartyToolchain.cmake | 19 +++-----------
cpp/src/arrow/dataset/file_parquet.cc | 9 -------
cpp/thirdparty/versions.txt | 3 ---
4 files changed, 15 insertions(+), 55 deletions(-)
diff --git a/cpp/cmake_modules/SetupCxxFlags.cmake b/cpp/cmake_modules/SetupCxxFlags.cmake
index 51ef979a02..0bd5c3090e 100644
--- a/cpp/cmake_modules/SetupCxxFlags.cmake
+++ b/cpp/cmake_modules/SetupCxxFlags.cmake
@@ -400,22 +400,13 @@ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set(CXX_ONLY_FLAGS "${CXX_ONLY_FLAGS} -Wno-noexcept-type")
endif()
- if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "5.2")
- # Disabling semantic interposition allows faster calling conventions
- # when calling global functions internally, and can also help inlining.
- # See https://stackoverflow.com/questions/35745543/new-option-in-gcc-5-3-fno-semantic-interposition
- set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -fno-semantic-interposition")
- endif()
-
- if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "4.9")
- # Add colors when paired with ninja
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdiagnostics-color=always")
- endif()
+ # Disabling semantic interposition allows faster calling conventions
+ # when calling global functions internally, and can also help inlining.
+ # See https://stackoverflow.com/questions/35745543/new-option-in-gcc-5-3-fno-semantic-interposition
+ set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -fno-semantic-interposition")
- if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "6.0")
- # Work around https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43407
- set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-attributes")
- endif()
+ # Add colors when paired with ninja
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdiagnostics-color=always")
if(CMAKE_UNITY_BUILD)
# Work around issue similar to https://bugs.webkit.org/show_bug.cgi?id=176869
@@ -507,18 +498,12 @@ if(ARROW_CPU_FLAG STREQUAL "armv8")
add_definitions(-DARROW_HAVE_NEON)
- if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS
- "5.4")
- message(WARNING "Disable Armv8 CRC and Crypto as compiler doesn't support them well."
- )
- else()
- if(ARROW_ARMV8_ARCH_FLAG MATCHES "\\+crypto")
- add_definitions(-DARROW_HAVE_ARMV8_CRYPTO)
- endif()
- # armv8.1+ implies crc support
- if(ARROW_ARMV8_ARCH_FLAG MATCHES "armv8\\.[1-9]|\\+crc")
- add_definitions(-DARROW_HAVE_ARMV8_CRC)
- endif()
+ if(ARROW_ARMV8_ARCH_FLAG MATCHES "\\+crypto")
+ add_definitions(-DARROW_HAVE_ARMV8_CRYPTO)
+ endif()
+ # armv8.1+ implies crc support
+ if(ARROW_ARMV8_ARCH_FLAG MATCHES "armv8\\.[1-9]|\\+crc")
+ add_definitions(-DARROW_HAVE_ARMV8_CRC)
endif()
elseif(NOT ARROW_SIMD_LEVEL STREQUAL "NONE")
message(WARNING "ARROW_SIMD_LEVEL=${ARROW_SIMD_LEVEL} not supported by Arm.")
diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake b/cpp/cmake_modules/ThirdpartyToolchain.cmake
index b1c3201894..b44521e0c1 100644
--- a/cpp/cmake_modules/ThirdpartyToolchain.cmake
+++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake
@@ -652,18 +652,9 @@ endif()
if(DEFINED ENV{ARROW_SNAPPY_URL})
set(SNAPPY_SOURCE_URL "$ENV{ARROW_SNAPPY_URL}")
else()
- if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS
- "4.9")
- # There is a bug in GCC < 4.9 with Snappy 1.1.9, so revert to 1.1.8 "SNAPPY_OLD" for those (ARROW-14661)
- set_urls(SNAPPY_SOURCE_URL
- "https://github.com/google/snappy/archive/${ARROW_SNAPPY_OLD_BUILD_VERSION}.tar.gz"
- "${THIRDPARTY_MIRROR_URL}/snappy-${ARROW_SNAPPY_OLD_BUILD_VERSION}.tar.gz")
- set(ARROW_SNAPPY_BUILD_SHA256_CHECKSUM ${ARROW_SNAPPY_OLD_BUILD_SHA256_CHECKSUM})
- else()
- set_urls(SNAPPY_SOURCE_URL
- "https://github.com/google/snappy/archive/${ARROW_SNAPPY_BUILD_VERSION}.tar.gz"
- "${THIRDPARTY_MIRROR_URL}/snappy-${ARROW_SNAPPY_BUILD_VERSION}.tar.gz")
- endif()
+ set_urls(SNAPPY_SOURCE_URL
+ "https://github.com/google/snappy/archive/${ARROW_SNAPPY_BUILD_VERSION}.tar.gz"
+ "${THIRDPARTY_MIRROR_URL}/snappy-${ARROW_SNAPPY_BUILD_VERSION}.tar.gz")
endif()
if(DEFINED ENV{ARROW_SUBSTRAIT_URL})
@@ -4584,10 +4575,6 @@ endif()
macro(build_awssdk)
message(STATUS "Building AWS C++ SDK from source")
- if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS
- "4.9")
- message(FATAL_ERROR "AWS C++ SDK requires gcc >= 4.9")
- endif()
set(AWSSDK_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/awssdk_ep-install")
set(AWSSDK_INCLUDE_DIR "${AWSSDK_PREFIX}/include")
set(AWSSDK_LIB_DIR "lib")
diff --git a/cpp/src/arrow/dataset/file_parquet.cc b/cpp/src/arrow/dataset/file_parquet.cc
index f07254e111..da9748de96 100644
--- a/cpp/src/arrow/dataset/file_parquet.cc
+++ b/cpp/src/arrow/dataset/file_parquet.cc
@@ -742,16 +742,7 @@ Result<std::optional<int64_t>> ParquetFileFragment::TryCountRows(
compute::Expression predicate) {
DCHECK_NE(metadata_, nullptr);
if (ExpressionHasFieldRefs(predicate)) {
-#if defined(__GNUC__) && (__GNUC__ < 5)
- // ARROW-12694: with GCC 4.9 (RTools 35) we sometimes segfault here if we move(result)
- auto result = TestRowGroups(std::move(predicate));
- if (!result.ok()) {
- return result.status();
- }
- auto expressions = result.ValueUnsafe();
-#else
ARROW_ASSIGN_OR_RAISE(auto expressions, TestRowGroups(std::move(predicate)));
-#endif
int64_t rows = 0;
for (size_t i = 0; i < row_groups_->size(); i++) {
// If the row group is entirely excluded, exclude it from the row count
diff --git a/cpp/thirdparty/versions.txt b/cpp/thirdparty/versions.txt
index 767cb2c860..0cc496e938 100644
--- a/cpp/thirdparty/versions.txt
+++ b/cpp/thirdparty/versions.txt
@@ -81,9 +81,6 @@ ARROW_RE2_BUILD_SHA256_CHECKSUM=f89c61410a072e5cbcf8c27e3a778da7d6fd2f2b5b1445cd
# 1.1.9 is patched to implement https://github.com/google/snappy/pull/148 if this is bumped, remove the patch
ARROW_SNAPPY_BUILD_VERSION=1.1.9
ARROW_SNAPPY_BUILD_SHA256_CHECKSUM=75c1fbb3d618dd3a0483bff0e26d0a92b495bbe5059c8b4f1c962b478b6e06e7
-# There is a bug in GCC < 4.9 with Snappy 1.1.9, so revert to 1.1.8 for those (ARROW-14661)
-ARROW_SNAPPY_OLD_BUILD_VERSION=1.1.8
-ARROW_SNAPPY_OLD_BUILD_SHA256_CHECKSUM=16b677f07832a612b0836178db7f374e414f94657c138e6993cbfc5dcc58651f
ARROW_SUBSTRAIT_BUILD_VERSION=v0.6.0
ARROW_SUBSTRAIT_BUILD_SHA256_CHECKSUM=7b8583b9684477e9027f417bbfb4febb8acfeb01923dcaa7cf0fd3f921d69c88
ARROW_THRIFT_BUILD_VERSION=0.16.0