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 c7c2393 ARROW-2269: [Python] Make boost namespace selectable in wheels
c7c2393 is described below
commit c7c2393bf61dc958ff35b0574696e97462401756
Author: Uwe L. Korn <[email protected]>
AuthorDate: Fri Mar 9 10:29:38 2018 -0500
ARROW-2269: [Python] Make boost namespace selectable in wheels
cc @mitar
Author: Uwe L. Korn <[email protected]>
Closes #1718 from xhochy/ARROW-2269 and squashes the following commits:
edc1f3d9 <Uwe L. Korn> ARROW-2269: Make boost namespace selectable in
wheels
---
python/CMakeLists.txt | 5 ++++-
python/manylinux1/build_arrow.sh | 4 +++-
python/setup.py | 29 +++++++++++++++++++++++++----
3 files changed, 32 insertions(+), 6 deletions(-)
diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt
index d171946..44a3c6c 100644
--- a/python/CMakeLists.txt
+++ b/python/CMakeLists.txt
@@ -76,6 +76,9 @@ if("${CMAKE_SOURCE_DIR}" STREQUAL
"${CMAKE_CURRENT_SOURCE_DIR}")
option(PYARROW_BUNDLE_ARROW_CPP
"Bundle the Arrow C++ libraries"
OFF)
+ option(PYARROW_BUNDLE_BOOST
+ "Bundle the Boost libraries when we bundle Arrow C++"
+ ON)
set(PYARROW_CXXFLAGS "" CACHE STRING
"Compiler flags to append when compiling Arrow")
endif()
@@ -266,7 +269,7 @@ if (PYARROW_BUNDLE_ARROW_CPP)
SO_VERSION ${ARROW_SO_VERSION})
# boost
- if (PYARROW_BOOST_USE_SHARED)
+ if (PYARROW_BOOST_USE_SHARED AND PYARROW_BUNDLE_BOOST)
set(Boost_USE_STATIC_LIBS OFF)
set(Boost_USE_MULTITHREADED ON)
if (MSVC AND ARROW_USE_STATIC_CRT)
diff --git a/python/manylinux1/build_arrow.sh b/python/manylinux1/build_arrow.sh
index f83c759..5df55a6 100755
--- a/python/manylinux1/build_arrow.sh
+++ b/python/manylinux1/build_arrow.sh
@@ -40,6 +40,8 @@ export PYARROW_BUILD_TYPE='release'
export PYARROW_WITH_PARQUET=1
export PYARROW_WITH_PLASMA=1
export PYARROW_BUNDLE_ARROW_CPP=1
+export PYARROW_BUNDLE_BOOST=1
+export PYARROW_BOOST_NAMESPACE=arrow_boost
export PKG_CONFIG_PATH=/arrow-dist/lib64/pkgconfig
export PYARROW_CMAKE_OPTIONS='-DTHRIFT_HOME=/usr -DBoost_NAMESPACE=arrow_boost
-DBOOST_ROOT=/arrow_boost_dist'
# Ensure the target directory exists
@@ -66,7 +68,7 @@ for PYTHON_TUPLE in ${PYTHON_VERSIONS}; do
# Clear output directory
rm -rf dist/
echo "=== (${PYTHON}) Building wheel ==="
- PATH="$PATH:${CPYTHON_PATH}/bin" $PYTHON_INTERPRETER setup.py build_ext
--inplace --with-parquet --bundle-arrow-cpp
+ PATH="$PATH:${CPYTHON_PATH}/bin" $PYTHON_INTERPRETER setup.py build_ext
--inplace --with-parquet --bundle-arrow-cpp --bundle-boost
--boost-namespace=arrow_boost
PATH="$PATH:${CPYTHON_PATH}/bin" $PYTHON_INTERPRETER setup.py bdist_wheel
echo "=== (${PYTHON}) Test the existence of optional modules ==="
diff --git a/python/setup.py b/python/setup.py
index f3521f2..6f0b0fa 100644
--- a/python/setup.py
+++ b/python/setup.py
@@ -94,11 +94,15 @@ class build_ext(_build_ext):
description = "Build the C-extensions for arrow"
user_options = ([('extra-cmake-args=', None, 'extra arguments for CMake'),
('build-type=', None, 'build type (debug or release)'),
+ ('boost-namespace=', None,
+ 'namespace of boost (default: boost)'),
('with-parquet', None, 'build the Parquet extension'),
('with-static-parquet', None, 'link parquet statically'),
('with-static-boost', None, 'link boost statically'),
('with-plasma', None, 'build the Plasma extension'),
('with-orc', None, 'build the ORC extension'),
+ ('bundle-boost', None,
+ 'bundle the (shared) Boost libraries'),
('bundle-arrow-cpp', None,
'bundle the Arrow C++ libraries')] +
_build_ext.user_options)
@@ -107,6 +111,8 @@ class build_ext(_build_ext):
_build_ext.initialize_options(self)
self.extra_cmake_args = os.environ.get('PYARROW_CMAKE_OPTIONS', '')
self.build_type = os.environ.get('PYARROW_BUILD_TYPE', 'debug').lower()
+ self.boost_namespace = os.environ.get('PYARROW_BOOST_NAMESPACE',
+ 'boost')
self.cmake_cxxflags = os.environ.get('PYARROW_CXXFLAGS', '')
@@ -128,6 +134,10 @@ class build_ext(_build_ext):
os.environ.get('PYARROW_WITH_ORC', '0'))
self.bundle_arrow_cpp = strtobool(
os.environ.get('PYARROW_BUNDLE_ARROW_CPP', '0'))
+ # Default is True but this only is actually bundled when
+ # we also bundle arrow-cpp.
+ self.bundle_boost = strtobool(
+ os.environ.get('PYARROW_BUNDLE_BOOST', '1'))
CYTHON_MODULE_NAMES = [
'lib',
@@ -186,15 +196,20 @@ class build_ext(_build_ext):
if self.bundle_arrow_cpp:
cmake_options.append('-DPYARROW_BUNDLE_ARROW_CPP=ON')
+ cmake_options.append('-DPYARROW_BUNDLE_BOOST=ON')
# ARROW-1090: work around CMake rough edges
if 'ARROW_HOME' in os.environ and sys.platform != 'win32':
pkg_config = pjoin(os.environ['ARROW_HOME'], 'lib',
'pkgconfig')
os.environ['PKG_CONFIG_PATH'] = pkg_config
del os.environ['ARROW_HOME']
+ else:
+ cmake_options.append('-DPYARROW_BUNDLE_BOOST=OFF')
cmake_options.append('-DCMAKE_BUILD_TYPE={0}'
.format(self.build_type.lower()))
+ cmake_options.append('-DBoost_NAMESPACE={}'.format(
+ self.boost_namespace))
extra_cmake_args = shlex.split(self.extra_cmake_args)
if sys.platform != 'win32':
@@ -258,10 +273,16 @@ class build_ext(_build_ext):
move_shared_libs(build_prefix, build_lib, "plasma")
if self.with_parquet and not self.with_static_parquet:
move_shared_libs(build_prefix, build_lib, "parquet")
- if not self.with_static_boost:
- move_shared_libs(build_prefix, build_lib,
"arrow_boost_filesystem")
- move_shared_libs(build_prefix, build_lib,
"arrow_boost_system")
- move_shared_libs(build_prefix, build_lib,
"arrow_boost_regex")
+ if not self.with_static_boost and self.bundle_boost:
+ move_shared_libs(
+ build_prefix, build_lib,
+ "{}_filesystem".format(self.boost_namespace))
+ move_shared_libs(
+ build_prefix, build_lib,
+ "{}_system".format(self.boost_namespace))
+ move_shared_libs(
+ build_prefix, build_lib,
+ "{}_regex".format(self.boost_namespace))
print('Bundling includes: ' + pjoin(build_prefix, 'include'))
if os.path.exists(pjoin(build_lib, 'pyarrow', 'include')):
--
To stop receiving notification emails like this one, please contact
[email protected].