commit:     af50ab943bce9e10c97e47ea5c7da87e11b51be9
Author:     David Seifert <soap <AT> gentoo <DOT> org>
AuthorDate: Sun Dec 22 23:12:28 2019 +0000
Commit:     David Seifert <soap <AT> gentoo <DOT> org>
CommitDate: Sun Dec 22 23:12:28 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=af50ab94

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 <AT> gentoo.org>

 dev-libs/boost/boost-1.72.0.ebuild                 | 21 ++++++++-
 .../files/boost-1.72.0-boost-mpi-python.patch      | 50 ++++++++++++++++++++++
 2 files changed, 70 insertions(+), 1 deletion(-)

diff --git a/dev-libs/boost/boost-1.72.0.ebuild 
b/dev-libs/boost/boost-1.72.0.ebuild
index ca52c5105fe..3417b408e43 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 00000000000..8fb164a6278
--- /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 ;

Reply via email to