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

kou 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 471334dbf4 GH-38424: [CI][C++] Use Fedora 38 instead of 35 (#38425)
471334dbf4 is described below

commit 471334dbf4a1282de3afd52faa16eefbca941adb
Author: Sutou Kouhei <[email protected]>
AuthorDate: Fri Oct 27 09:51:00 2023 +0900

    GH-38424: [CI][C++] Use Fedora 38 instead of 35 (#38425)
    
    ### Rationale for this change
    
    Because Fedora 35 reached EOL.
    
    ### What changes are included in this PR?
    
    Use Fedora 38.
    
    ### Are these changes tested?
    
    Yes.
    
    ### Are there any user-facing changes?
    
    No.
    * Closes: #38424
    
    Authored-by: Sutou Kouhei <[email protected]>
    Signed-off-by: Sutou Kouhei <[email protected]>
---
 .env                                               |  2 +-
 ...-35-cpp.dockerfile => fedora-38-cpp.dockerfile} |  9 +++---
 cpp/CMakeLists.txt                                 |  6 ++--
 .../{FindORC.cmake => FindorcAlt.cmake}            | 37 ++++++++++++----------
 cpp/cmake_modules/ThirdpartyToolchain.cmake        | 34 ++++++++++++--------
 cpp/src/arrow/adapters/orc/CMakeLists.txt          |  2 +-
 dev/tasks/tasks.yml                                |  8 ++---
 docker-compose.yml                                 |  6 ++--
 8 files changed, 57 insertions(+), 47 deletions(-)

diff --git a/.env b/.env
index a551e2120a..6746892fd4 100644
--- a/.env
+++ b/.env
@@ -49,7 +49,7 @@ ULIMIT_CORE=-1
 ALMALINUX=8
 ALPINE_LINUX=3.16
 DEBIAN=11
-FEDORA=35
+FEDORA=38
 UBUNTU=20.04
 
 # Default versions for various dependencies
diff --git a/ci/docker/fedora-35-cpp.dockerfile 
b/ci/docker/fedora-38-cpp.dockerfile
similarity index 95%
rename from ci/docker/fedora-35-cpp.dockerfile
rename to ci/docker/fedora-38-cpp.dockerfile
index aefa25663b..2dcc094ee2 100644
--- a/ci/docker/fedora-35-cpp.dockerfile
+++ b/ci/docker/fedora-38-cpp.dockerfile
@@ -16,7 +16,7 @@
 # under the License.
 
 ARG arch
-FROM ${arch}/fedora:35
+FROM ${arch}/fedora:38
 ARG arch
 
 # install dependencies
@@ -46,9 +46,9 @@ RUN dnf update -y && \
         java-latest-openjdk-devel \
         java-latest-openjdk-headless \
         json-devel \
+        liborc-devel \
         libzstd-devel \
         llvm-devel \
-        llvm-static \
         lz4-devel \
         make \
         ninja-build \
@@ -64,6 +64,7 @@ RUN dnf update -y && \
         utf8proc-devel \
         wget \
         which \
+        xsimd-devel \
         zlib-devel
 
 COPY ci/scripts/install_minio.sh /arrow/ci/scripts/
@@ -100,8 +101,6 @@ ENV absl_SOURCE=BUNDLED \
     CC=gcc \
     CXX=g++ \
     google_cloud_cpp_storage_SOURCE=BUNDLED \
-    ORC_SOURCE=BUNDLED \
     PARQUET_BUILD_EXAMPLES=ON \
     PARQUET_BUILD_EXECUTABLES=ON \
-    PATH=/usr/lib/ccache/:$PATH \
-    xsimd_SOURCE=BUNDLED
+    PATH=/usr/lib/ccache/:$PATH
diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt
index 8566508406..7138139b13 100644
--- a/cpp/CMakeLists.txt
+++ b/cpp/CMakeLists.txt
@@ -770,10 +770,10 @@ if(ARROW_WITH_ZSTD)
 endif()
 
 if(ARROW_ORC)
-  list(APPEND ARROW_SHARED_LINK_LIBS orc::liborc ${ARROW_PROTOBUF_LIBPROTOBUF})
-  list(APPEND ARROW_STATIC_LINK_LIBS orc::liborc ${ARROW_PROTOBUF_LIBPROTOBUF})
+  list(APPEND ARROW_SHARED_LINK_LIBS orc::orc ${ARROW_PROTOBUF_LIBPROTOBUF})
+  list(APPEND ARROW_STATIC_LINK_LIBS orc::orc ${ARROW_PROTOBUF_LIBPROTOBUF})
   if(ORC_SOURCE STREQUAL "SYSTEM")
-    list(APPEND ARROW_STATIC_INSTALL_INTERFACE_LIBS orc::liborc
+    list(APPEND ARROW_STATIC_INSTALL_INTERFACE_LIBS orc::orc
          ${ARROW_PROTOBUF_LIBPROTOBUF})
   endif()
 endif()
diff --git a/cpp/cmake_modules/FindORC.cmake 
b/cpp/cmake_modules/FindorcAlt.cmake
similarity index 68%
rename from cpp/cmake_modules/FindORC.cmake
rename to cpp/cmake_modules/FindorcAlt.cmake
index aca915acc1..dc3b978cf4 100644
--- a/cpp/cmake_modules/FindORC.cmake
+++ b/cpp/cmake_modules/FindorcAlt.cmake
@@ -15,13 +15,20 @@
 # specific language governing permissions and limitations
 # under the License.
 
-# - Find Apache ORC C++ (orc/orc-config.h, liborc.a)
-# This module defines
-#  ORC_INCLUDE_DIR, directory containing headers
-#  ORC_STATIC_LIB, path to liborc.a
-#  ORC_FOUND, whether orc has been found
+if(orcAlt_FOUND)
+  return()
+endif()
 
-if(ORC_FOUND)
+set(find_package_args)
+if(orcAlt_FIND_VERSION)
+  list(APPEND find_package_args ${orcAlt_FIND_VERSION})
+endif()
+if(orcAlt_FIND_QUIETLY)
+  list(APPEND find_package_args QUIET)
+endif()
+find_package(orc ${find_package_args})
+if(orc_FOUND)
+  set(orcAlt_FOUND TRUE)
   return()
 endif()
 
@@ -45,15 +52,13 @@ else()
             PATH_SUFFIXES ${ARROW_INCLUDE_PATH_SUFFIXES})
 endif()
 
-if(ORC_STATIC_LIB AND ORC_INCLUDE_DIR)
-  set(ORC_FOUND TRUE)
-  add_library(orc::liborc STATIC IMPORTED)
-  set_target_properties(orc::liborc
-                        PROPERTIES IMPORTED_LOCATION "${ORC_STATIC_LIB}"
-                                   INTERFACE_INCLUDE_DIRECTORIES 
"${ORC_INCLUDE_DIR}")
-else()
-  if(ORC_FIND_REQUIRED)
-    message(FATAL_ERROR "ORC library was required in toolchain and unable to 
locate")
+find_package_handle_standard_args(orcAlt REQUIRED_VARS ORC_STATIC_LIB 
ORC_INCLUDE_DIR)
+
+if(orcAlt_FOUND)
+  if(NOT TARGET orc::orc)
+    add_library(orc::orc STATIC IMPORTED)
+    set_target_properties(orc::orc
+                          PROPERTIES IMPORTED_LOCATION "${ORC_STATIC_LIB}"
+                                     INTERFACE_INCLUDE_DIRECTORIES 
"${ORC_INCLUDE_DIR}")
   endif()
-  set(ORC_FOUND FALSE)
 endif()
diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake 
b/cpp/cmake_modules/ThirdpartyToolchain.cmake
index 559ddf14f6..5de8ff9b1c 100644
--- a/cpp/cmake_modules/ThirdpartyToolchain.cmake
+++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake
@@ -65,7 +65,7 @@ set(ARROW_THIRDPARTY_DEPENDENCIES
     lz4
     nlohmann_json
     opentelemetry-cpp
-    ORC
+    orc
     re2
     Protobuf
     RapidJSON
@@ -94,6 +94,14 @@ if("${re2_SOURCE}" STREQUAL "" AND NOT "${RE2_SOURCE}" 
STREQUAL "")
   set(re2_SOURCE ${RE2_SOURCE})
 endif()
 
+# For backward compatibility. We use "ORC_SOURCE" if "orc_SOURCE"
+# isn't specified and "ORC_SOURCE" is specified.
+# We renamed "ORC" dependency name to "orc" in 15.0.0 because
+# upstream uses "orc" not "ORC" as package name.
+if("${orc_SOURCE}" STREQUAL "" AND NOT "${ORC_SOURCE}" STREQUAL "")
+  set(orc_SOURCE ${ORC_SOURCE})
+endif()
+
 # For backward compatibility. We use "RE2_ROOT" if "re2_ROOT"
 # isn't specified and "RE2_ROOT" is specified.
 if("${re2_ROOT}" STREQUAL "" AND NOT "${RE2_ROOT}" STREQUAL "")
@@ -193,7 +201,7 @@ macro(build_dependency DEPENDENCY_NAME)
     build_nlohmann_json()
   elseif("${DEPENDENCY_NAME}" STREQUAL "opentelemetry-cpp")
     build_opentelemetry()
-  elseif("${DEPENDENCY_NAME}" STREQUAL "ORC")
+  elseif("${DEPENDENCY_NAME}" STREQUAL "orc")
     build_orc()
   elseif("${DEPENDENCY_NAME}" STREQUAL "Protobuf")
     build_protobuf()
@@ -4423,31 +4431,31 @@ macro(build_orc)
 
   set(ORC_VENDORED 1)
 
-  add_library(orc::liborc STATIC IMPORTED)
-  set_target_properties(orc::liborc PROPERTIES IMPORTED_LOCATION 
"${ORC_STATIC_LIB}")
-  target_include_directories(orc::liborc BEFORE INTERFACE "${ORC_INCLUDE_DIR}")
-  set(ORC_LINK_LIBRARIES LZ4::lz4 ZLIB::ZLIB ${ARROW_ZSTD_LIBZSTD} 
${Snappy_TARGET})
+  add_library(orc::orc STATIC IMPORTED)
+  set_target_properties(orc::orc PROPERTIES IMPORTED_LOCATION 
"${ORC_STATIC_LIB}")
+  target_include_directories(orc::orc BEFORE INTERFACE "${ORC_INCLUDE_DIR}")
+  target_link_libraries(orc::orc INTERFACE LZ4::lz4 ZLIB::ZLIB 
${ARROW_ZSTD_LIBZSTD}
+                                           ${Snappy_TARGET})
   # Protobuf generated files may use ABSL_DCHECK*() and
   # absl::log_internal_check_op is needed for them.
   if(TARGET absl::log_internal_check_op)
-    list(APPEND ORC_LINK_LIBRARIES absl::log_internal_check_op)
+    target_link_libraries(orc::orc INTERFACE absl::log_internal_check_op)
   endif()
   if(NOT MSVC)
     if(NOT APPLE AND ARROW_ENABLE_THREADING)
-      list(APPEND ORC_LINK_LIBRARIES Threads::Threads)
+      target_link_libraries(orc::orc INTERFACE Threads::Threads)
     endif()
-    list(APPEND ORC_LINK_LIBRARIES ${CMAKE_DL_LIBS})
+    target_link_libraries(orc::orc INTERFACE ${CMAKE_DL_LIBS})
   endif()
-  target_link_libraries(orc::liborc INTERFACE ${ORC_LINK_LIBRARIES})
 
   add_dependencies(toolchain orc_ep)
-  add_dependencies(orc::liborc orc_ep)
+  add_dependencies(orc::orc orc_ep)
 
-  list(APPEND ARROW_BUNDLED_STATIC_LIBS orc::liborc)
+  list(APPEND ARROW_BUNDLED_STATIC_LIBS orc::orc)
 endmacro()
 
 if(ARROW_ORC)
-  resolve_dependency(ORC)
+  resolve_dependency(orc HAVE_ALT TRUE)
   message(STATUS "Found ORC static library: ${ORC_STATIC_LIB}")
   message(STATUS "Found ORC headers: ${ORC_INCLUDE_DIR}")
 endif()
diff --git a/cpp/src/arrow/adapters/orc/CMakeLists.txt 
b/cpp/src/arrow/adapters/orc/CMakeLists.txt
index e8ff69c191..4471937999 100644
--- a/cpp/src/arrow/adapters/orc/CMakeLists.txt
+++ b/cpp/src/arrow/adapters/orc/CMakeLists.txt
@@ -32,7 +32,7 @@ else()
   set(ARROW_LIBRARIES_FOR_STATIC_TESTS arrow_testing_shared arrow_shared)
 endif()
 
-set(ORC_STATIC_TEST_LINK_LIBS orc::liborc ${ARROW_LIBRARIES_FOR_STATIC_TESTS}
+set(ORC_STATIC_TEST_LINK_LIBS orc::orc ${ARROW_LIBRARIES_FOR_STATIC_TESTS}
                               ${ARROW_GTEST_GTEST_MAIN} ${ARROW_GTEST_GTEST})
 
 add_arrow_test(adapter_test
diff --git a/dev/tasks/tasks.yml b/dev/tasks/tasks.yml
index 17123ed2b8..b620c9b8c8 100644
--- a/dev/tasks/tasks.yml
+++ b/dev/tasks/tasks.yml
@@ -1182,12 +1182,12 @@ tasks:
       image: debian-cpp
 {% endfor %}
 
-  test-fedora-35-cpp:
+  test-fedora-38-cpp:
     ci: github
     template: docker-tests/github.linux.yml
     params:
       env:
-        FEDORA: 35
+        FEDORA: 38
       image: fedora-cpp
 
 {% for cpp_standard in [20] %}
@@ -1295,12 +1295,12 @@ tasks:
         UBUNTU: 22.04
       image: ubuntu-python
 
-  test-fedora-35-python-3:
+  test-fedora-38-python-3:
     ci: azure
     template: docker-tests/azure.linux.yml
     params:
       env:
-        FEDORA: 35
+        FEDORA: 38
       image: fedora-python
 
   test-r-linux-valgrind:
diff --git a/docker-compose.yml b/docker-compose.yml
index c23d3ff08e..bbe4e65c10 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -655,7 +655,7 @@ services:
     #   docker-compose run --rm fedora-cpp
     # Parameters:
     #   ARCH: amd64, arm64v8, ...
-    #   FEDORA: 33
+    #   FEDORA: 38
     image: ${REPO}:${ARCH}-fedora-${FEDORA}-cpp
     build:
       context: .
@@ -671,7 +671,6 @@ services:
       <<: [*common, *ccache, *sccache, *cpp]
       ARROW_ENABLE_TIMING_TESTS:  # inherit
       ARROW_MIMALLOC: "ON"
-      Protobuf_SOURCE: "BUNDLED"  # Need Protobuf >= 3.15
     volumes: &fedora-volumes
       - .:/arrow:delegated
       - ${DOCKER_VOLUME_PREFIX}fedora-ccache:/ccache:delegated
@@ -957,7 +956,7 @@ services:
     #   docker-compose run --rm fedora-python
     # Parameters:
     #   ARCH: amd64, arm64v8, ...
-    #   FEDORA: 33
+    #   FEDORA: 38
     image: ${REPO}:${ARCH}-fedora-${FEDORA}-python-3
     build:
       context: .
@@ -969,7 +968,6 @@ services:
     shm_size: *shm-size
     environment:
       <<: [*common, *ccache]
-      Protobuf_SOURCE: "BUNDLED"  # Need Protobuf >= 3.15
     volumes: *fedora-volumes
     command: *python-command
 

Reply via email to