Gentoo Archives: gentoo-commits

From: Andreas Sturmlechner <asturm@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: profiles/arch/hppa/, dev-libs/boost/files/, dev-libs/boost/
Date: Sun, 04 Feb 2018 17:41:55
Message-Id: 1517765936.006ef8ebc516129dea96a6ca1f8184beef6f3719.asturm@gentoo
1 commit: 006ef8ebc516129dea96a6ca1f8184beef6f3719
2 Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
3 AuthorDate: Sun Feb 4 17:37:15 2018 +0000
4 Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
5 CommitDate: Sun Feb 4 17:38:56 2018 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=006ef8eb
7
8 dev-libs/boost: Restore 1.62.0-r1 for hppa
9
10 Package-Manager: Portage-2.3.24, Repoman-2.3.6
11
12 dev-libs/boost/Manifest | 1 +
13 dev-libs/boost/boost-1.62.0-r1.ebuild | 444 +++++++++++++++++++++
14 .../boost-1.48.0-disable_libboost_python3.patch | 62 +++
15 .../boost-1.48.0-no_strict_aliasing_python2.patch | 23 ++
16 .../boost/files/boost-1.48.0-python_linking.patch | 24 ++
17 .../boost-1.51.0-respect_python-buildid.patch | 69 ++++
18 ...ost-1.51.0-support_dots_in_python-buildid.patch | 22 +
19 profiles/arch/hppa/package.use.stable.mask | 5 +
20 8 files changed, 650 insertions(+)
21
22 diff --git a/dev-libs/boost/Manifest b/dev-libs/boost/Manifest
23 index c81be6cd8e0..89aea014074 100644
24 --- a/dev-libs/boost/Manifest
25 +++ b/dev-libs/boost/Manifest
26 @@ -1,2 +1,3 @@
27 +DIST boost_1_62_0.tar.bz2 84513338 BLAKE2B 00f2ddf93d254183709a5e607d5cec5d135bdcddebac15fc3b1522e37b9e58d8df84f1977fee5b085309db58634861f2014e72822e755dd7789e8489fef19f7c SHA512 5385ae3d5255a433a704169ad454d8dc2b0b5bcae3fb23defd6570df4ff7d845cf9fcbeebccdc1c5db0eec9f82ee3d90040de9507c8167467c635d3b215463be
28 DIST boost_1_63_0.tar.bz2 81984414 BLAKE2B 227c4432bd3ca0eb390048ec85047958fcb6ae289996501812cd8b13bf74bbe9b677d0110948265cab59a60deb36c4fc08440af74ac5a5219ea4eaea4fa6918f SHA512 c915c5f5778dee49b8e9d0a40f37f90f56fb1fdb1d8ce92d97bf48bc7bc462212487badfe4bbe30b06196d1149cfb221da12ac54e97499b0d4cb6466813bb4ad
29 DIST boost_1_65_0.tar.bz2 82597718 BLAKE2B 0080956d6ad2f14130ce4a4734b1bd1ce83d3651b226653689e02770baa83cf11811ef4e44948ff68a168d9ce5cbfaea4f758970df2b4e9faa2d410181885f5b SHA512 7142650fb8d61e3ef16ba066fc918e087f19e9bc2ad1d6a11fb10bf0d6b1b5ad05ab032f076a5233a1624b3669e952b2cc38b7dc074bbf53018e2970ee90fcdd
30
31 diff --git a/dev-libs/boost/boost-1.62.0-r1.ebuild b/dev-libs/boost/boost-1.62.0-r1.ebuild
32 new file mode 100644
33 index 00000000000..7ee2ada110d
34 --- /dev/null
35 +++ b/dev-libs/boost/boost-1.62.0-r1.ebuild
36 @@ -0,0 +1,444 @@
37 +# Copyright 1999-2018 Gentoo Foundation
38 +# Distributed under the terms of the GNU General Public License v2
39 +
40 +EAPI=6
41 +PYTHON_COMPAT=( python{2_7,3_4,3_5} )
42 +
43 +inherit eutils flag-o-matic multiprocessing python-r1 toolchain-funcs versionator multilib-minimal
44 +
45 +MY_P="${PN}_$(replace_all_version_separators _)"
46 +MAJOR_V="$(get_version_component_range 1-2)"
47 +
48 +DESCRIPTION="Boost Libraries for C++"
49 +HOMEPAGE="http://www.boost.org/"
50 +SRC_URI="https://downloads.sourceforge.net/project/boost/${PN}/${PV}/${MY_P}.tar.bz2"
51 +
52 +LICENSE="Boost-1.0"
53 +SLOT="0/${PV}" # ${PV} instead ${MAJOR_V} due to bug 486122
54 +KEYWORDS="hppa"
55 +
56 +IUSE="context debug doc icu +nls mpi python static-libs +threads tools"
57 +
58 +RDEPEND="icu? ( >=dev-libs/icu-3.6:=[${MULTILIB_USEDEP}] )
59 + !icu? ( virtual/libiconv[${MULTILIB_USEDEP}] )
60 + mpi? ( >=virtual/mpi-2.0-r4[${MULTILIB_USEDEP},cxx,threads] )
61 + python? ( ${PYTHON_DEPS} )
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.51.0-respect_python-buildid.patch"
82 + "${FILESDIR}/${PN}-1.51.0-support_dots_in_python-buildid.patch"
83 + "${FILESDIR}/${PN}-1.48.0-no_strict_aliasing_python2.patch"
84 + "${FILESDIR}/${PN}-1.48.0-disable_libboost_python3.patch"
85 + "${FILESDIR}/${PN}-1.48.0-python_linking.patch"
86 + "${FILESDIR}/${PN}-1.48.0-disable_icu_rpath.patch"
87 + "${FILESDIR}/${PN}-1.55.0-context-x32.patch"
88 + "${FILESDIR}/${PN}-1.56.0-build-auto_index-tool.patch"
89 +)
90 +
91 +python_bindings_needed() {
92 + multilib_is_native_abi && use python
93 +}
94 +
95 +tools_needed() {
96 + multilib_is_native_abi && use tools
97 +}
98 +
99 +create_user-config.jam() {
100 + local compiler compiler_version compiler_executable
101 +
102 + if [[ ${CHOST} == *-darwin* ]]; then
103 + compiler="darwin"
104 + compiler_version="$(gcc-fullversion)"
105 + compiler_executable="$(tc-getCXX)"
106 + else
107 + compiler="gcc"
108 + compiler_version="$(gcc-version)"
109 + compiler_executable="$(tc-getCXX)"
110 + fi
111 + local mpi_configuration python_configuration
112 +
113 + if use mpi; then
114 + mpi_configuration="using mpi ;"
115 + fi
116 +
117 + if python_bindings_needed; then
118 + # boost expects libpython$(pyver) and doesn't allow overrides
119 + # and the build system is so creepy that it's easier just to
120 + # provide a symlink (linker's going to use SONAME anyway)
121 + # TODO: replace it with proper override one day
122 + ln -f -s "$(python_get_library_path)" "${T}/lib${EPYTHON}$(get_libname)" || die
123 +
124 + if tc-is-cross-compiler; then
125 + python_configuration="using python : ${EPYTHON#python} : : ${SYSROOT:-${EROOT}}/usr/include/${EPYTHON} : ${SYSROOT:-${EROOT}}/usr/$(get_libdir) ;"
126 + else
127 + # note: we need to provide version explicitly because of
128 + # a bug in the build system:
129 + # https://github.com/boostorg/build/pull/104
130 + python_configuration="using python : ${EPYTHON#python} : ${PYTHON} : $(python_get_includedir) : ${T} ;"
131 + fi
132 + fi
133 +
134 + cat > "${BOOST_ROOT}/user-config.jam" << __EOF__ || die
135 +using ${compiler} : ${compiler_version} : ${compiler_executable} : <cflags>"${CFLAGS}" <cxxflags>"${CXXFLAGS}" <linkflags>"${LDFLAGS}" ;
136 +${mpi_configuration}
137 +${python_configuration}
138 +__EOF__
139 +}
140 +
141 +pkg_setup() {
142 + # Bail out on unsupported build configuration, bug #456792
143 + if [[ -f "${EROOT%/}/etc/site-config.jam" ]]; then
144 + grep -q gentoorelease "${EROOT%/}/etc/site-config.jam" && grep -q gentoodebug "${EROOT%/}/etc/site-config.jam" ||
145 + (
146 + eerror "You are using custom ${EROOT%/}/etc/site-config.jam without defined gentoorelease/gentoodebug targets."
147 + eerror "Boost can not be built in such configuration."
148 + eerror "Please, either remove this file or add targets from ${EROOT%/}/usr/share/boost-build/site-config.jam to it."
149 + die
150 + )
151 + fi
152 +}
153 +
154 +src_prepare() {
155 + default
156 +
157 + # Do not try to build missing 'wave' tool, bug #522682
158 + # Upstream bugreport - https://svn.boost.org/trac/boost/ticket/10507
159 + sed -i -e 's:wave/build//wave::' tools/Jamfile.v2 || die
160 +
161 + multilib_copy_sources
162 +}
163 +
164 +ejam() {
165 + local b2_opts=(
166 + "--user-config=${BOOST_ROOT}/user-config.jam"
167 + "$@"
168 + )
169 + echo b2 "${b2_opts[@]}"
170 + b2 "${b2_opts[@]}"
171 +}
172 +
173 +src_configure() {
174 + # Workaround for too many parallel processes requested, bug #506064
175 + [[ "$(makeopts_jobs)" -gt 64 ]] && MAKEOPTS="${MAKEOPTS} -j64"
176 +
177 + OPTIONS=(
178 + $(usex debug gentoodebug gentoorelease)
179 + "-j$(makeopts_jobs)"
180 + -q
181 + -d+2
182 + )
183 +
184 + if [[ ${CHOST} == *-darwin* ]]; then
185 + # We need to add the prefix, and in two cases this exceeds, so prepare
186 + # for the largest possible space allocation.
187 + append-ldflags -Wl,-headerpad_max_install_names
188 + elif [[ ${CHOST} == *-winnt* ]]; then
189 + compiler=parity
190 + if [[ $($(tc-getCXX) -v) == *trunk* ]]; then
191 + compilerVersion=trunk
192 + else
193 + compilerVersion=$($(tc-getCXX) -v | sed '1q' \
194 + | sed -e 's,\([a-z]*\) \([0-9]\.[0-9]\.[0-9][^ \t]*\) .*,\2,')
195 + fi
196 + compilerExecutable=$(tc-getCXX)
197 + fi
198 +
199 + # bug 298489
200 + if use ppc || use ppc64; then
201 + [[ $(gcc-version) > 4.3 ]] && append-flags -mno-altivec
202 + fi
203 +
204 + # Use C++14 globally as of 1.62
205 + append-cxxflags -std=c++14
206 +
207 + use icu && OPTIONS+=(
208 + "-sICU_PATH=${EPREFIX}/usr"
209 + )
210 + use icu || OPTIONS+=(
211 + --disable-icu
212 + boost.locale.icu=off
213 + )
214 + use mpi || OPTIONS+=(
215 + --without-mpi
216 + )
217 + use nls || OPTIONS+=(
218 + --without-locale
219 + )
220 + use context || OPTIONS+=(
221 + --without-context
222 + --without-coroutine
223 + --without-coroutine2
224 + --without-fiber
225 + )
226 + use threads || OPTIONS+=(
227 + --without-thread
228 + )
229 +
230 + OPTIONS+=(
231 + pch=off
232 + --boost-build="${EPREFIX}"/usr/share/boost-build
233 + --prefix="${ED%/}/usr"
234 + --layout=system
235 + # building with threading=single is currently not possible
236 + # https://svn.boost.org/trac/boost/ticket/7105
237 + threading=multi
238 + link=$(usex static-libs shared,static shared)
239 + )
240 +
241 + [[ ${CHOST} == *-winnt* ]] && OPTIONS+=(
242 + -sNO_BZIP2=1
243 + )
244 +}
245 +
246 +multilib_src_compile() {
247 + local -x BOOST_ROOT="${BUILD_DIR}"
248 + PYTHON_DIRS=""
249 + MPI_PYTHON_MODULE=""
250 +
251 + building() {
252 + create_user-config.jam
253 +
254 + local PYTHON_OPTIONS
255 + if python_bindings_needed; then
256 + PYTHON_OPTIONS=" --python-buildid=${EPYTHON#python}"
257 + else
258 + PYTHON_OPTIONS=" --without-python"
259 + fi
260 +
261 + ejam \
262 + "${OPTIONS[@]}" \
263 + ${PYTHON_OPTIONS} \
264 + || die "Building of Boost libraries failed"
265 +
266 + if python_bindings_needed; then
267 + if [[ -z "${PYTHON_DIRS}" ]]; then
268 + PYTHON_DIRS="$(find bin.v2/libs -name python | sort)"
269 + else
270 + if [[ "${PYTHON_DIRS}" != "$(find bin.v2/libs -name python | sort)" ]]; then
271 + die "Inconsistent structure of build directories"
272 + fi
273 + fi
274 +
275 + local dir
276 + for dir in ${PYTHON_DIRS}; do
277 + mv ${dir} ${dir}-${EPYTHON} \
278 + || die "Renaming of '${dir}' to '${dir}-${EPYTHON}' failed"
279 + done
280 +
281 + if use mpi; then
282 + if [[ -z "${MPI_PYTHON_MODULE}" ]]; then
283 + MPI_PYTHON_MODULE="$(find bin.v2/libs/mpi/build/*/gentoo* -name mpi.so)"
284 + if [[ "$(echo "${MPI_PYTHON_MODULE}" | wc -l)" -ne 1 ]]; then
285 + die "Multiple mpi.so files found"
286 + fi
287 + else
288 + if [[ "${MPI_PYTHON_MODULE}" != "$(find bin.v2/libs/mpi/build/*/gentoo* -name mpi.so)" ]]; then
289 + die "Inconsistent structure of build directories"
290 + fi
291 + fi
292 +
293 + mv stage/lib/mpi.so stage/lib/mpi.so-${EPYTHON} \
294 + || die "Renaming of 'stage/lib/mpi.so' to 'stage/lib/mpi.so-${EPYTHON}' failed"
295 + fi
296 + fi
297 + }
298 + if python_bindings_needed; then
299 + python_foreach_impl building
300 + else
301 + building
302 + fi
303 +
304 + if tools_needed; then
305 + pushd tools >/dev/null || die
306 +
307 + ejam \
308 + "${OPTIONS[@]}" \
309 + ${PYTHON_OPTIONS} \
310 + || die "Building of Boost tools failed"
311 + popd >/dev/null || die
312 + fi
313 +}
314 +
315 +multilib_src_install_all() {
316 + if ! use python; then
317 + rm -r "${ED%/}"/usr/include/boost/python* || die
318 + fi
319 +
320 + if ! use nls; then
321 + rm -r "${ED%/}"/usr/include/boost/locale || die
322 + fi
323 +
324 + if ! use context; then
325 + rm -r "${ED%/}"/usr/include/boost/context || die
326 + rm -r "${ED%/}"/usr/include/boost/coroutine{,2} || die
327 + rm "${ED%/}"/usr/include/boost/asio/spawn.hpp || die
328 + fi
329 +
330 + if use doc; then
331 + # find extraneous files that shouldn't be installed
332 + # as part of the documentation and remove them.
333 + find libs/*/* \( -iname 'test' -o -iname 'src' \) -exec rm -rf '{}' + || die
334 + find doc \( -name 'Jamfile.v2' -o -name 'build' -o -name '*.manifest' \) -exec rm -rf '{}' + || die
335 + find tools \( -name 'Jamfile.v2' -o -name 'src' -o -name '*.cpp' -o -name '*.hpp' \) -exec rm -rf '{}' + || die
336 +
337 + docinto html
338 + dodoc *.{htm,html,png,css}
339 + dodoc -r doc libs more tools
340 +
341 + # To avoid broken links
342 + dodoc LICENSE_1_0.txt
343 +
344 + dosym /usr/include/boost /usr/share/doc/${PF}/html/boost
345 + fi
346 +}
347 +
348 +multilib_src_install() {
349 + local -x BOOST_ROOT="${BUILD_DIR}"
350 + installation() {
351 + create_user-config.jam
352 +
353 + local PYTHON_OPTIONS
354 + if python_bindings_needed; then
355 + local dir
356 + for dir in ${PYTHON_DIRS}; do
357 + cp -pr ${dir}-${EPYTHON} ${dir} \
358 + || die "Copying of '${dir}-${EPYTHON}' to '${dir}' failed"
359 + done
360 +
361 + if use mpi; then
362 + cp -p stage/lib/mpi.so-${EPYTHON} "${MPI_PYTHON_MODULE}" \
363 + || die "Copying of 'stage/lib/mpi.so-${EPYTHON}' to '${MPI_PYTHON_MODULE}' failed"
364 + cp -p stage/lib/mpi.so-${EPYTHON} stage/lib/mpi.so \
365 + || die "Copying of 'stage/lib/mpi.so-${EPYTHON}' to 'stage/lib/mpi.so' failed"
366 + fi
367 + PYTHON_OPTIONS=" --python-buildid=${EPYTHON#python}"
368 + else
369 + PYTHON_OPTIONS=" --without-python"
370 + fi
371 +
372 + ejam \
373 + "${OPTIONS[@]}" \
374 + ${PYTHON_OPTIONS} \
375 + --includedir="${ED%/}/usr/include" \
376 + --libdir="${ED%/}/usr/$(get_libdir)" \
377 + install || die "Installation of Boost libraries failed"
378 +
379 + if python_bindings_needed; then
380 + rm -r ${PYTHON_DIRS} || die
381 +
382 + # Move mpi.so Python module to Python site-packages directory.
383 + # https://svn.boost.org/trac/boost/ticket/2838
384 + if use mpi; then
385 + local moddir=$(python_get_sitedir)/boost
386 + # moddir already includes eprefix
387 + mkdir -p "${D}${moddir}" || die
388 + mv "${ED%/}/usr/$(get_libdir)/mpi.so" "${D}${moddir}" || die
389 + cat << EOF > "${D}${moddir}/__init__.py" || die
390 +import sys
391 +if sys.platform.startswith('linux'):
392 + import DLFCN
393 + flags = sys.getdlopenflags()
394 + sys.setdlopenflags(DLFCN.RTLD_NOW | DLFCN.RTLD_GLOBAL)
395 + from . import mpi
396 + sys.setdlopenflags(flags)
397 + del DLFCN, flags
398 +else:
399 + from . import mpi
400 +del sys
401 +EOF
402 + fi
403 +
404 + python_optimize
405 + fi
406 + }
407 + if python_bindings_needed; then
408 + python_foreach_impl installation
409 + else
410 + installation
411 + fi
412 +
413 + pushd "${ED%/}/usr/$(get_libdir)" >/dev/null || die
414 +
415 + local ext=$(get_libname)
416 + if use threads; then
417 + local f
418 + for f in *${ext}; do
419 + dosym ${f} /usr/$(get_libdir)/${f/${ext}/-mt${ext}}
420 + done
421 + fi
422 +
423 + popd >/dev/null || die
424 +
425 + if tools_needed; then
426 + dobin dist/bin/*
427 +
428 + insinto /usr/share
429 + doins -r dist/share/boostbook
430 + fi
431 +
432 + # boost's build system truely sucks for not having a destdir. Because for
433 + # this reason we are forced to build with a prefix that includes the
434 + # DESTROOT, dynamic libraries on Darwin end messed up, referencing the
435 + # DESTROOT instread of the actual EPREFIX. There is no way out of here
436 + # but to do it the dirty way of manually setting the right install_names.
437 + if [[ ${CHOST} == *-darwin* ]]; then
438 + einfo "Working around completely broken build-system(tm)"
439 + local d
440 + for d in "${ED%/}"/usr/lib/*.dylib; do
441 + if [[ -f ${d} ]]; then
442 + # fix the "soname"
443 + ebegin " correcting install_name of ${d#${ED}}"
444 + install_name_tool -id "/${d#${D}}" "${d}"
445 + eend $?
446 + # fix references to other libs
447 + refs=$(otool -XL "${d}" | \
448 + sed -e '1d' -e 's/^\t//' | \
449 + grep "^libboost_" | \
450 + cut -f1 -d' ')
451 + local r
452 + for r in ${refs}; do
453 + ebegin " correcting reference to ${r}"
454 + install_name_tool -change \
455 + "${r}" \
456 + "${EPREFIX}/usr/lib/${r}" \
457 + "${d}"
458 + eend $?
459 + done
460 + fi
461 + done
462 + fi
463 +}
464 +
465 +pkg_preinst() {
466 + # Yai for having symlinks that are nigh-impossible to remove without
467 + # resorting to dirty hacks like these. Removes lingering symlinks
468 + # from the slotted versions.
469 + local symlink
470 + for symlink in "${EROOT%/}/usr/include/boost" "${EROOT%/}/usr/share/boostbook"; do
471 + if [[ -L ${symlink} ]]; then
472 + rm -f "${symlink}" || die
473 + fi
474 + done
475 +
476 + # some ancient installs still have boost cruft lying around
477 + # for unknown reasons, causing havoc for reverse dependencies
478 + # Bug: 607734
479 + rm -rf "${EROOT%/}"/usr/include/boost-1_[3-5]? || die
480 +}
481
482 diff --git a/dev-libs/boost/files/boost-1.48.0-disable_libboost_python3.patch b/dev-libs/boost/files/boost-1.48.0-disable_libboost_python3.patch
483 new file mode 100644
484 index 00000000000..d4560400d7d
485 --- /dev/null
486 +++ b/dev-libs/boost/files/boost-1.48.0-disable_libboost_python3.patch
487 @@ -0,0 +1,62 @@
488 +--- a/libs/python/build/Jamfile.v2
489 ++++ b/libs/python/build/Jamfile.v2
490 +@@ -39,23 +39,6 @@
491 + PYTHON_ID = [ regex.replace $(python-id) "[*\\/:\"\']" "_" ] ;
492 + }
493 +
494 +-
495 +-rule find-py3-version
496 +-{
497 +- local versions = [ feature.values python ] ;
498 +- local py3ver ;
499 +- for local v in $(versions)
500 +- {
501 +- if $(v) >= 3.0
502 +- {
503 +- py3ver = $(v) ;
504 +- }
505 +- }
506 +- return $(py3ver) ;
507 +-}
508 +-
509 +-py3-version = [ find-py3-version ] ;
510 +-
511 + project boost/python
512 + : source-location ../src
513 + : requirements
514 +@@ -82,7 +65,7 @@
515 + rule cond ( test ? : yes * : no * ) { if $(test) { return $(yes) ; } else { return $(no) ; } }
516 + rule unless ( test ? : yes * : no * ) { if ! $(test) { return $(yes) ; } else { return $(no) ; } }
517 +
518 +-rule lib_boost_python ( is-py3 ? )
519 ++rule lib_boost_python
520 + {
521 +
522 + local python_major_version = [ MATCH "^([^.]+)" : [ feature.values python ] ] ;
523 +@@ -91,7 +74,7 @@
524 + {
525 + python2 = true ;
526 + }
527 +- lib [ cond $(is-py3) : boost_python3 : boost_python ]
528 ++ lib boost_python
529 + : # sources
530 + numeric.cpp
531 + list.cpp
532 +@@ -148,7 +131,6 @@
533 + <dependency>config-warning
534 +
535 + <python-debugging>on:<define>BOOST_DEBUG_PYTHON
536 +- [ cond $(is-py3) : <python>$(py3-version) ]
537 + : # default build
538 + <link>shared
539 + : # usage requirements
540 +@@ -160,9 +142,3 @@
541 +
542 + lib_boost_python ;
543 + boost-install boost_python ;
544 +-
545 +-if $(py3-version)
546 +-{
547 +- lib_boost_python yes ;
548 +- boost-install boost_python3 ;
549 +-}
550
551 diff --git a/dev-libs/boost/files/boost-1.48.0-no_strict_aliasing_python2.patch b/dev-libs/boost/files/boost-1.48.0-no_strict_aliasing_python2.patch
552 new file mode 100644
553 index 00000000000..cb26792f99c
554 --- /dev/null
555 +++ b/dev-libs/boost/files/boost-1.48.0-no_strict_aliasing_python2.patch
556 @@ -0,0 +1,23 @@
557 +--- a/libs/python/build/Jamfile.v2
558 ++++ b/libs/python/build/Jamfile.v2
559 +@@ -85,6 +85,12 @@
560 + rule lib_boost_python ( is-py3 ? )
561 + {
562 +
563 ++ local python_major_version = [ MATCH "^([^.]+)" : [ feature.values python ] ] ;
564 ++ local python2 ;
565 ++ if $(python_major_version) = 2
566 ++ {
567 ++ python2 = true ;
568 ++ }
569 + lib [ cond $(is-py3) : boost_python3 : boost_python ]
570 + : # sources
571 + numeric.cpp
572 +@@ -119,6 +125,7 @@
573 + : # requirements
574 + <link>static:<define>BOOST_PYTHON_STATIC_LIB
575 + <define>BOOST_PYTHON_SOURCE
576 ++ [ cond $(python2) : <cxxflags>-fno-strict-aliasing ]
577 +
578 + # On Windows, all code using Python has to link to the Python
579 + # import library.
580
581 diff --git a/dev-libs/boost/files/boost-1.48.0-python_linking.patch b/dev-libs/boost/files/boost-1.48.0-python_linking.patch
582 new file mode 100644
583 index 00000000000..330cbb11e88
584 --- /dev/null
585 +++ b/dev-libs/boost/files/boost-1.48.0-python_linking.patch
586 @@ -0,0 +1,24 @@
587 +--- a/libs/python/build/Jamfile.v2
588 ++++ b/libs/python/build/Jamfile.v2
589 +@@ -109,20 +109,7 @@
590 + <link>static:<define>BOOST_PYTHON_STATIC_LIB
591 + <define>BOOST_PYTHON_SOURCE
592 + [ cond $(python2) : <cxxflags>-fno-strict-aliasing ]
593 +-
594 +- # On Windows, all code using Python has to link to the Python
595 +- # import library.
596 +- #
597 +- # On *nix we never link libboost_python to libpython. When
598 +- # extending Python, all Python symbols are provided by the
599 +- # Python interpreter executable. When embedding Python, the
600 +- # client executable is expected to explicitly link to
601 +- # /python//python (the target representing libpython) itself.
602 +- #
603 +- # python_for_extensions is a target defined by Boost.Build to
604 +- # provide the Python include paths, and on Windows, the Python
605 +- # import library, as usage requirements.
606 +- [ cond [ python.configured ] : <library>/python//python_for_extensions ]
607 ++ [ cond [ python.configured ] : <library>/python//python ]
608 +
609 + # we prevent building when there is no python available
610 + # as it's not possible anyway, and to cause dependents to
611
612 diff --git a/dev-libs/boost/files/boost-1.51.0-respect_python-buildid.patch b/dev-libs/boost/files/boost-1.51.0-respect_python-buildid.patch
613 new file mode 100644
614 index 00000000000..17a681611b6
615 --- /dev/null
616 +++ b/dev-libs/boost/files/boost-1.51.0-respect_python-buildid.patch
617 @@ -0,0 +1,69 @@
618 +https://svn.boost.org/trac/boost/ticket/6286
619 +
620 +--- a/boostcpp.jam
621 ++++ b/boostcpp.jam
622 +@@ -99,13 +99,6 @@
623 + BUILD_ID = [ regex.replace $(build-id) "[*\\/:.\"\' ]" _ ] ;
624 + }
625 +
626 +-# Python build id (for Python libraries only).
627 +-python-id = [ option.get "python-buildid" ] ;
628 +-if $(python-id)
629 +-{
630 +- PYTHON_ID = [ regex.replace $(python-id) [*\\/:.\"\'] _ ] ;
631 +-}
632 +-
633 +
634 + ################################################################################
635 + #
636 +--- a/libs/mpi/build/Jamfile.v2
637 ++++ b/libs/mpi/build/Jamfile.v2
638 +@@ -8,6 +8,8 @@
639 + # Authors: Douglas Gregor
640 + # Andrew Lumsdaine
641 +
642 ++import option ;
643 ++import regex ;
644 + import mpi ;
645 + import indirect ;
646 + import python ;
647 +@@ -24,6 +26,13 @@
648 + <tag>@$(__name__).tag
649 + ;
650 +
651 ++# Python build id (for Python libraries only).
652 ++python-id = [ option.get "python-buildid" ] ;
653 ++if $(python-id)
654 ++{
655 ++ PYTHON_ID = [ regex.replace $(python-id) [*\\/:.\"\'] _ ] ;
656 ++}
657 ++
658 + rule tag ( name : type ? : property-set )
659 + {
660 + local result = $(name) ;
661 +--- a/libs/python/build/Jamfile.v2
662 ++++ b/libs/python/build/Jamfile.v2
663 +@@ -2,6 +2,8 @@
664 + # Software License, Version 1.0. (See accompanying
665 + # file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
666 +
667 ++import option ;
668 ++import regex ;
669 + import os ;
670 + import indirect ;
671 + import modules ;
672 +@@ -30,6 +32,14 @@
673 + ;
674 + }
675 +
676 ++# Python build id (for Python libraries only).
677 ++python-id = [ option.get "python-buildid" ] ;
678 ++if $(python-id)
679 ++{
680 ++ PYTHON_ID = [ regex.replace $(python-id) [*\\/:.\"\'] _ ] ;
681 ++}
682 ++
683 ++
684 + rule find-py3-version
685 + {
686 + local versions = [ feature.values python ] ;
687
688 diff --git a/dev-libs/boost/files/boost-1.51.0-support_dots_in_python-buildid.patch b/dev-libs/boost/files/boost-1.51.0-support_dots_in_python-buildid.patch
689 new file mode 100644
690 index 00000000000..a8912eb5e04
691 --- /dev/null
692 +++ b/dev-libs/boost/files/boost-1.51.0-support_dots_in_python-buildid.patch
693 @@ -0,0 +1,22 @@
694 +--- a/libs/mpi/build/Jamfile.v2
695 ++++ b/libs/mpi/build/Jamfile.v2
696 +@@ -30,7 +30,7 @@
697 + python-id = [ option.get "python-buildid" ] ;
698 + if $(python-id)
699 + {
700 +- PYTHON_ID = [ regex.replace $(python-id) [*\\/:.\"\'] _ ] ;
701 ++ PYTHON_ID = [ regex.replace $(python-id) [*\\/:\"\'] _ ] ;
702 + }
703 +
704 + rule tag ( name : type ? : property-set )
705 +--- a/libs/python/build/Jamfile.v2
706 ++++ b/libs/python/build/Jamfile.v2
707 +@@ -36,7 +36,7 @@
708 + python-id = [ option.get "python-buildid" ] ;
709 + if $(python-id)
710 + {
711 +- PYTHON_ID = [ regex.replace $(python-id) [*\\/:.\"\'] _ ] ;
712 ++ PYTHON_ID = [ regex.replace $(python-id) [*\\/:\"\'] _ ] ;
713 + }
714 +
715 +
716
717 diff --git a/profiles/arch/hppa/package.use.stable.mask b/profiles/arch/hppa/package.use.stable.mask
718 index 175acfb2e8c..9095c39e78b 100644
719 --- a/profiles/arch/hppa/package.use.stable.mask
720 +++ b/profiles/arch/hppa/package.use.stable.mask
721 @@ -49,6 +49,11 @@ net-print/cups-filters pdf
722 # MPI does not have stable keywords on hppa
723 sci-libs/fftw mpi
724
725 +# Andreas Sturmlechner <asturm@g.o> (03 Sep 2017)
726 +# Mask mpi support so Boost stabilization can go ahead
727 +# Boost 1.63 (bug 624662), Boost 1.62 (bug 590244)
728 +dev-libs/boost mpi
729 +
730 # Andreas Sturmlechner <asturm@g.o> (19 Aug 2017)
731 # Mask net-libs/libssh rdeps for stabilisation timeout
732 # (bug 618916)