diff --git a/backends-velox/src/test/scala/org/apache/gluten/utils/MySharedLibraryLoader.scala b/backends-velox/src/test/scala/org/apache/gluten/utils/MySharedLibraryLoader.scala index c2902d652c44..12811791fd1b 100644 --- a/backends-velox/src/test/scala/org/apache/gluten/utils/MySharedLibraryLoader.scala +++ b/backends-velox/src/test/scala/org/apache/gluten/utils/MySharedLibraryLoader.scala @@ -17,12 +17,12 @@ package org.apache.gluten.utils import org.apache.gluten.jni.JniLibLoader -import org.apache.gluten.spi.SharedLibraryLoader +import org.apache.gluten.spi.{SharedLibraryLoader => SpiSharedLibraryLoader} import org.apache.gluten.utils.MySharedLibraryLoader.LOADED import java.util.concurrent.atomic.AtomicBoolean -class MySharedLibraryLoader extends SharedLibraryLoader { +class MySharedLibraryLoader extends SpiSharedLibraryLoader { override def accepts(osName: String, osVersion: String): Boolean = { osName == "My OS" && osVersion == "1.0" } diff --git a/cpp/CMake/FindThrift.cmake b/cpp/CMake/FindThrift.cmake deleted file mode 100644 index 273500a6ae36..000000000000 --- a/cpp/CMake/FindThrift.cmake +++ /dev/null @@ -1,167 +0,0 @@ -# Copyright 2012 Cloudera Inc. -# -# Licensed 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. - -# * Find Thrift (a cross platform RPC lib/tool) -# -# Variables used by this module, they can change the default behaviour and need -# to be set before calling find_package: -# -# Thrift_ROOT - When set, this path is inspected instead of standard library -# locations as the root of the Thrift installation. The environment variable -# THRIFT_HOME overrides this variable. -# -# This module defines Thrift_FOUND, whether Thrift is found or not -# Thrift_COMPILER_FOUND, whether Thrift compiler is found or not -# -# thrift::thrift, a library target to use Thrift thrift::compiler, a executable -# target to use Thrift compiler - -function(EXTRACT_THRIFT_VERSION) - if(THRIFT_INCLUDE_DIR) - file(READ "${THRIFT_INCLUDE_DIR}/thrift/config.h" THRIFT_CONFIG_H_CONTENT) - string(REGEX MATCH "#define PACKAGE_VERSION \"[0-9.]+\"" - THRIFT_VERSION_DEFINITION "${THRIFT_CONFIG_H_CONTENT}") - string(REGEX MATCH "[0-9.]+" Thrift_VERSION "${THRIFT_VERSION_DEFINITION}") - set(Thrift_VERSION - "${Thrift_VERSION}" - PARENT_SCOPE) - else() - set(Thrift_VERSION - "" - PARENT_SCOPE) - endif() -endfunction(EXTRACT_THRIFT_VERSION) - -if(MSVC_TOOLCHAIN AND NOT DEFINED THRIFT_MSVC_LIB_SUFFIX) - if(NOT ARROW_THRIFT_USE_SHARED) - if(ARROW_USE_STATIC_CRT) - if("${CMAKE_BUILD_TYPE}" STREQUAL "DEBUG") - set(THRIFT_MSVC_LIB_SUFFIX "mtd") - else() - set(THRIFT_MSVC_LIB_SUFFIX "mt") - endif() - else() - if("${CMAKE_BUILD_TYPE}" STREQUAL "DEBUG") - set(THRIFT_MSVC_LIB_SUFFIX "mdd") - else() - set(THRIFT_MSVC_LIB_SUFFIX "md") - endif() - endif() - endif() -endif() -set(THRIFT_LIB_NAME_BASE "thrift${THRIFT_MSVC_LIB_SUFFIX}") - -if(ARROW_THRIFT_USE_SHARED) - set(THRIFT_LIB_NAMES thrift) - if(CMAKE_IMPORT_LIBRARY_SUFFIX) - list( - APPEND - THRIFT_LIB_NAMES - "${CMAKE_IMPORT_LIBRARY_PREFIX}${THRIFT_LIB_NAME_BASE}${CMAKE_IMPORT_LIBRARY_SUFFIX}" - ) - endif() - list( - APPEND - THRIFT_LIB_NAMES - "${CMAKE_SHARED_LIBRARY_PREFIX}${THRIFT_LIB_NAME_BASE}${CMAKE_SHARED_LIBRARY_SUFFIX}" - ) -else() - set(THRIFT_LIB_NAMES - "${CMAKE_STATIC_LIBRARY_PREFIX}${THRIFT_LIB_NAME_BASE}${CMAKE_STATIC_LIBRARY_SUFFIX}" - ) -endif() - -if(Thrift_ROOT) - find_library( - THRIFT_LIB - NAMES ${THRIFT_LIB_NAMES} - PATHS ${Thrift_ROOT} - PATH_SUFFIXES "lib/${CMAKE_LIBRARY_ARCHITECTURE}" "lib") - find_path( - THRIFT_INCLUDE_DIR thrift/Thrift.h - PATHS ${Thrift_ROOT} - PATH_SUFFIXES "include") - find_program( - THRIFT_COMPILER thrift - PATHS ${Thrift_ROOT} - PATH_SUFFIXES "bin") - extract_thrift_version() -else() - # THRIFT-4760: The pkgconfig files are currently only installed when using - # autotools. Starting with 0.13, they are also installed for the CMake-based - # installations of Thrift. - find_package(PkgConfig QUIET) - pkg_check_modules(THRIFT_PC thrift) - if(THRIFT_PC_FOUND) - set(THRIFT_INCLUDE_DIR "${THRIFT_PC_INCLUDEDIR}") - - list(APPEND THRIFT_PC_LIBRARY_DIRS "${THRIFT_PC_LIBDIR}") - - find_library( - THRIFT_LIB - NAMES ${THRIFT_LIB_NAMES} - PATHS ${THRIFT_PC_LIBRARY_DIRS} - NO_DEFAULT_PATH) - find_program( - THRIFT_COMPILER thrift - HINTS ${THRIFT_PC_PREFIX} - NO_DEFAULT_PATH - PATH_SUFFIXES "bin") - set(Thrift_VERSION ${THRIFT_PC_VERSION}) - else() - find_library( - THRIFT_LIB - NAMES ${THRIFT_LIB_NAMES} - PATH_SUFFIXES "lib/${CMAKE_LIBRARY_ARCHITECTURE}" "lib") - find_path(THRIFT_INCLUDE_DIR thrift/Thrift.h PATH_SUFFIXES "include") - find_program(THRIFT_COMPILER thrift PATH_SUFFIXES "bin") - extract_thrift_version() - endif() -endif() - -if(THRIFT_COMPILER) - set(Thrift_COMPILER_FOUND TRUE) -else() - set(Thrift_COMPILER_FOUND FALSE) -endif() - -find_package_handle_standard_args( - Thrift - REQUIRED_VARS THRIFT_LIB THRIFT_INCLUDE_DIR - VERSION_VAR Thrift_VERSION - HANDLE_COMPONENTS) - -if(Thrift_FOUND) - if(ARROW_THRIFT_USE_SHARED) - add_library(thrift::thrift SHARED IMPORTED) - else() - add_library(thrift::thrift STATIC IMPORTED) - endif() - set_target_properties( - thrift::thrift - PROPERTIES IMPORTED_LOCATION "${THRIFT_LIB}" INTERFACE_INCLUDE_DIRECTORIES - "${THRIFT_INCLUDE_DIR}") - if(WIN32 AND NOT MSVC_TOOLCHAIN) - # We don't need this for Visual C++ because Thrift uses "#pragma - # comment(lib, "Ws2_32.lib")" in thrift/windows/config.h for Visual C++. - set_target_properties(thrift::thrift PROPERTIES INTERFACE_LINK_LIBRARIES - "ws2_32") - endif() - - if(Thrift_COMPILER_FOUND) - add_executable(thrift::compiler IMPORTED) - set_target_properties(thrift::compiler PROPERTIES IMPORTED_LOCATION - "${THRIFT_COMPILER}") - endif() -endif() diff --git a/cpp/velox/CMakeLists.txt b/cpp/velox/CMakeLists.txt index 741fa509b2e0..6e39b82f381c 100644 --- a/cpp/velox/CMakeLists.txt +++ b/cpp/velox/CMakeLists.txt @@ -439,6 +439,20 @@ if(ENABLE_GPU) PRIVATE ${VELOX_BUILD_PATH}/_deps/cudf-build/libcudf.so) endif() +find_package(wangle REQUIRED) +# 查找 FBThrift +find_package(FBThrift REQUIRED) + +# 链接 FBThrift 库 +target_link_libraries(velox PUBLIC + FBThrift::thriftcpp2 + FBThrift::thriftprotocol +) + +target_link_libraries( + velox + PUBLIC ${VELOX_BUILD_PATH}/velox/dwio/parquet/thrift/libvelox_dwio_parquet_thrift_raw.a) + add_custom_command( TARGET velox POST_BUILD diff --git a/dev/buildbundle-veloxbe.sh b/dev/buildbundle-veloxbe.sh index b4b9f0ede7f0..6548226620f9 100755 --- a/dev/buildbundle-veloxbe.sh +++ b/dev/buildbundle-veloxbe.sh @@ -44,7 +44,7 @@ check_supported # SPARK_VERSION is defined in builddeps-veloxbe.sh if [ "$SPARK_VERSION" = "ALL" ]; then - for spark_version in 3.2 3.3 3.4 3.5 4.0 + for spark_version in 3.5 do build_for_spark $spark_version done diff --git a/dev/vcpkg/vcpkg.json b/dev/vcpkg/vcpkg.json index fb349dd05feb..a16b739f3646 100644 --- a/dev/vcpkg/vcpkg.json +++ b/dev/vcpkg/vcpkg.json @@ -50,7 +50,10 @@ "protobuf", "benchmark", "icu", - "thrift", + "fizz", + "wangle", + "mvfst", + { "name": "fbthrift", "features": ["cpp2"]}, "libstemmer", "geos" ] @@ -113,6 +116,7 @@ }, "overrides": [ { "name": "fmt", "version": "10.1.1" }, - { "name": "xsimd", "version": "10.0.0" } + { "name": "xsimd", "version": "10.0.0" }, + { "name": "fbthrift", "version-date": "2025-09-15"} ] } diff --git a/ep/build-velox/src/get_velox.sh b/ep/build-velox/src/get_velox.sh index f7287db781f2..ac8f0262f45c 100755 --- a/ep/build-velox/src/get_velox.sh +++ b/ep/build-velox/src/get_velox.sh @@ -17,8 +17,8 @@ set -exu CURRENT_DIR=$(cd "$(dirname "$BASH_SOURCE")"; pwd) -VELOX_REPO=https://github.com/oap-project/velox.git -VELOX_BRANCH=2025_10_09 +VELOX_REPO=https://github.com/JkSelf/velox.git +VELOX_BRANCH=fb-thrift VELOX_HOME="" RUN_SETUP_SCRIPT=ON VELOX_ENHANCED_REPO=https://github.com/IBM/velox.git