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

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


The following commit(s) were added to refs/heads/main by this push:
     new aaeff72dd9 GH-43228: [C++] Fix Abseil compile error on GCC 13 (#43157)
aaeff72dd9 is described below

commit aaeff72dd9cb4658913fde3d176416be9a93ebe0
Author: Alessandro Molina <[email protected]>
AuthorDate: Sat Jul 27 00:09:40 2024 +0200

    GH-43228: [C++] Fix Abseil compile error on GCC 13 (#43157)
    
    ### Rationale for this change
    
    When trying to compile Arrow with GCC 13, it fails due to ABSEIL missing a 
`<cstdint>` include, this PR addresses the issue by adding the missing include.
    
    There have been past reports for this issue too: 
https://github.com/apache/arrow/issues/36969
    
    This is a more minimal fix that tries to avoid the complexity of previous 
attempts like  https://github.com/apache/arrow/pull/43147 and 
https://github.com/apache/arrow/pull/37066 which involved updating Abseil and 
facing additional issues to fix.
    
    ### What changes are included in this PR?
    
    Add the missing include when GCC>=13
    
    ### Are these changes tested?
    
    They are tested by the existing compile infrastructure and testsuite and by 
adding a new GCC-13 based CPP test environment for bundled builds.
    
    ### Are there any user-facing changes?
    
    No, all behaviours should remain the same
    * GitHub Issue: #43228
    
    Lead-authored-by: Alessandro Molina <[email protected]>
    Co-authored-by: Sutou Kouhei <[email protected]>
    Signed-off-by: Jacob Wujciak-Jens <[email protected]>
---
 ci/docker/ubuntu-24.04-cpp-minimal.dockerfile | 104 ++++++++++++++++++++++++++
 cpp/cmake_modules/ThirdpartyToolchain.cmake   |   4 +
 dev/tasks/tasks.yml                           |   9 +++
 r/configure                                   |  14 ----
 4 files changed, 117 insertions(+), 14 deletions(-)

diff --git a/ci/docker/ubuntu-24.04-cpp-minimal.dockerfile 
b/ci/docker/ubuntu-24.04-cpp-minimal.dockerfile
new file mode 100644
index 0000000000..a995ab2a8b
--- /dev/null
+++ b/ci/docker/ubuntu-24.04-cpp-minimal.dockerfile
@@ -0,0 +1,104 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+ARG base=amd64/ubuntu:24.04
+FROM ${base}
+
+SHELL ["/bin/bash", "-o", "pipefail", "-c"]
+
+RUN echo "debconf debconf/frontend select Noninteractive" | \
+        debconf-set-selections
+
+RUN apt-get update -y -q && \
+    apt-get install -y -q \
+        build-essential \
+        ccache \
+        cmake \
+        curl \
+        git \
+        libssl-dev \
+        libcurl4-openssl-dev \
+        python3-pip \
+        tzdata \
+        tzdata-legacy \
+        wget && \
+    apt-get clean && \
+    rm -rf /var/lib/apt/lists*
+
+# Installs LLVM toolchain, for Gandiva and testing other compilers
+#
+# Note that this is installed before the base packages to improve iteration
+# while debugging package list with docker build.
+ARG llvm
+RUN latest_system_llvm=14 && \
+    if [ ${llvm} -gt ${latest_system_llvm} ]; then \
+      apt-get update -y -q && \
+      apt-get install -y -q --no-install-recommends \
+          apt-transport-https \
+          ca-certificates \
+          gnupg \
+          lsb-release \
+          wget && \
+      wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - && \
+      code_name=$(lsb_release --codename --short) && \
+      if [ ${llvm} -gt 10 ]; then \
+        echo "deb https://apt.llvm.org/${code_name}/ 
llvm-toolchain-${code_name}-${llvm} main" > \
+           /etc/apt/sources.list.d/llvm.list; \
+      fi; \
+    fi && \
+    apt-get update -y -q && \
+    apt-get install -y -q --no-install-recommends \
+        clang-${llvm} \
+        llvm-${llvm}-dev && \
+    apt-get clean && \
+    rm -rf /var/lib/apt/lists*
+
+COPY ci/scripts/install_minio.sh /arrow/ci/scripts/
+RUN /arrow/ci/scripts/install_minio.sh latest /usr/local
+
+COPY ci/scripts/install_gcs_testbench.sh /arrow/ci/scripts/
+RUN /arrow/ci/scripts/install_gcs_testbench.sh default
+
+COPY ci/scripts/install_sccache.sh /arrow/ci/scripts/
+RUN /arrow/ci/scripts/install_sccache.sh unknown-linux-musl /usr/local/bin
+
+ENV ARROW_ACERO=ON \
+    ARROW_AZURE=OFF \
+    ARROW_BUILD_TESTS=ON \
+    ARROW_DATASET=ON \
+    ARROW_FLIGHT=ON \
+    ARROW_GANDIVA=ON \
+    ARROW_GCS=ON \
+    ARROW_HDFS=ON \
+    ARROW_HOME=/usr/local \
+    ARROW_INSTALL_NAME_RPATH=OFF \
+    ARROW_ORC=ON \
+    ARROW_PARQUET=ON \
+    ARROW_S3=ON \
+    ARROW_USE_CCACHE=ON \
+    ARROW_WITH_BROTLI=ON \
+    ARROW_WITH_BZ2=ON \
+    ARROW_WITH_LZ4=ON \
+    ARROW_WITH_OPENTELEMETRY=OFF \
+    ARROW_WITH_SNAPPY=ON \
+    ARROW_WITH_ZLIB=ON \
+    ARROW_WITH_ZSTD=ON \
+    CMAKE_GENERATOR="Unix Makefiles" \
+    PARQUET_BUILD_EXAMPLES=ON \
+    PARQUET_BUILD_EXECUTABLES=ON \
+    PATH=/usr/lib/ccache/:$PATH \
+    PYTHON=python3
diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake 
b/cpp/cmake_modules/ThirdpartyToolchain.cmake
index 5b89a831ff..1c8c40d6f9 100644
--- a/cpp/cmake_modules/ThirdpartyToolchain.cmake
+++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake
@@ -2882,6 +2882,10 @@ macro(build_absl)
   set(ABSL_INCLUDE_DIR "${ABSL_PREFIX}/include")
   set(ABSL_CMAKE_ARGS "${EP_COMMON_CMAKE_ARGS}" -DABSL_RUN_TESTS=OFF
                       "-DCMAKE_INSTALL_PREFIX=${ABSL_PREFIX}")
+  if(CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION 
VERSION_GREATER_EQUAL 13.0)
+    set(ABSL_CXX_FLAGS "${EP_CXX_FLAGS} -include stdint.h")
+    list(APPEND ABSL_CMAKE_ARGS "-DCMAKE_CXX_FLAGS=${ABSL_CXX_FLAGS}")
+  endif()
   set(ABSL_BUILD_BYPRODUCTS)
   set(ABSL_LIBRARIES)
 
diff --git a/dev/tasks/tasks.yml b/dev/tasks/tasks.yml
index fe6d7fa22d..5c8a7c4990 100644
--- a/dev/tasks/tasks.yml
+++ b/dev/tasks/tasks.yml
@@ -1060,6 +1060,15 @@ tasks:
         UBUNTU: 20.04
       image: ubuntu-cpp-bundled
 
+  test-ubuntu-24.04-cpp-gcc-13-bundled:
+    ci: github
+    template: docker-tests/github.linux.yml
+    params:
+      env:
+        UBUNTU: 24.04
+        GCC_VERSION: 13
+      image: ubuntu-cpp-bundled
+
   test-ubuntu-24.04-cpp:
     ci: github
     template: docker-tests/github.linux.yml
diff --git a/r/configure b/r/configure
index 0882ee6719..e1f0bad378 100755
--- a/r/configure
+++ b/r/configure
@@ -95,20 +95,6 @@ if [ ! "`${R_HOME}/bin/R CMD config CXX17`" ]; then
   exit 1
 fi
 
-# GH-36969: The version of Abseil used in the bundled build won't build on
-# gcc-13. As a workaround for the 13.0.0 release, explicitly set
-# ARROW_WITH_GOOGLE_CLOUD_CPP to OFF (if not already set)
-if [ -z "$ARROW_GCS" ]; then
-  CXX17=`${R_HOME}/bin/R CMD config CXX17`
-  CXX17_VERSION=`$CXX17 --version`
-  if echo "$CXX17_VERSION" | grep -e "g++" > /dev/null ; then
-    if echo "$CXX17_VERSION" | grep -e "13.[0-9]\+.[0-9]\+" > /dev/null ; then
-      echo "*** Disabling Arrow build with GCS on gcc-13."
-      echo "*** Set ARROW_GCS=ON to explicitly enable."
-      export ARROW_GCS="OFF"
-    fi
-  fi
-fi
 
 # Test if pkg-config is available to use
 if ${PKG_CONFIG} --version >/dev/null 2>&1; then

Reply via email to