summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Seifert <soap@gentoo.org>2019-12-23 00:12:28 +0100
committerDavid Seifert <soap@gentoo.org>2019-12-23 00:12:28 +0100
commitaf50ab943bce9e10c97e47ea5c7da87e11b51be9 (patch)
tree2e7371d70ed4a6db644a802d9969737746234508 /dev-libs/boost
parentdev-libs/libzip: arm64 stable (bug #703556) (diff)
downloadgentoo-af50ab943bce9e10c97e47ea5c7da87e11b51be9.tar.gz
gentoo-af50ab943bce9e10c97e47ea5c7da87e11b51be9.tar.bz2
gentoo-af50ab943bce9e10c97e47ea5c7da87e11b51be9.zip
dev-libs/boost: Fix Boost.MPI with python
* A big thanks goes out to @pdimov in helping me patch Boost.Build to produce per py-impl MPI variants. Closes: boostorg/mpi#112 Closes: https://bugs.gentoo.org/703036 Package-Manager: Portage-2.3.82, Repoman-2.3.20 Signed-off-by: David Seifert <soap@gentoo.org>
Diffstat (limited to 'dev-libs/boost')
-rw-r--r--dev-libs/boost/boost-1.72.0.ebuild21
-rw-r--r--dev-libs/boost/files/boost-1.72.0-boost-mpi-python.patch50
2 files changed, 70 insertions, 1 deletions
diff --git a/dev-libs/boost/boost-1.72.0.ebuild b/dev-libs/boost/boost-1.72.0.ebuild
index ca52c5105fe1..3417b408e432 100644
--- a/dev-libs/boost/boost-1.72.0.ebuild
+++ b/dev-libs/boost/boost-1.72.0.ebuild
@@ -56,6 +56,8 @@ PATCHES=(
"${FILESDIR}"/${PN}-1.71.0-build-auto_index-tool.patch
# Bug 703294, incomplete Boost.Serialization refactoring
"${FILESDIR}"/${PN}-1.72.0-missing-serialization-split_member-include.patch
+ # Bug 703036, per python-impl Boost.MPI
+ "${FILESDIR}"/${PN}-1.72.0-boost-mpi-python.patch
)
python_bindings_needed() {
@@ -217,7 +219,24 @@ multilib_src_install_all() {
rm -r "${ED}"/usr/include/boost/python/numpy* || die
fi
- if ! use python; then
+ if use python; then
+ if use mpi; then
+ move_mpi_py_into_sitedir() {
+ local pyver="${EPYTHON#python}"
+ python_moduleinto boost
+ python_domodule "${ED}"/usr/$(get_libdir)/mpi${pyver/./}.so
+ rm "${ED}"/usr/$(get_libdir)/mpi${pyver/./}* || die
+ dosym mpi${pyver/./}.so $(python_get_sitedir)/boost/mpi.so
+
+ # create a proper python package
+ touch "${D}"/$(python_get_sitedir)/boost/__init__.py || die
+ python_optimize
+ }
+ python_foreach_impl move_mpi_py_into_sitedir
+ else
+ rm -r "${ED}"/usr/include/boost/mpi/python* || die
+ fi
+ else
rm -r "${ED}"/usr/include/boost/{python*,mpi/python*,parameter/aux_/python,parameter/python*} || die
fi
diff --git a/dev-libs/boost/files/boost-1.72.0-boost-mpi-python.patch b/dev-libs/boost/files/boost-1.72.0-boost-mpi-python.patch
new file mode 100644
index 000000000000..8fb164a6278b
--- /dev/null
+++ b/dev-libs/boost/files/boost-1.72.0-boost-mpi-python.patch
@@ -0,0 +1,50 @@
+Tag Boost.MPI python impls properly to avoid name clash
+https://github.com/boostorg/mpi/issues/112
+
+--- a/boostcpp.jam
++++ b/boostcpp.jam
+@@ -185,7 +185,7 @@
+
+ rule tag ( name : type ? : property-set )
+ {
+- if $(type) in STATIC_LIB SHARED_LIB IMPORT_LIB
++ if $(type) in STATIC_LIB SHARED_LIB IMPORT_LIB PYTHON_EXTENSION
+ {
+ local args = $(.format-name-args) ;
+ if $(layout) = versioned
+@@ -223,7 +223,7 @@
+ {
+ local result = $(name) ;
+
+- if $(type) in STATIC_LIB SHARED_LIB IMPORT_LIB
++ if $(type) in STATIC_LIB SHARED_LIB IMPORT_LIB PYTHON_EXTENSION
+ {
+ # Add Python version suffix
+
+--- a/libs/mpi/build/Jamfile.v2
++++ b/libs/mpi/build/Jamfile.v2
+@@ -58,13 +58,13 @@
+ rule python-tag ( name : type ? : property-set )
+ {
+ local result = $(name) ;
+- if $(type) in STATIC_LIB SHARED_LIB IMPORT_LIB
++ if $(type) in STATIC_LIB SHARED_LIB IMPORT_LIB PYTHON_EXTENSION
+ {
+ local version = [ $(property-set).get <python> ] ;
+ local lib-suffix = [ version-suffix $(version) ] ;
+ result = $(result)$(lib-suffix) ;
+ }
+- if $(type) in STATIC_LIB SHARED_LIB IMPORT_LIB && $(PYTHON_ID)
++ if $(type) in STATIC_LIB SHARED_LIB IMPORT_LIB PYTHON_EXTENSION && $(PYTHON_ID)
+ {
+ result = $(result)-$(PYTHON_ID) ;
+ }
+@@ -168,6 +168,8 @@
+ <link>shared:<define>BOOST_PYTHON_DYN_LINK=1
+ <link>shared <runtime-link>shared
+ <python-debugging>on:<define>BOOST_DEBUG_PYTHON
++ -<tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag
++ <tag>@$(__name__).python-tag
+ ;
+
+ mpi_python_libs = boost_mpi_python mpi ;