This is an automated email from the ASF dual-hosted git repository.
wesm pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/master by this push:
new 102acc4 ARROW-6860: [Python][C++] Do not link shared libraries
monolithically to pyarrow.lib, add libarrow_python_flight.so
102acc4 is described below
commit 102acc47287c37a01ac11a5cb6bd1da3f1f0712d
Author: Wes McKinney <[email protected]>
AuthorDate: Sat Oct 12 14:42:04 2019 -0500
ARROW-6860: [Python][C++] Do not link shared libraries monolithically to
pyarrow.lib, add libarrow_python_flight.so
Adding a new shared library libarrow_python_flight.so that allows us to
link libarrow_flight and this new library to the Cython _flight extension. I
initially tried moving the Flight Python bindings directly to libarrow_flight
but realized this would create a transitive dependency on libpython which is
not desirable. Any shared library that uses Python C APIs is expected to be
loaded into a running Python interpreter and not linked explicitly to libpython
Because Apache ORC also needs to statically link Protocol Buffers, I have
disabled it in the manylinux wheels. Hopefully we can come up with a solution
where projects like Apache Beam, TensorFlow, and others can all use Protocol
Buffers together and not have these problems
Closes #5627 from wesm/ARROW-6860 and squashes the following commits:
d5d67f81c <Wes McKinney> Revert libarrow_flight.pxd changes
b31fbdf32 <Wes McKinney> Build libarrow_python_flight that links to
libarrow_python and libarrow_flight. Do not link all shared libraries to Cython
"lib" extension
Authored-by: Wes McKinney <[email protected]>
Signed-off-by: Wes McKinney <[email protected]>
---
cpp/cmake_modules/FindArrowFlight.cmake | 41 +++++++++++++++++++++--
cpp/src/arrow/python/CMakeLists.txt | 48 +++++++++++++++++++--------
cpp/src/arrow/python/flight.h | 59 +++++++++++++++++++++++----------
python/CMakeLists.txt | 46 ++++++++++++++++++++-----
python/manylinux1/build_arrow.sh | 11 +++---
python/manylinux2010/build_arrow.sh | 11 +++---
6 files changed, 166 insertions(+), 50 deletions(-)
diff --git a/cpp/cmake_modules/FindArrowFlight.cmake
b/cpp/cmake_modules/FindArrowFlight.cmake
index 193361a..048e153 100644
--- a/cpp/cmake_modules/FindArrowFlight.cmake
+++ b/cpp/cmake_modules/FindArrowFlight.cmake
@@ -66,7 +66,13 @@ find_library(ARROW_FLIGHT_LIB_PATH
PATHS ${ARROW_SEARCH_LIB_PATH}
PATH_SUFFIXES ${LIB_PATH_SUFFIXES}
NO_DEFAULT_PATH)
+find_library(ARROW_PYTHON_FLIGHT_LIB_PATH
+ NAMES arrow_python_flight
+ PATHS ${ARROW_SEARCH_LIB_PATH}
+ PATH_SUFFIXES ${LIB_PATH_SUFFIXES}
+ NO_DEFAULT_PATH)
get_filename_component(ARROW_FLIGHT_LIBS ${ARROW_FLIGHT_LIB_PATH} DIRECTORY)
+get_filename_component(ARROW_PYTHON_FLIGHT_LIBS
${ARROW_PYTHON_FLIGHT_LIB_PATH} DIRECTORY)
if(MSVC)
# Prioritize "/bin" over LIB_PATH_SUFFIXES - DLL files are installed
@@ -77,7 +83,15 @@ if(MSVC)
PATHS ${ARROW_HOME}
PATH_SUFFIXES "bin" ${LIB_PATH_SUFFIXES}
NO_DEFAULT_PATH)
+ find_library(ARROW_PYTHON_FLIGHT_SHARED_LIBRARIES
+ NAMES arrow_flight
+ PATHS ${ARROW_HOME}
+ PATH_SUFFIXES "bin" ${LIB_PATH_SUFFIXES}
+ NO_DEFAULT_PATH)
+
get_filename_component(ARROW_FLIGHT_SHARED_LIBS
${ARROW_FLIGHT_SHARED_LIBRARIES} DIRECTORY)
+ get_filename_component(ARROW_PYTHON_FLIGHT_SHARED_LIBS
+ ${ARROW_PYTHON_FLIGHT_SHARED_LIBRARIES} DIRECTORY)
endif()
if(ARROW_FLIGHT_INCLUDE_DIR AND ARROW_FLIGHT_LIBS)
@@ -117,9 +131,32 @@ else()
set(ARROW_FLIGHT_FOUND FALSE)
endif()
+if(ARROW_PYTHON_FLIGHT_LIBS)
+ set(ARROW_PYTHON_FLIGHT_FOUND TRUE)
+ set(ARROW_PYTHON_FLIGHT_LIB_NAME arrow_python_flight)
+ if(MSVC)
+ set(
+ ARROW_PYTHON_FLIGHT_STATIC_LIB
+
${ARROW_PYTHON_FLIGHT_LIBS}/${ARROW_PYTHON_FLIGHT_LIB_NAME}${ARROW_MSVC_STATIC_LIB_SUFFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}
+ )
+ set(ARROW_PYTHON_FLIGHT_SHARED_LIB
+
${ARROW_PYTHON_FLIGHT_SHARED_LIBS}/${ARROW_PYTHON_FLIGHT_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX})
+ set(ARROW_PYTHON_FLIGHT_SHARED_IMP_LIB
${ARROW_PYTHON_FLIGHT_LIBS}/${ARROW_PYTHON_FLIGHT_LIB_NAME}.lib)
+ else()
+ set(ARROW_PYTHON_FLIGHT_STATIC_LIB
${ARROW_LIBS}/lib${ARROW_PYTHON_FLIGHT_LIB_NAME}.a)
+ set(ARROW_PYTHON_FLIGHT_SHARED_LIB
+
${ARROW_LIBS}/lib${ARROW_PYTHON_FLIGHT_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX})
+ endif()
+
+ message(STATUS "Found the Arrow Flight Python library:
${ARROW_PYTHON_FLIGHT_LIB_PATH}")
+endif()
+
if(MSVC)
mark_as_advanced(ARROW_FLIGHT_INCLUDE_DIR ARROW_FLIGHT_STATIC_LIB
ARROW_FLIGHT_SHARED_LIB
- ARROW_FLIGHT_SHARED_IMP_LIB)
+ ARROW_FLIGHT_SHARED_IMP_LIB
+ ARROW_PYTHON_FLIGHT_STATIC_LIB ARROW_PYTHON_FLIGHT_SHARED_LIB
+ ARROW_PYTHON_FLIGHT_SHARED_IMP_LIB)
else()
- mark_as_advanced(ARROW_FLIGHT_INCLUDE_DIR ARROW_FLIGHT_STATIC_LIB
ARROW_FLIGHT_SHARED_LIB)
+ mark_as_advanced(ARROW_FLIGHT_INCLUDE_DIR ARROW_FLIGHT_STATIC_LIB
ARROW_FLIGHT_SHARED_LIB
+ ARROW_PYTHON_FLIGHT_STATIC_LIB ARROW_PYTHON_FLIGHT_SHARED_LIB)
endif()
diff --git a/cpp/src/arrow/python/CMakeLists.txt
b/cpp/src/arrow/python/CMakeLists.txt
index 85a4aad..11ad300 100644
--- a/cpp/src/arrow/python/CMakeLists.txt
+++ b/cpp/src/arrow/python/CMakeLists.txt
@@ -48,26 +48,12 @@ set(ARROW_PYTHON_SRCS
set(ARROW_PYTHON_DEPENDENCIES arrow_dependencies)
-if(ARROW_FLIGHT)
- set(ARROW_PYTHON_DEPENDENCIES ${ARROW_PYTHON_DEPENDENCIES} flight_grpc_gen)
- set(ARROW_PYTHON_SRCS ${ARROW_PYTHON_SRCS} flight.cc)
-endif()
-
if("${COMPILER_FAMILY}" STREQUAL "clang")
set_property(SOURCE pyarrow.cc APPEND_STRING PROPERTY COMPILE_FLAGS "
-Wno-cast-qual ")
endif()
set(ARROW_PYTHON_SHARED_LINK_LIBS arrow_shared ${PYTHON_OTHER_LIBS})
-if(ARROW_FLIGHT)
- # Must link shared: we don't want to link more than one copy of gRPC
- # into the eventual Cython shared object, otherwise gRPC calls fail
- # with weird errors due to multiple copies of global static state
- # (The other solution is to link gRPC shared everywhere instead of
- # statically only in Flight)
- set(ARROW_PYTHON_SHARED_LINK_LIBS ${ARROW_PYTHON_SHARED_LINK_LIBS}
arrow_flight_shared)
-endif()
-
if(WIN32)
set(ARROW_PYTHON_SHARED_LINK_LIBS ${ARROW_PYTHON_SHARED_LINK_LIBS}
${PYTHON_LIBRARIES})
endif()
@@ -100,6 +86,40 @@ if(ARROW_BUILD_STATIC AND MSVC)
target_compile_definitions(arrow_python_static PUBLIC ARROW_STATIC)
endif()
+if(ARROW_FLIGHT AND ARROW_BUILD_SHARED)
+ # Must link to shared libarrow_flight: we don't want to link more than one
+ # copy of gRPC into the eventual Cython shared object, otherwise gRPC calls
+ # fail with weird errors due to multiple copies of global static state (The
+ # other solution is to link gRPC shared everywhere instead of statically only
+ # in Flight)
+ add_arrow_lib(arrow_python_flight
+ SOURCES
+ flight.cc
+ OUTPUTS
+ ARROW_PYFLIGHT_LIBRARIES
+ DEPENDENCIES
+ flight_grpc_gen
+ SHARED_LINK_FLAGS
+ ${ARROW_VERSION_SCRIPT_FLAGS} # Defined in
cpp/arrow/CMakeLists.txt
+ SHARED_LINK_LIBS
+ arrow_python_shared
+ arrow_flight_shared
+ STATIC_LINK_LIBS
+ ${PYTHON_OTHER_LIBS}
+ EXTRA_INCLUDES
+ "${ARROW_PYTHON_INCLUDES}")
+
+ add_dependencies(arrow_python ${ARROW_PYFLIGHT_LIBRARIES})
+
+ foreach(LIB_TARGET ${ARROW_PYFLIGHT_LIBRARIES})
+ target_compile_definitions(${LIB_TARGET} PRIVATE ARROW_PYFLIGHT_EXPORTING)
+ endforeach()
+
+ if(ARROW_BUILD_STATIC AND MSVC)
+ target_compile_definitions(arrow_python_flight_static PUBLIC ARROW_STATIC)
+ endif()
+endif()
+
if("${COMPILER_FAMILY}" STREQUAL "clang")
# Clang, be quiet. Python C API has lots of macros
set_property(SOURCE ${ARROW_PYTHON_SRCS}
diff --git a/cpp/src/arrow/python/flight.h b/cpp/src/arrow/python/flight.h
index c97705d..41329ed 100644
--- a/cpp/src/arrow/python/flight.h
+++ b/cpp/src/arrow/python/flight.h
@@ -27,18 +27,39 @@
#include "arrow/python/common.h"
#include "arrow/python/config.h"
+#if defined(_WIN32) || defined(__CYGWIN__) // Windows
+#if defined(_MSC_VER)
+#pragma warning(disable : 4251)
+#else
+#pragma GCC diagnostic ignored "-Wattributes"
+#endif
+
+#ifdef ARROW_STATIC
+#define ARROW_PYFLIGHT_EXPORT
+#elif defined(ARROW_PYFLIGHT_EXPORTING)
+#define ARROW_PYFLIGHT_EXPORT __declspec(dllexport)
+#else
+#define ARROW_PYFLIGHT_EXPORT __declspec(dllimport)
+#endif
+
+#else // Not Windows
+#ifndef ARROW_PYFLIGHT_EXPORT
+#define ARROW_PYFLIGHT_EXPORT __attribute__((visibility("default")))
+#endif
+#endif // Non-Windows
+
namespace arrow {
namespace py {
namespace flight {
-ARROW_PYTHON_EXPORT
+ARROW_PYFLIGHT_EXPORT
extern const char* kPyServerMiddlewareName;
/// \brief A table of function pointers for calling from C++ into
/// Python.
-class ARROW_PYTHON_EXPORT PyFlightServerVtable {
+class ARROW_PYFLIGHT_EXPORT PyFlightServerVtable {
public:
std::function<Status(PyObject*, const arrow::flight::ServerCallContext&,
const arrow::flight::Criteria*,
@@ -69,7 +90,7 @@ class ARROW_PYTHON_EXPORT PyFlightServerVtable {
list_actions;
};
-class ARROW_PYTHON_EXPORT PyServerAuthHandlerVtable {
+class ARROW_PYFLIGHT_EXPORT PyServerAuthHandlerVtable {
public:
std::function<Status(PyObject*, arrow::flight::ServerAuthSender*,
arrow::flight::ServerAuthReader*)>
@@ -77,7 +98,7 @@ class ARROW_PYTHON_EXPORT PyServerAuthHandlerVtable {
std::function<Status(PyObject*, const std::string&, std::string*)> is_valid;
};
-class ARROW_PYTHON_EXPORT PyClientAuthHandlerVtable {
+class ARROW_PYFLIGHT_EXPORT PyClientAuthHandlerVtable {
public:
std::function<Status(PyObject*, arrow::flight::ClientAuthSender*,
arrow::flight::ClientAuthReader*)>
@@ -86,7 +107,8 @@ class ARROW_PYTHON_EXPORT PyClientAuthHandlerVtable {
};
/// \brief A helper to implement an auth mechanism in Python.
-class ARROW_PYTHON_EXPORT PyServerAuthHandler : public
arrow::flight::ServerAuthHandler {
+class ARROW_PYFLIGHT_EXPORT PyServerAuthHandler
+ : public arrow::flight::ServerAuthHandler {
public:
explicit PyServerAuthHandler(PyObject* handler,
const PyServerAuthHandlerVtable& vtable);
@@ -100,7 +122,8 @@ class ARROW_PYTHON_EXPORT PyServerAuthHandler : public
arrow::flight::ServerAuth
};
/// \brief A helper to implement an auth mechanism in Python.
-class ARROW_PYTHON_EXPORT PyClientAuthHandler : public
arrow::flight::ClientAuthHandler {
+class ARROW_PYFLIGHT_EXPORT PyClientAuthHandler
+ : public arrow::flight::ClientAuthHandler {
public:
explicit PyClientAuthHandler(PyObject* handler,
const PyClientAuthHandlerVtable& vtable);
@@ -113,7 +136,7 @@ class ARROW_PYTHON_EXPORT PyClientAuthHandler : public
arrow::flight::ClientAuth
PyClientAuthHandlerVtable vtable_;
};
-class ARROW_PYTHON_EXPORT PyFlightServer : public
arrow::flight::FlightServerBase {
+class ARROW_PYFLIGHT_EXPORT PyFlightServer : public
arrow::flight::FlightServerBase {
public:
explicit PyFlightServer(PyObject* server, const PyFlightServerVtable&
vtable);
@@ -152,7 +175,7 @@ typedef std::function<Status(PyObject*,
std::unique_ptr<arrow::flight::Result>*)
PyFlightResultStreamCallback;
/// \brief A ResultStream built around a Python callback.
-class ARROW_PYTHON_EXPORT PyFlightResultStream : public
arrow::flight::ResultStream {
+class ARROW_PYFLIGHT_EXPORT PyFlightResultStream : public
arrow::flight::ResultStream {
public:
/// \brief Construct a FlightResultStream from a Python object and callback.
/// Must only be called while holding the GIL.
@@ -167,7 +190,7 @@ class ARROW_PYTHON_EXPORT PyFlightResultStream : public
arrow::flight::ResultStr
/// \brief A wrapper around a FlightDataStream that keeps alive a
/// Python object backing it.
-class ARROW_PYTHON_EXPORT PyFlightDataStream : public
arrow::flight::FlightDataStream {
+class ARROW_PYFLIGHT_EXPORT PyFlightDataStream : public
arrow::flight::FlightDataStream {
public:
/// \brief Construct a FlightDataStream from a Python object and underlying
stream.
/// Must only be called while holding the GIL.
@@ -183,7 +206,7 @@ class ARROW_PYTHON_EXPORT PyFlightDataStream : public
arrow::flight::FlightDataS
std::unique_ptr<arrow::flight::FlightDataStream> stream_;
};
-class ARROW_PYTHON_EXPORT PyServerMiddlewareFactory
+class ARROW_PYFLIGHT_EXPORT PyServerMiddlewareFactory
: public arrow::flight::ServerMiddlewareFactory {
public:
/// \brief A callback to create the middleware instance in Python
@@ -205,7 +228,7 @@ class ARROW_PYTHON_EXPORT PyServerMiddlewareFactory
StartCallCallback start_call_;
};
-class ARROW_PYTHON_EXPORT PyServerMiddleware : public
arrow::flight::ServerMiddleware {
+class ARROW_PYFLIGHT_EXPORT PyServerMiddleware : public
arrow::flight::ServerMiddleware {
public:
typedef std::function<Status(PyObject*,
arrow::flight::AddCallHeaders*
outgoing_headers)>
@@ -231,7 +254,7 @@ class ARROW_PYTHON_EXPORT PyServerMiddleware : public
arrow::flight::ServerMiddl
Vtable vtable_;
};
-class ARROW_PYTHON_EXPORT PyClientMiddlewareFactory
+class ARROW_PYFLIGHT_EXPORT PyClientMiddlewareFactory
: public arrow::flight::ClientMiddlewareFactory {
public:
/// \brief A callback to create the middleware instance in Python
@@ -251,7 +274,7 @@ class ARROW_PYTHON_EXPORT PyClientMiddlewareFactory
StartCallCallback start_call_;
};
-class ARROW_PYTHON_EXPORT PyClientMiddleware : public
arrow::flight::ClientMiddleware {
+class ARROW_PYFLIGHT_EXPORT PyClientMiddleware : public
arrow::flight::ClientMiddleware {
public:
typedef std::function<Status(PyObject*,
arrow::flight::AddCallHeaders*
outgoing_headers)>
@@ -284,7 +307,7 @@ typedef std::function<Status(PyObject*,
arrow::flight::FlightPayload*)>
PyGeneratorFlightDataStreamCallback;
/// \brief A FlightDataStream built around a Python callback.
-class ARROW_PYTHON_EXPORT PyGeneratorFlightDataStream
+class ARROW_PYFLIGHT_EXPORT PyGeneratorFlightDataStream
: public arrow::flight::FlightDataStream {
public:
/// \brief Construct a FlightDataStream from a Python object and underlying
stream.
@@ -304,22 +327,22 @@ class ARROW_PYTHON_EXPORT PyGeneratorFlightDataStream
PyGeneratorFlightDataStreamCallback callback_;
};
-ARROW_PYTHON_EXPORT
+ARROW_PYFLIGHT_EXPORT
Status CreateFlightInfo(const std::shared_ptr<arrow::Schema>& schema,
const arrow::flight::FlightDescriptor& descriptor,
const std::vector<arrow::flight::FlightEndpoint>&
endpoints,
int64_t total_records, int64_t total_bytes,
std::unique_ptr<arrow::flight::FlightInfo>* out);
-ARROW_PYTHON_EXPORT
+ARROW_PYFLIGHT_EXPORT
Status DeserializeBasicAuth(const std::string& buf,
std::unique_ptr<arrow::flight::BasicAuth>* out);
-ARROW_PYTHON_EXPORT
+ARROW_PYFLIGHT_EXPORT
Status SerializeBasicAuth(const arrow::flight::BasicAuth& basic_auth,
std::string* out);
/// \brief Create a SchemaResult from schema.
-ARROW_PYTHON_EXPORT
+ARROW_PYFLIGHT_EXPORT
Status CreateSchemaResult(const std::shared_ptr<arrow::Schema>& schema,
std::unique_ptr<arrow::flight::SchemaResult>* out);
diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt
index 6925efd..9f7c1b3 100644
--- a/python/CMakeLists.txt
+++ b/python/CMakeLists.txt
@@ -410,7 +410,7 @@ if(PYARROW_BUILD_CUDA)
else()
add_thirdparty_lib(arrow_cuda SHARED_LIB ${ARROW_CUDA_SHARED_LIB})
endif()
- set(LINK_LIBS ${LINK_LIBS} arrow_cuda_shared)
+ set(CUDA_LINK_LIBS arrow_cuda_shared)
set(CYTHON_EXTENSIONS ${CYTHON_EXTENSIONS} _cuda)
endif()
endif()
@@ -445,7 +445,7 @@ if(PYARROW_BUILD_PARQUET)
else()
add_thirdparty_lib(parquet SHARED_LIB ${PARQUET_SHARED_LIB})
endif()
- set(LINK_LIBS ${LINK_LIBS} parquet_shared)
+ set(PARQUET_LINK_LIBS parquet_shared)
else()
find_package(Thrift)
if(PYARROW_BOOST_USE_SHARED)
@@ -457,7 +457,7 @@ if(PYARROW_BUILD_PARQUET)
add_thirdparty_lib(boost_regex STATIC_LIB ${Boost_REGEX_LIBRARY_RELEASE})
add_thirdparty_lib(parquet STATIC_LIB ${PARQUET_STATIC_LIB})
add_thirdparty_lib(thrift STATIC_LIB ${THRIFT_STATIC_LIB})
- set(LINK_LIBS ${LINK_LIBS} parquet_static thrift_static boost_regex_static)
+ set(PARQUET_LINK_LIBS parquet_static thrift_static boost_regex_static)
endif()
set(CYTHON_EXTENSIONS ${CYTHON_EXTENSIONS} _parquet)
endif()
@@ -483,8 +483,7 @@ if(PYARROW_BUILD_PLASMA)
SO_VERSION
${ARROW_SO_VERSION})
endif()
- set(LINK_LIBS ${LINK_LIBS} libplasma_shared)
-
+ set(PLASMA_LINK_LIBS libplasma_shared)
set(CYTHON_EXTENSIONS ${CYTHON_EXTENSIONS} _plasma)
file(COPY ${PLASMA_EXECUTABLE} DESTINATION ${BUILD_OUTPUT_ROOT_DIRECTORY})
endif()
@@ -498,7 +497,7 @@ endif()
if(PYARROW_BUILD_FLIGHT)
# Arrow Flight
find_package(ArrowFlight)
- if(NOT ARROW_FLIGHT_FOUND)
+ if(NOT ARROW_PYTHON_FLIGHT_FOUND)
message(FATAL_ERROR "Unable to locate Arrow Flight libraries")
else()
if(PYARROW_BUNDLE_ARROW_CPP)
@@ -507,8 +506,14 @@ if(PYARROW_BUILD_FLIGHT)
${ARROW_ABI_VERSION}
SO_VERSION
${ARROW_SO_VERSION})
+ bundle_arrow_lib(ARROW_PYTHON_FLIGHT_SHARED_LIB
+ ABI_VERSION
+ ${ARROW_ABI_VERSION}
+ SO_VERSION
+ ${ARROW_SO_VERSION})
if(MSVC)
bundle_arrow_implib(ARROW_FLIGHT_SHARED_IMP_LIB)
+ bundle_arrow_implib(ARROW_PYTHON_FLIGHT_SHARED_IMP_LIB)
bundle_arrow_dependency(cares cares.dll)
bundle_arrow_dependency(libprotobuf libprotobuf.dll)
# XXX Hardcoded library names because CMake is too stupid to give us
@@ -520,10 +525,13 @@ if(PYARROW_BUILD_FLIGHT)
endif()
if(MSVC)
add_thirdparty_lib(arrow_flight SHARED_LIB
${ARROW_FLIGHT_SHARED_IMP_LIB})
+ add_thirdparty_lib(arrow_python_flight SHARED_LIB
+ ${ARROW_PYTHON_FLIGHT_SHARED_IMP_LIB})
else()
add_thirdparty_lib(arrow_flight SHARED_LIB ${ARROW_FLIGHT_SHARED_LIB})
+ add_thirdparty_lib(arrow_python_flight SHARED_LIB
${ARROW_PYTHON_FLIGHT_SHARED_LIB})
endif()
- set(LINK_LIBS ${LINK_LIBS} arrow_flight_shared)
+ set(FLIGHT_LINK_LIBS arrow_flight_shared arrow_python_flight_shared)
set(CYTHON_EXTENSIONS ${CYTHON_EXTENSIONS} _flight)
endif()
endif()
@@ -559,7 +567,7 @@ if(PYARROW_BUILD_GANDIVA)
add_thirdparty_lib(gandiva SHARED_LIB ${GANDIVA_SHARED_LIB})
endif()
- set(LINK_LIBS ${LINK_LIBS} gandiva_shared)
+ set(GANDIVA_LINK_LIBS gandiva_shared)
set(CYTHON_EXTENSIONS ${CYTHON_EXTENSIONS} gandiva)
endif()
@@ -622,3 +630,25 @@ foreach(module ${CYTHON_EXTENSIONS})
# Generated files will be moved to the right directory by setup.py.
endforeach(module)
+
+# Additional link libraries
+
+if(PYARROW_BUILD_CUDA)
+ target_link_libraries(_cuda ${CUDA_LINK_LIBS})
+endif()
+
+if(PYARROW_BUILD_FLIGHT)
+ target_link_libraries(_flight ${FLIGHT_LINK_LIBS})
+endif()
+
+if(PYARROW_BUILD_GANDIVA)
+ target_link_libraries(gandiva ${GANDIVA_LINK_LIBS})
+endif()
+
+if(PYARROW_BUILD_PARQUET)
+ target_link_libraries(_parquet ${PARQUET_LINK_LIBS})
+endif()
+
+if(PYARROW_BUILD_PLASMA)
+ target_link_libraries(_plasma ${PLASMA_LINK_LIBS})
+endif()
diff --git a/python/manylinux1/build_arrow.sh b/python/manylinux1/build_arrow.sh
index 7a8917e..bf12da5 100755
--- a/python/manylinux1/build_arrow.sh
+++ b/python/manylinux1/build_arrow.sh
@@ -41,7 +41,11 @@ cd /arrow/python
# PyArrow build configuration
export PYARROW_BUILD_TYPE='release'
export PYARROW_CMAKE_GENERATOR='Ninja'
-export PYARROW_WITH_ORC=1
+
+# ARROW-6860: Disabling ORC in wheels until Protobuf static linking issues
+# across projects is resolved
+export PYARROW_WITH_ORC=0
+
export PYARROW_WITH_PARQUET=1
export PYARROW_WITH_PLASMA=1
export PYARROW_BUNDLE_ARROW_CPP=1
@@ -97,7 +101,8 @@ cmake -DCMAKE_BUILD_TYPE=Release \
-DPythonInterp_FIND_VERSION=${PYTHON_VERSION} \
-DARROW_PLASMA=ON \
-DARROW_TENSORFLOW=ON \
- -DARROW_ORC=ON \
+ -DARROW_ORC=OFF \
+ -DORC_SOURCE=BUNDLED \
-DARROW_WITH_BZ2=ON \
-DARROW_WITH_ZLIB=ON \
-DARROW_WITH_ZSTD=ON \
@@ -110,7 +115,6 @@ cmake -DCMAKE_BUILD_TYPE=Release \
-DBoost_NAMESPACE=arrow_boost \
-DBOOST_ROOT=/arrow_boost_dist \
-DOPENSSL_USE_STATIC_LIBS=ON \
- -DORC_SOURCE=BUNDLED \
-GNinja /arrow/cpp
ninja
ninja install
@@ -149,7 +153,6 @@ else
$PYTHON_INTERPRETER -c "
import sys
import pyarrow
-import pyarrow.orc
import pyarrow.parquet
import pyarrow.plasma
diff --git a/python/manylinux2010/build_arrow.sh
b/python/manylinux2010/build_arrow.sh
index 6ae4962..a6ce49a 100755
--- a/python/manylinux2010/build_arrow.sh
+++ b/python/manylinux2010/build_arrow.sh
@@ -41,7 +41,11 @@ cd /arrow/python
# PyArrow build configuration
export PYARROW_BUILD_TYPE='release'
export PYARROW_CMAKE_GENERATOR='Ninja'
-export PYARROW_WITH_ORC=1
+
+# ARROW-6860: Disabling ORC in wheels until Protobuf static linking issues
+# across projects is resolved
+export PYARROW_WITH_ORC=0
+
export PYARROW_WITH_PARQUET=1
export PYARROW_WITH_PLASMA=1
export PYARROW_BUNDLE_ARROW_CPP=1
@@ -98,7 +102,8 @@ PATH="${CPYTHON_PATH}/bin:${PATH}" cmake
-DCMAKE_BUILD_TYPE=Release \
-DPythonInterp_FIND_VERSION=${PYTHON_VERSION} \
-DARROW_PLASMA=ON \
-DARROW_TENSORFLOW=ON \
- -DARROW_ORC=ON \
+ -DARROW_ORC=OFF \
+ -DORC_SOURCE=BUNDLED \
-DARROW_WITH_BZ2=ON \
-DARROW_WITH_ZLIB=ON \
-DARROW_WITH_ZSTD=ON \
@@ -111,7 +116,6 @@ PATH="${CPYTHON_PATH}/bin:${PATH}" cmake
-DCMAKE_BUILD_TYPE=Release \
-DBoost_NAMESPACE=arrow_boost \
-DBOOST_ROOT=/arrow_boost_dist \
-DOPENSSL_USE_STATIC_LIBS=ON \
- -DORC_SOURCE=BUNDLED \
-GNinja /arrow/cpp
ninja install
popd
@@ -145,7 +149,6 @@ $PIP install repaired_wheels/*.whl
$PYTHON_INTERPRETER -c "
import sys
import pyarrow
-import pyarrow.orc
import pyarrow.parquet
import pyarrow.plasma