Gentoo Archives: gentoo-commits

From: Patrick McLean <chutzpah@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-libs/boost/files/, dev-libs/boost/
Date: Tue, 31 Jul 2018 22:27:32
Message-Id: 1533076031.224556f6e9363673a864d8fd7fe98d37beb8051e.chutzpah@gentoo
1 commit: 224556f6e9363673a864d8fd7fe98d37beb8051e
2 Author: Patrick McLean <chutzpah <AT> gentoo <DOT> org>
3 AuthorDate: Tue Jul 31 22:27:11 2018 +0000
4 Commit: Patrick McLean <chutzpah <AT> gentoo <DOT> org>
5 CommitDate: Tue Jul 31 22:27:11 2018 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=224556f6
7
8 dev-libs/boost: Unkeyworded version bump to 1.67.0 (bug #653878)
9
10 Bug: https://bugs.gentoo.org/653878
11 Package-Manager: Portage-2.3.44, Repoman-2.3.10
12
13 dev-libs/boost/Manifest | 1 +
14 dev-libs/boost/boost-1.67.0.ebuild | 419 +++++++++++++++++++++
15 dev-libs/boost/files/boost-1.67.0-fix-python.patch | 153 ++++++++
16 3 files changed, 573 insertions(+)
17
18 diff --git a/dev-libs/boost/Manifest b/dev-libs/boost/Manifest
19 index f5513e8c136..19a425758e8 100644
20 --- a/dev-libs/boost/Manifest
21 +++ b/dev-libs/boost/Manifest
22 @@ -1,3 +1,4 @@
23 DIST boost_1_63_0.tar.bz2 81984414 BLAKE2B 227c4432bd3ca0eb390048ec85047958fcb6ae289996501812cd8b13bf74bbe9b677d0110948265cab59a60deb36c4fc08440af74ac5a5219ea4eaea4fa6918f SHA512 c915c5f5778dee49b8e9d0a40f37f90f56fb1fdb1d8ce92d97bf48bc7bc462212487badfe4bbe30b06196d1149cfb221da12ac54e97499b0d4cb6466813bb4ad
24 DIST boost_1_65_0.tar.bz2 82597718 BLAKE2B 0080956d6ad2f14130ce4a4734b1bd1ce83d3651b226653689e02770baa83cf11811ef4e44948ff68a168d9ce5cbfaea4f758970df2b4e9faa2d410181885f5b SHA512 7142650fb8d61e3ef16ba066fc918e087f19e9bc2ad1d6a11fb10bf0d6b1b5ad05ab032f076a5233a1624b3669e952b2cc38b7dc074bbf53018e2970ee90fcdd
25 DIST boost_1_66_0.tar.bz2 85995778 BLAKE2B 9ab1fe396b10ab85d7e4084ec7abb8d785ecd892c8f51aea5a401cb565b111c256533364fe028da74ed376534889f43c5ccbdcd703cd236526ae66a064220765 SHA512 0f34075d35391d66876e5189a01a11880a79428e1b267456348ee148dba9dc3abdc74d568f1853be631d20b584b1c804b42443c266f7622164acfc10be3dab8b
26 +DIST boost_1_67_0.tar.bz2 87336566 BLAKE2B 85ea00fc2197b1bbfc35d69427c87f23ea43d7592f1c9ce66e2afcde8476bdec86f6debdac815b23de59f4665a8e0c7f1519ab66a31d39df629723bc45710058 SHA512 82bf33d7d2c3db109c9d1f12d40bc2d364c8c95262386f906ccd1a71cd71433bcc01829e968b4a13a5003cf0b50cbdf0b435a1d76530cea7bb05725c327411e8
27
28 diff --git a/dev-libs/boost/boost-1.67.0.ebuild b/dev-libs/boost/boost-1.67.0.ebuild
29 new file mode 100644
30 index 00000000000..7eb5c945be4
31 --- /dev/null
32 +++ b/dev-libs/boost/boost-1.67.0.ebuild
33 @@ -0,0 +1,419 @@
34 +# Copyright 1999-2018 Gentoo Foundation
35 +# Distributed under the terms of the GNU General Public License v2
36 +
37 +EAPI=7
38 +PYTHON_COMPAT=( python{2_7,3_{4,5,6,7}} )
39 +
40 +inherit eutils flag-o-matic multiprocessing python-r1 toolchain-funcs multilib-minimal
41 +
42 +MY_P="${PN}_$(ver_rs 1- _)"
43 +MAJOR_V="$(ver_cut 1-2)"
44 +
45 +DESCRIPTION="Boost Libraries for C++"
46 +HOMEPAGE="https://www.boost.org/"
47 +SRC_URI="https://downloads.sourceforge.net/project/boost/${PN}/${PV}/${MY_P}.tar.bz2"
48 +
49 +LICENSE="Boost-1.0"
50 +SLOT="0/${PV}" # ${PV} instead ${MAJOR_V} due to bug 486122
51 +#KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~ppc-aix ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x86-solaris ~x86-winnt"
52 +
53 +IUSE="context debug doc icu +nls mpi python static-libs +threads tools"
54 +
55 +RDEPEND="icu? ( >=dev-libs/icu-3.6:=[${MULTILIB_USEDEP}] )
56 + !icu? ( virtual/libiconv[${MULTILIB_USEDEP}] )
57 + mpi? ( >=virtual/mpi-2.0-r4[${MULTILIB_USEDEP},cxx,threads] )
58 + python? (
59 + ${PYTHON_DEPS}
60 + >dev-python/numpy-1.7[${PYTHON_USEDEP}]
61 + )
62 + app-arch/bzip2[${MULTILIB_USEDEP}]
63 + sys-libs/zlib[${MULTILIB_USEDEP}]
64 + !app-admin/eselect-boost"
65 +DEPEND="${RDEPEND}
66 + =dev-util/boost-build-${MAJOR_V}*"
67 +REQUIRED_USE="
68 + mpi? ( threads )
69 + python? ( ${PYTHON_REQUIRED_USE} )"
70 +
71 +S="${WORKDIR}/${MY_P}"
72 +
73 +# the tests will never fail because these are not intended as sanity
74 +# tests at all. They are more a way for upstream to check their own code
75 +# on new compilers. Since they would either be completely unreliable
76 +# (failing for no good reason) or completely useless (never failing)
77 +# there is no point in having them in the ebuild to begin with.
78 +RESTRICT="test"
79 +
80 +PATCHES=(
81 + "${FILESDIR}/${PN}-1.48.0-disable_icu_rpath.patch"
82 + "${FILESDIR}/${PN}-1.55.0-context-x32.patch"
83 + "${FILESDIR}/${PN}-1.56.0-build-auto_index-tool.patch"
84 + "${FILESDIR}/${PN}-1.67.0-fix-python.patch"
85 +)
86 +
87 +python_bindings_needed() {
88 + multilib_is_native_abi && use python
89 +}
90 +
91 +tools_needed() {
92 + multilib_is_native_abi && use tools
93 +}
94 +
95 +create_user-config.jam() {
96 + local compiler compiler_version compiler_executable
97 +
98 + if [[ ${CHOST} == *-darwin* ]]; then
99 + compiler="darwin"
100 + compiler_version="$(gcc-fullversion)"
101 + compiler_executable="$(tc-getCXX)"
102 + else
103 + compiler="gcc"
104 + compiler_version="$(gcc-version)"
105 + compiler_executable="$(tc-getCXX)"
106 + fi
107 + local mpi_configuration python_configuration
108 +
109 + if use mpi; then
110 + mpi_configuration="using mpi ;"
111 + fi
112 +
113 + if python_bindings_needed; then
114 + # boost expects libpython$(pyver) and doesn't allow overrides
115 + # and the build system is so creepy that it's easier just to
116 + # provide a symlink (linker's going to use SONAME anyway)
117 + # TODO: replace it with proper override one day
118 + ln -f -s "$(python_get_library_path)" "${T}/lib${EPYTHON}$(get_libname)" || die
119 +
120 + if tc-is-cross-compiler; then
121 + python_configuration="using python : ${EPYTHON#python} : : ${SYSROOT:-${EROOT}}/usr/include/${EPYTHON} : ${SYSROOT:-${EROOT}}/usr/$(get_libdir) ;"
122 + else
123 + # note: we need to provide version explicitly because of
124 + # a bug in the build system:
125 + # https://github.com/boostorg/build/pull/104
126 + python_configuration="using python : ${EPYTHON#python} : ${PYTHON} : $(python_get_includedir) : ${T} ;"
127 + fi
128 + fi
129 +
130 + cat > "${BOOST_ROOT}/user-config.jam" << __EOF__ || die
131 +using ${compiler} : ${compiler_version} : ${compiler_executable} : <cflags>"${CFLAGS}" <cxxflags>"${CXXFLAGS}" <linkflags>"${LDFLAGS}" ;
132 +${mpi_configuration}
133 +${python_configuration}
134 +__EOF__
135 +}
136 +
137 +pkg_setup() {
138 + # Bail out on unsupported build configuration, bug #456792
139 + if [[ -f "${EROOT%/}/etc/site-config.jam" ]]; then
140 + grep -q gentoorelease "${EROOT%/}/etc/site-config.jam" && grep -q gentoodebug "${EROOT%/}/etc/site-config.jam" ||
141 + (
142 + eerror "You are using custom ${EROOT%/}/etc/site-config.jam without defined gentoorelease/gentoodebug targets."
143 + eerror "Boost can not be built in such configuration."
144 + eerror "Please, either remove this file or add targets from ${EROOT%/}/usr/share/boost-build/site-config.jam to it."
145 + die
146 + )
147 + fi
148 +}
149 +
150 +src_prepare() {
151 + default
152 +
153 + # Do not try to build missing 'wave' tool, bug #522682
154 + # Upstream bugreport - https://svn.boost.org/trac/boost/ticket/10507
155 + sed -i -e 's:wave/build//wave::' tools/Jamfile.v2 || die
156 +
157 + multilib_copy_sources
158 +}
159 +
160 +ejam() {
161 + local b2_opts=(
162 + "--user-config=${BOOST_ROOT}/user-config.jam"
163 + "$@"
164 + )
165 + echo b2 "${b2_opts[@]}"
166 + b2 "${b2_opts[@]}"
167 +}
168 +
169 +src_configure() {
170 + # Workaround for too many parallel processes requested, bug #506064
171 + [[ "$(makeopts_jobs)" -gt 64 ]] && MAKEOPTS="${MAKEOPTS} -j64"
172 +
173 + OPTIONS=(
174 + $(usex debug gentoodebug gentoorelease)
175 + "-j$(makeopts_jobs)"
176 + -q
177 + -d+2
178 + pch=off
179 + $(usex icu "-sICU_PATH=${EPREFIX}/usr" '--disable-icu boost.locale.icu=off')
180 + $(usex mpi '' '--without-mpi')
181 + $(usex nls '' '--without-locale')
182 + $(usex context '' '--without-context --without-coroutine --without-fiber')
183 + $(usex threads '' '--without-thread')
184 + --boost-build="${EPREFIX}"/usr/share/boost-build
185 + --prefix="${ED%/}/usr"
186 + --layout=system
187 + # building with threading=single is currently not possible
188 + # https://svn.boost.org/trac/boost/ticket/7105
189 + threading=multi
190 + link=$(usex static-libs shared,static shared)
191 + $([[ ${CHOST} == *-winnt* ]] && printf -- '-sNO_BZIP2=1\n')
192 + )
193 +
194 + if [[ ${CHOST} == *-darwin* ]]; then
195 + # We need to add the prefix, and in two cases this exceeds, so prepare
196 + # for the largest possible space allocation.
197 + append-ldflags -Wl,-headerpad_max_install_names
198 + elif [[ ${CHOST} == *-winnt* ]]; then
199 + compiler=parity
200 + if [[ $($(tc-getCXX) -v) == *trunk* ]]; then
201 + compilerVersion=trunk
202 + else
203 + compilerVersion=$($(tc-getCXX) -v | sed '1q' \
204 + | sed -e 's,\([a-z]*\) \([0-9]\.[0-9]\.[0-9][^ \t]*\) .*,\2,') || die "sed failed"
205 + fi
206 + compilerExecutable=$(tc-getCXX)
207 + fi
208 +
209 + # bug 298489
210 + if use ppc || use ppc64; then
211 + [[ $(gcc-version) > 4.3 ]] && append-flags -mno-altivec
212 + fi
213 +
214 + # Use C++14 globally as of 1.62
215 + append-cxxflags -std=c++14
216 +}
217 +
218 +multilib_src_compile() {
219 + local -x BOOST_ROOT="${BUILD_DIR}"
220 + PYTHON_DIRS=""
221 + MPI_PYTHON_MODULE=""
222 +
223 + building() {
224 + create_user-config.jam
225 +
226 + local PYTHON_OPTIONS
227 + if python_bindings_needed; then
228 + PYTHON_OPTIONS=" --python-buildid=${EPYTHON#python}"
229 + else
230 + PYTHON_OPTIONS=" --without-python"
231 + fi
232 +
233 + ejam \
234 + "${OPTIONS[@]}" \
235 + ${PYTHON_OPTIONS} \
236 + || die "Building of Boost libraries failed"
237 +
238 + if python_bindings_needed; then
239 + if [[ -z "${PYTHON_DIRS}" ]]; then
240 + PYTHON_DIRS="$(find bin.v2/libs -name python | sort)"
241 + else
242 + if [[ "${PYTHON_DIRS}" != "$(find bin.v2/libs -name python | sort)" ]]; then
243 + die "Inconsistent structure of build directories"
244 + fi
245 + fi
246 +
247 + local dir
248 + for dir in ${PYTHON_DIRS}; do
249 + mv ${dir} ${dir}-${EPYTHON} \
250 + || die "Renaming of '${dir}' to '${dir}-${EPYTHON}' failed"
251 + done
252 +
253 + if use mpi; then
254 + if [[ -z "${MPI_PYTHON_MODULE}" ]]; then
255 + MPI_PYTHON_MODULE="$(find bin.v2/libs/mpi/build/*/gentoo* -name mpi.so)"
256 + if [[ "$(echo "${MPI_PYTHON_MODULE}" | wc -l)" -ne 1 ]]; then
257 + die "Multiple mpi.so files found"
258 + fi
259 + else
260 + if [[ "${MPI_PYTHON_MODULE}" != "$(find bin.v2/libs/mpi/build/*/gentoo* -name mpi.so)" ]]; then
261 + die "Inconsistent structure of build directories"
262 + fi
263 + fi
264 +
265 + mv stage/lib/mpi.so stage/lib/mpi.so-${EPYTHON} \
266 + || die "Renaming of 'stage/lib/mpi.so' to 'stage/lib/mpi.so-${EPYTHON}' failed"
267 + fi
268 + fi
269 + }
270 + if python_bindings_needed; then
271 + python_foreach_impl building
272 + else
273 + building
274 + fi
275 +
276 + if tools_needed; then
277 + pushd tools >/dev/null || die
278 +
279 + ejam \
280 + "${OPTIONS[@]}" \
281 + ${PYTHON_OPTIONS} \
282 + || die "Building of Boost tools failed"
283 + popd >/dev/null || die
284 + fi
285 +}
286 +
287 +multilib_src_install_all() {
288 + if ! use python; then
289 + rm -r "${ED%/}"/usr/include/boost/python* || die
290 + fi
291 +
292 + if ! use nls; then
293 + rm -r "${ED%/}"/usr/include/boost/locale || die
294 + fi
295 +
296 + if ! use context; then
297 + rm -r "${ED%/}"/usr/include/boost/context || die
298 + rm -r "${ED%/}"/usr/include/boost/coroutine{,2} || die
299 + rm "${ED%/}"/usr/include/boost/asio/spawn.hpp || die
300 + fi
301 +
302 + if use doc; then
303 + # find extraneous files that shouldn't be installed
304 + # as part of the documentation and remove them.
305 + find libs/*/* \( -iname 'test' -o -iname 'src' \) -exec rm -rf '{}' + || die
306 + find doc \( -name 'Jamfile.v2' -o -name 'build' -o -name '*.manifest' \) -exec rm -rf '{}' + || die
307 + find tools \( -name 'Jamfile.v2' -o -name 'src' -o -name '*.cpp' -o -name '*.hpp' \) -exec rm -rf '{}' + || die
308 +
309 + docinto html
310 + dodoc *.{htm,html,png,css}
311 + dodoc -r doc libs more tools
312 +
313 + # To avoid broken links
314 + dodoc LICENSE_1_0.txt
315 +
316 + dosym ../../../../include/boost /usr/share/doc/${PF}/html/boost
317 + fi
318 +}
319 +
320 +multilib_src_install() {
321 + local -x BOOST_ROOT="${BUILD_DIR}"
322 + installation() {
323 + create_user-config.jam
324 +
325 + local PYTHON_OPTIONS
326 + if python_bindings_needed; then
327 + local dir
328 + for dir in ${PYTHON_DIRS}; do
329 + cp -pr ${dir}-${EPYTHON} ${dir} \
330 + || die "Copying of '${dir}-${EPYTHON}' to '${dir}' failed"
331 + done
332 +
333 + if use mpi; then
334 + cp -p stage/lib/mpi.so-${EPYTHON} "${MPI_PYTHON_MODULE}" \
335 + || die "Copying of 'stage/lib/mpi.so-${EPYTHON}' to '${MPI_PYTHON_MODULE}' failed"
336 + cp -p stage/lib/mpi.so-${EPYTHON} stage/lib/mpi.so \
337 + || die "Copying of 'stage/lib/mpi.so-${EPYTHON}' to 'stage/lib/mpi.so' failed"
338 + fi
339 + PYTHON_OPTIONS=" --python-buildid=${EPYTHON#python}"
340 + else
341 + PYTHON_OPTIONS=" --without-python"
342 + fi
343 +
344 + ejam \
345 + "${OPTIONS[@]}" \
346 + ${PYTHON_OPTIONS} \
347 + --includedir="${ED%/}/usr/include" \
348 + --libdir="${ED%/}/usr/$(get_libdir)" \
349 + install || die "Installation of Boost libraries failed"
350 +
351 + if python_bindings_needed; then
352 + rm -r ${PYTHON_DIRS} || die
353 +
354 + # Move mpi.so Python module to Python site-packages directory.
355 + # https://svn.boost.org/trac/boost/ticket/2838
356 + if use mpi; then
357 + local moddir=$(python_get_sitedir)/boost
358 + # moddir already includes eprefix
359 + mkdir -p "${D}${moddir}" || die
360 + mv "${ED%/}/usr/$(get_libdir)/mpi.so" "${D}${moddir}" || die
361 + cat << EOF > "${D}${moddir}/__init__.py" || die
362 +import sys
363 +if sys.platform.startswith('linux'):
364 + import DLFCN
365 + flags = sys.getdlopenflags()
366 + sys.setdlopenflags(DLFCN.RTLD_NOW | DLFCN.RTLD_GLOBAL)
367 + from . import mpi
368 + sys.setdlopenflags(flags)
369 + del DLFCN, flags
370 +else:
371 + from . import mpi
372 +del sys
373 +EOF
374 + fi
375 +
376 + python_optimize
377 + fi
378 + }
379 + if python_bindings_needed; then
380 + python_foreach_impl installation
381 + else
382 + installation
383 + fi
384 +
385 + pushd "${ED%/}/usr/$(get_libdir)" >/dev/null || die
386 +
387 + local ext=$(get_libname)
388 + if use threads; then
389 + local f
390 + for f in *${ext}; do
391 + dosym ${f} /usr/$(get_libdir)/${f/${ext}/-mt${ext}}
392 + done
393 + fi
394 +
395 + popd >/dev/null || die
396 +
397 + if tools_needed; then
398 + dobin dist/bin/*
399 +
400 + insinto /usr/share
401 + doins -r dist/share/boostbook
402 + fi
403 +
404 + # boost's build system truely sucks for not having a destdir. Because for
405 + # this reason we are forced to build with a prefix that includes the
406 + # DESTROOT, dynamic libraries on Darwin end messed up, referencing the
407 + # DESTROOT instread of the actual EPREFIX. There is no way out of here
408 + # but to do it the dirty way of manually setting the right install_names.
409 + if [[ ${CHOST} == *-darwin* ]]; then
410 + einfo "Working around completely broken build-system(tm)"
411 + local d
412 + for d in "${ED%/}"/usr/lib/*.dylib; do
413 + if [[ -f ${d} ]]; then
414 + # fix the "soname"
415 + ebegin " correcting install_name of ${d#${ED}}"
416 + install_name_tool -id "/${d#${D}}" "${d}"
417 + eend $?
418 + # fix references to other libs
419 + refs=$(otool -XL "${d}" | \
420 + sed -e '1d' -e 's/^\t//' | \
421 + grep "^libboost_" | \
422 + cut -f1 -d' ')
423 + local r
424 + for r in ${refs}; do
425 + ebegin " correcting reference to ${r}"
426 + install_name_tool -change \
427 + "${r}" \
428 + "${EPREFIX}/usr/lib/${r}" \
429 + "${d}"
430 + eend $?
431 + done
432 + fi
433 + done
434 + fi
435 +}
436 +
437 +pkg_preinst() {
438 + # Yai for having symlinks that are nigh-impossible to remove without
439 + # resorting to dirty hacks like these. Removes lingering symlinks
440 + # from the slotted versions.
441 + local symlink
442 + for symlink in "${EROOT%/}/usr/include/boost" "${EROOT%/}/usr/share/boostbook"; do
443 + if [[ -L ${symlink} ]]; then
444 + rm -f "${symlink}" || die
445 + fi
446 + done
447 +
448 + # some ancient installs still have boost cruft lying around
449 + # for unknown reasons, causing havoc for reverse dependencies
450 + # Bug: 607734
451 + rm -rf "${EROOT%/}"/usr/include/boost-1_[3-5]? || die
452 +}
453
454 diff --git a/dev-libs/boost/files/boost-1.67.0-fix-python.patch b/dev-libs/boost/files/boost-1.67.0-fix-python.patch
455 new file mode 100644
456 index 00000000000..6f51152d12e
457 --- /dev/null
458 +++ b/dev-libs/boost/files/boost-1.67.0-fix-python.patch
459 @@ -0,0 +1,153 @@
460 +Python module needs to be built without these extra renames.
461 +MPI module needs to reference correct python
462 +
463 +~Index: boost_1_64_0/libs/mpi/build/Jamfile.v2
464 +~===================================================================
465 +~--- boost_1_64_0.orig/libs/mpi/build/Jamfile.v2
466 +~+++ boost_1_64_0/libs/mpi/build/Jamfile.v2
467 +~@@ -61,10 +61,10 @@ libraries += boost_mpi ;
468 +~ lib boost_mpi_python
469 +~ : # Sources
470 +~ python/serialize.cpp
471 +~+ /user-config//boost_python_alias
472 +~ : # Requirements
473 +~ <library>boost_mpi
474 +~ <library>/mpi//mpi [ mpi.extra-requirements ]
475 +~- <library>/boost/python//boost_python
476 +~ <link>shared:<define>BOOST_MPI_DYN_LINK=1
477 +~ <link>shared:<define>BOOST_MPI_PYTHON_DYN_LINK=1
478 +~ <link>shared:<define>BOOST_PYTHON_DYN_LINK=1
479 +~@@ -92,8 +92,8 @@ libraries += boost_mpi ;
480 +~ python/skeleton_and_content.cpp
481 +~ python/status.cpp
482 +~ python/py_timer.cpp
483 +~+ /user-config//boost_python_alias
484 +~ : # Requirements
485 +~- <library>/boost/python//boost_python
486 +~ <library>boost_mpi_python
487 +~ <library>boost_mpi
488 +~ <library>/mpi//mpi [ mpi.extra-requirements ]
489 +Index: boost_1_67_0/libs/mpi/build/Jamfile.v2
490 +===================================================================
491 +--- boost_1_67_0.orig/libs/mpi/build/Jamfile.v2
492 ++++ boost_1_67_0/libs/mpi/build/Jamfile.v2
493 +@@ -60,33 +60,13 @@ libraries += boost_mpi ;
494 +
495 + if [ python.configured ]
496 + {
497 +- py2-version = [ py-version 2 ] ;
498 +- py3-version = [ py-version 3 ] ;
499 +-
500 +- # These library names are synchronized with those defined by Boost.Python, see libs/python/build/Jamfile.
501 +- lib_boost_python(2) = boost_python ;
502 +- lib_boost_python(3) = boost_python3 ;
503 +-
504 +- lib_boost_python($(py2-version)) = $(lib_boost_python(2)) ;
505 +- lib_boost_python($(py3-version)) = $(lib_boost_python(3)) ;
506 +-
507 +- lib_boost_mpi_python(2) = boost_mpi_python ;
508 +- lib_boost_mpi_python(3) = boost_mpi_python3 ;
509 +-
510 +- lib_boost_mpi_python($(py2-version)) = $(lib_boost_mpi_python(2)) ;
511 +- lib_boost_mpi_python($(py3-version)) = $(lib_boost_mpi_python(3)) ;
512 +-
513 +- for local N in 2 3
514 +- {
515 +- if $(py$(N)-version)
516 +- {
517 +- lib $(lib_boost_mpi_python($(py$(N)-version)))
518 ++ lib boost_mpi_python
519 + : # Sources
520 + python/serialize.cpp
521 + : # Requirements
522 + <library>boost_mpi
523 + <library>/mpi//mpi [ mpi.extra-requirements ]
524 +- <library>/boost/python//$(lib_boost_python($(py$(N)-version)))
525 ++ <library>/boost/python//boost_python
526 + <link>shared:<define>BOOST_MPI_DYN_LINK=1
527 + <link>shared:<define>BOOST_MPI_PYTHON_DYN_LINK=1
528 + <link>shared:<define>BOOST_PYTHON_DYN_LINK=1
529 +@@ -94,12 +74,12 @@ libraries += boost_mpi ;
530 + -<tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag
531 + <tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).python-tag
532 + <python-debugging>on:<define>BOOST_DEBUG_PYTHON
533 +- <python>$(py$(N)-version)
534 + : # Default build
535 + <link>shared
536 + : # Usage requirements
537 + <library>/mpi//mpi [ mpi.extra-requirements ]
538 + ;
539 ++ libraries += boost_mpi_python ;
540 +
541 + python-extension mpi
542 + : # Sources
543 +@@ -116,8 +96,8 @@ libraries += boost_mpi ;
544 + python/status.cpp
545 + python/py_timer.cpp
546 + : # Requirements
547 +- <library>/boost/python//$(lib_boost_python($(py$(N)-version)))
548 +- <library>$(lib_boost_mpi_python($(py$(N)-version)))
549 ++ <library>/boost/python//boost_python
550 ++ <library>boost_mpi_python
551 + <library>boost_mpi
552 + <library>/mpi//mpi [ mpi.extra-requirements ]
553 + <link>shared:<define>BOOST_MPI_DYN_LINK=1
554 +@@ -125,16 +105,7 @@ libraries += boost_mpi ;
555 + <link>shared:<define>BOOST_PYTHON_DYN_LINK=1
556 + <link>shared <runtime-link>shared
557 + <python-debugging>on:<define>BOOST_DEBUG_PYTHON
558 +- <python>$(py$(N)-version)
559 + ;
560 +-
561 +- libraries += $(lib_boost_mpi_python($(py$(N)-version))) ;
562 +- }
563 +- else
564 +- {
565 +- alias $(lib_boost_mpi_python($(N))) ;
566 +- }
567 +- }
568 + }
569 + }
570 + else if ! ( --without-mpi in [ modules.peek : ARGV ] )
571 +Index: boost_1_67_0/libs/python/Jamfile
572 +===================================================================
573 +--- boost_1_67_0.orig/libs/python/Jamfile
574 ++++ boost_1_67_0/libs/python/Jamfile
575 +@@ -36,9 +36,10 @@ local rule split-version ( version )
576 + # For example, Boost.Python built for Python 2.7 uses the suffix "27"
577 + rule version-suffix ( version )
578 + {
579 +- local major-minor = [ split-version $(version) ] ;
580 +- local suffix = $(major-minor:J="") ;
581 +- return $(suffix) ;
582 ++ # local major-minor = [ split-version $(version) ] ;
583 ++ # local suffix = $(major-minor:J="") ;
584 ++ # return $(suffix) ;
585 ++ return "" ;
586 + }
587 +
588 +
589 +diff -ur boost_1_67_0.orig/boostcpp.jam boost_1_67_0/boostcpp.jam
590 +--- boost_1_67_0.orig/boostcpp.jam 2018-07-30 16:26:03.346187542 -0700
591 ++++ boost_1_67_0/boostcpp.jam 2018-07-30 16:26:18.839081472 -0700
592 +@@ -105,7 +105,7 @@
593 + python-id = [ option.get "python-buildid" ] ;
594 + if $(python-id)
595 + {
596 +- PYTHON_ID = [ regex.replace $(python-id) "[*\\/:.\"\']" _ ] ;
597 ++ PYTHON_ID = [ regex.replace $(python-id) "[*\\/:\"\']" _ ] ;
598 + }
599 +
600 +
601 +diff -ur boost_1_67_0.orig/libs/python/Jamfile boost_1_67_0/libs/python/Jamfile
602 +--- boost_1_67_0.orig/libs/python/Jamfile 2018-07-30 14:56:15.591366992 -0700
603 ++++ boost_1_67_0/libs/python/Jamfile 2018-07-30 16:26:31.662993677 -0700
604 +@@ -47,7 +47,7 @@
605 + python-id = [ option.get "python-buildid" ] ;
606 + if $(python-id)
607 + {
608 +- PYTHON_ID = [ regex.replace $(python-id) "[*\\/:.\"\']" _ ] ;
609 ++ PYTHON_ID = [ regex.replace $(python-id) "[*\\/:\"\']" _ ] ;
610 + }
611 +
612 + rule python-tag ( name : type ? : property-set )