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 <wesm+...@apache.org> 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 <wesm+...@apache.org> Signed-off-by: Wes McKinney <wesm+...@apache.org> --- 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