Gentoo Archives: gentoo-commits

From: David Seifert <soap@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: profiles/, dev-libs/boost/, dev-libs/boost/files/, dev-util/boost-build/
Date: Wed, 28 Dec 2016 14:58:20
Message-Id: 1482937065.355b74b8b9a1db49b601de13b27395a015a2c3f3.soap@gentoo
1 commit: 355b74b8b9a1db49b601de13b27395a015a2c3f3
2 Author: David Seifert <soap <AT> gentoo <DOT> org>
3 AuthorDate: Tue Dec 27 13:25:44 2016 +0000
4 Commit: David Seifert <soap <AT> gentoo <DOT> org>
5 CommitDate: Wed Dec 28 14:57:45 2016 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=355b74b8
7
8 dev-libs/boost: Version bump to 1.63.0
9
10 Package-Manager: Portage-2.3.3, Repoman-2.3.1
11
12 dev-libs/boost/Manifest | 1 +
13 dev-libs/boost/boost-1.63.0.ebuild | 437 +++++++++++++++++++++
14 dev-libs/boost/files/boost-1.63.0-fix-python.patch | 127 ++++++
15 dev-util/boost-build/Manifest | 1 +
16 dev-util/boost-build/boost-build-1.63.0.ebuild | 143 +++++++
17 profiles/package.mask | 5 +
18 6 files changed, 714 insertions(+)
19
20 diff --git a/dev-libs/boost/Manifest b/dev-libs/boost/Manifest
21 index 1635eaa..39f9028 100644
22 --- a/dev-libs/boost/Manifest
23 +++ b/dev-libs/boost/Manifest
24 @@ -5,3 +5,4 @@ DIST boost_1_59_0.tar.bz2 70389425 SHA256 727a932322d94287b62abb1bd2d41723eec435
25 DIST boost_1_60_0.tar.bz2 76553944 SHA256 686affff989ac2488f79a97b9479efb9f2abae035b5ed4d8226de6857933fd3b SHA512 7c851b3fc2b322ff05d642d9cf03e7c30c5f04d5cf0579c99046b1ec708901c58a3d349031dfe24591f5b88c1e664b6a0d40abea6cce89abb52080c02eb725df WHIRLPOOL 828b0797a8b62150ecef5ee13f0e8b8d6b6a0e7365511ec9782d2d8f3a26ac38a98f10876c40d05ea46697c013b1f96f22b3a24c449372520c84bb725059fe48
26 DIST boost_1_61_0.tar.bz2 85202254 SHA256 a547bd06c2fd9a71ba1d169d9cf0339da7ebf4753849a8f7d6fdb8feee99b640 SHA512 a1c7338e2d2dbac8552ede7c554640d22cbb2fda7fbc325dc3cdcb51e769713626695426ffc158cbe0e1729dd9a7b5ad18af4800d74e24539e8d8564268c2b9d WHIRLPOOL 59b47e7ae9ae8443ecaab29b1104cfe3ebfa607d22afcc3fad4a87bdfd575939eba8130a80fd509da178eb3227a26cb74db51852716dc5df068d36fc4839372b
27 DIST boost_1_62_0.tar.bz2 84513338 SHA256 36c96b0f6155c98404091d8ceb48319a28279ca0333fba1ad8611eb90afb2ca0 SHA512 5385ae3d5255a433a704169ad454d8dc2b0b5bcae3fb23defd6570df4ff7d845cf9fcbeebccdc1c5db0eec9f82ee3d90040de9507c8167467c635d3b215463be WHIRLPOOL 49c4558d5e6d72084f083a76217e3d97b504f112d7e4d228eded72dc49fa7e675ba943a9fc52a3c27d296ee689aee27d4566796c6eae71cf647430285777c0fb
28 +DIST boost_1_63_0.tar.bz2 81984414 SHA256 beae2529f759f6b3bf3f4969a19c2e9d6f0c503edcb2de4a61d1428519fcb3b0 SHA512 c915c5f5778dee49b8e9d0a40f37f90f56fb1fdb1d8ce92d97bf48bc7bc462212487badfe4bbe30b06196d1149cfb221da12ac54e97499b0d4cb6466813bb4ad WHIRLPOOL 28c241785097272a1e0952e529eef082444e4ef35a8d738161e4a491a986d75359d3afe888b2ea91a4a81b6ec7a5772ebea337c9d09377b43f6eed66cac90378
29
30 diff --git a/dev-libs/boost/boost-1.63.0.ebuild b/dev-libs/boost/boost-1.63.0.ebuild
31 new file mode 100644
32 index 00000000..2512e46
33 --- /dev/null
34 +++ b/dev-libs/boost/boost-1.63.0.ebuild
35 @@ -0,0 +1,437 @@
36 +# Copyright 1999-2016 Gentoo Foundation
37 +# Distributed under the terms of the GNU General Public License v2
38 +# $Id$
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="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh \
55 + ~x86 ~ppc-aix ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos \
56 + ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x86-solaris ~x86-winnt"
57 +
58 +IUSE="context debug doc icu +nls mpi python static-libs +threads tools"
59 +
60 +RDEPEND="icu? ( >=dev-libs/icu-3.6:=[${MULTILIB_USEDEP}] )
61 + !icu? ( virtual/libiconv[${MULTILIB_USEDEP}] )
62 + mpi? ( >=virtual/mpi-2.0-r4[${MULTILIB_USEDEP},cxx,threads] )
63 + python? ( ${PYTHON_DEPS} )
64 + app-arch/bzip2[${MULTILIB_USEDEP}]
65 + sys-libs/zlib[${MULTILIB_USEDEP}]
66 + !app-admin/eselect-boost"
67 +DEPEND="${RDEPEND}
68 + =dev-util/boost-build-${MAJOR_V}*"
69 +REQUIRED_USE="
70 + mpi? ( threads )
71 + python? ( ${PYTHON_REQUIRED_USE} )"
72 +
73 +S="${WORKDIR}/${MY_P}"
74 +
75 +# the tests will never fail because these are not intended as sanity
76 +# tests at all. They are more a way for upstream to check their own code
77 +# on new compilers. Since they would either be completely unreliable
78 +# (failing for no good reason) or completely useless (never failing)
79 +# there is no point in having them in the ebuild to begin with.
80 +RESTRICT="test"
81 +
82 +PATCHES=(
83 + "${FILESDIR}/${PN}-1.48.0-disable_icu_rpath.patch"
84 + "${FILESDIR}/${PN}-1.55.0-context-x32.patch"
85 + "${FILESDIR}/${PN}-1.56.0-build-auto_index-tool.patch"
86 + "${FILESDIR}/${PN}-1.63.0-fix-python.patch"
87 +)
88 +
89 +python_bindings_needed() {
90 + multilib_is_native_abi && use python
91 +}
92 +
93 +tools_needed() {
94 + multilib_is_native_abi && use tools
95 +}
96 +
97 +create_user-config.jam() {
98 + local compiler compiler_version compiler_executable
99 +
100 + if [[ ${CHOST} == *-darwin* ]]; then
101 + compiler="darwin"
102 + compiler_version="$(gcc-fullversion)"
103 + compiler_executable="$(tc-getCXX)"
104 + else
105 + compiler="gcc"
106 + compiler_version="$(gcc-version)"
107 + compiler_executable="$(tc-getCXX)"
108 + fi
109 + local mpi_configuration python_configuration
110 +
111 + if use mpi; then
112 + mpi_configuration="using mpi ;"
113 + fi
114 +
115 + if python_bindings_needed; then
116 + # boost expects libpython$(pyver) and doesn't allow overrides
117 + # and the build system is so creepy that it's easier just to
118 + # provide a symlink (linker's going to use SONAME anyway)
119 + # TODO: replace it with proper override one day
120 + ln -f -s "$(python_get_library_path)" "${T}/lib${EPYTHON}$(get_libname)" || die
121 +
122 + if tc-is-cross-compiler; then
123 + python_configuration="using python : ${EPYTHON#python} : : ${SYSROOT:-${EROOT}}/usr/include/${EPYTHON} : ${SYSROOT:-${EROOT}}/usr/$(get_libdir) ;"
124 + else
125 + # note: we need to provide version explicitly because of
126 + # a bug in the build system:
127 + # https://github.com/boostorg/build/pull/104
128 + python_configuration="using python : ${EPYTHON#python} : ${PYTHON} : $(python_get_includedir) : ${T} ;"
129 + fi
130 + fi
131 +
132 + cat > "${BOOST_ROOT}/user-config.jam" << __EOF__ || die
133 +using ${compiler} : ${compiler_version} : ${compiler_executable} : <cflags>"${CFLAGS}" <cxxflags>"${CXXFLAGS}" <linkflags>"${LDFLAGS}" ;
134 +${mpi_configuration}
135 +${python_configuration}
136 +__EOF__
137 +}
138 +
139 +pkg_setup() {
140 + # Bail out on unsupported build configuration, bug #456792
141 + if [[ -f "${EROOT%/}/etc/site-config.jam" ]]; then
142 + grep -q gentoorelease "${EROOT%/}/etc/site-config.jam" && grep -q gentoodebug "${EROOT%/}/etc/site-config.jam" ||
143 + (
144 + eerror "You are using custom ${EROOT%/}/etc/site-config.jam without defined gentoorelease/gentoodebug targets."
145 + eerror "Boost can not be built in such configuration."
146 + eerror "Please, either remove this file or add targets from ${EROOT%/}/usr/share/boost-build/site-config.jam to it."
147 + die
148 + )
149 + fi
150 +}
151 +
152 +src_prepare() {
153 + default
154 +
155 + # Do not try to build missing 'wave' tool, bug #522682
156 + # Upstream bugreport - https://svn.boost.org/trac/boost/ticket/10507
157 + sed -i -e 's:wave/build//wave::' tools/Jamfile.v2 || die
158 +
159 + multilib_copy_sources
160 +}
161 +
162 +ejam() {
163 + local b2_opts=(
164 + "--user-config=${BOOST_ROOT}/user-config.jam"
165 + "$@"
166 + )
167 + echo b2 "${b2_opts[@]}"
168 + b2 "${b2_opts[@]}"
169 +}
170 +
171 +src_configure() {
172 + # Workaround for too many parallel processes requested, bug #506064
173 + [[ "$(makeopts_jobs)" -gt 64 ]] && MAKEOPTS="${MAKEOPTS} -j64"
174 +
175 + OPTIONS=(
176 + $(usex debug gentoodebug gentoorelease)
177 + "-j$(makeopts_jobs)"
178 + -q
179 + -d+2
180 + )
181 +
182 + if [[ ${CHOST} == *-darwin* ]]; then
183 + # We need to add the prefix, and in two cases this exceeds, so prepare
184 + # for the largest possible space allocation.
185 + append-ldflags -Wl,-headerpad_max_install_names
186 + elif [[ ${CHOST} == *-winnt* ]]; then
187 + compiler=parity
188 + if [[ $($(tc-getCXX) -v) == *trunk* ]]; then
189 + compilerVersion=trunk
190 + else
191 + compilerVersion=$($(tc-getCXX) -v | sed '1q' \
192 + | sed -e 's,\([a-z]*\) \([0-9]\.[0-9]\.[0-9][^ \t]*\) .*,\2,')
193 + fi
194 + compilerExecutable=$(tc-getCXX)
195 + fi
196 +
197 + # bug 298489
198 + if use ppc || use ppc64; then
199 + [[ $(gcc-version) > 4.3 ]] && append-flags -mno-altivec
200 + fi
201 +
202 + # Use C++14 globally as of 1.62
203 + append-cxxflags -std=c++14
204 +
205 + use icu && OPTIONS+=(
206 + "-sICU_PATH=${EPREFIX}/usr"
207 + )
208 + use icu || OPTIONS+=(
209 + --disable-icu
210 + boost.locale.icu=off
211 + )
212 + use mpi || OPTIONS+=(
213 + --without-mpi
214 + )
215 + use nls || OPTIONS+=(
216 + --without-locale
217 + )
218 + use context || OPTIONS+=(
219 + --without-context
220 + --without-coroutine
221 + --without-coroutine2
222 + )
223 + use threads || OPTIONS+=(
224 + --without-thread
225 + )
226 +
227 + OPTIONS+=(
228 + pch=off
229 + --boost-build="${EPREFIX}"/usr/share/boost-build
230 + --prefix="${ED%/}/usr"
231 + --layout=system
232 + # building with threading=single is currently not possible
233 + # https://svn.boost.org/trac/boost/ticket/7105
234 + threading=multi
235 + link=$(usex static-libs shared,static shared)
236 + )
237 +
238 + [[ ${CHOST} == *-winnt* ]] && OPTIONS+=(
239 + -sNO_BZIP2=1
240 + )
241 +}
242 +
243 +multilib_src_compile() {
244 + local -x BOOST_ROOT="${BUILD_DIR}"
245 + PYTHON_DIRS=""
246 + MPI_PYTHON_MODULE=""
247 +
248 + building() {
249 + create_user-config.jam
250 +
251 + local PYTHON_OPTIONS
252 + if python_bindings_needed; then
253 + PYTHON_OPTIONS=" --python-buildid=${EPYTHON#python}"
254 + else
255 + PYTHON_OPTIONS=" --without-python"
256 + fi
257 +
258 + ejam \
259 + "${OPTIONS[@]}" \
260 + ${PYTHON_OPTIONS} \
261 + || die "Building of Boost libraries failed"
262 +
263 + if python_bindings_needed; then
264 + if [[ -z "${PYTHON_DIRS}" ]]; then
265 + PYTHON_DIRS="$(find bin.v2/libs -name python | sort)"
266 + else
267 + if [[ "${PYTHON_DIRS}" != "$(find bin.v2/libs -name python | sort)" ]]; then
268 + die "Inconsistent structure of build directories"
269 + fi
270 + fi
271 +
272 + local dir
273 + for dir in ${PYTHON_DIRS}; do
274 + mv ${dir} ${dir}-${EPYTHON} \
275 + || die "Renaming of '${dir}' to '${dir}-${EPYTHON}' failed"
276 + done
277 +
278 + if use mpi; then
279 + if [[ -z "${MPI_PYTHON_MODULE}" ]]; then
280 + MPI_PYTHON_MODULE="$(find bin.v2/libs/mpi/build/*/gentoo* -name mpi.so)"
281 + if [[ "$(echo "${MPI_PYTHON_MODULE}" | wc -l)" -ne 1 ]]; then
282 + die "Multiple mpi.so files found"
283 + fi
284 + else
285 + if [[ "${MPI_PYTHON_MODULE}" != "$(find bin.v2/libs/mpi/build/*/gentoo* -name mpi.so)" ]]; then
286 + die "Inconsistent structure of build directories"
287 + fi
288 + fi
289 +
290 + mv stage/lib/mpi.so stage/lib/mpi.so-${EPYTHON} \
291 + || die "Renaming of 'stage/lib/mpi.so' to 'stage/lib/mpi.so-${EPYTHON}' failed"
292 + fi
293 + fi
294 + }
295 + if python_bindings_needed; then
296 + python_foreach_impl building
297 + else
298 + building
299 + fi
300 +
301 + if tools_needed; then
302 + pushd tools >/dev/null || die
303 +
304 + ejam \
305 + "${OPTIONS[@]}" \
306 + ${PYTHON_OPTIONS} \
307 + || die "Building of Boost tools failed"
308 + popd >/dev/null || die
309 + fi
310 +}
311 +
312 +multilib_src_install_all() {
313 + if ! use python; then
314 + rm -r "${ED%/}"/usr/include/boost/python* || die
315 + fi
316 +
317 + if ! use nls; then
318 + rm -r "${ED%/}"/usr/include/boost/locale || die
319 + fi
320 +
321 + if ! use context; then
322 + rm -r "${ED%/}"/usr/include/boost/context || die
323 + rm -r "${ED%/}"/usr/include/boost/coroutine{,2} || die
324 + rm "${ED%/}"/usr/include/boost/asio/spawn.hpp || die
325 + fi
326 +
327 + if use doc; then
328 + # find extraneous files that shouldn't be installed
329 + # as part of the documentation and remove them.
330 + find libs/*/* \( -iname 'test' -o -iname 'src' \) -exec rm -rf '{}' + || die
331 + find doc \( -name 'Jamfile.v2' -o -name 'build' -o -name '*.manifest' \) -exec rm -rf '{}' + || die
332 + find tools \( -name 'Jamfile.v2' -o -name 'src' -o -name '*.cpp' -o -name '*.hpp' \) -exec rm -rf '{}' + || die
333 +
334 + docinto html
335 + dodoc *.{htm,html,png,css}
336 + dodoc -r doc libs more tools
337 +
338 + # To avoid broken links
339 + dodoc LICENSE_1_0.txt
340 +
341 + dosym /usr/include/boost /usr/share/doc/${PF}/html/boost
342 + fi
343 +}
344 +
345 +multilib_src_install() {
346 + local -x BOOST_ROOT="${BUILD_DIR}"
347 + installation() {
348 + create_user-config.jam
349 +
350 + local PYTHON_OPTIONS
351 + if python_bindings_needed; then
352 + local dir
353 + for dir in ${PYTHON_DIRS}; do
354 + cp -pr ${dir}-${EPYTHON} ${dir} \
355 + || die "Copying of '${dir}-${EPYTHON}' to '${dir}' failed"
356 + done
357 +
358 + if use mpi; then
359 + cp -p stage/lib/mpi.so-${EPYTHON} "${MPI_PYTHON_MODULE}" \
360 + || die "Copying of 'stage/lib/mpi.so-${EPYTHON}' to '${MPI_PYTHON_MODULE}' failed"
361 + cp -p stage/lib/mpi.so-${EPYTHON} stage/lib/mpi.so \
362 + || die "Copying of 'stage/lib/mpi.so-${EPYTHON}' to 'stage/lib/mpi.so' failed"
363 + fi
364 + PYTHON_OPTIONS=" --python-buildid=${EPYTHON#python}"
365 + else
366 + PYTHON_OPTIONS=" --without-python"
367 + fi
368 +
369 + ejam \
370 + "${OPTIONS[@]}" \
371 + ${PYTHON_OPTIONS} \
372 + --includedir="${ED%/}/usr/include" \
373 + --libdir="${ED%/}/usr/$(get_libdir)" \
374 + install || die "Installation of Boost libraries failed"
375 +
376 + if python_bindings_needed; then
377 + rm -r ${PYTHON_DIRS} || die
378 +
379 + # Move mpi.so Python module to Python site-packages directory.
380 + # https://svn.boost.org/trac/boost/ticket/2838
381 + if use mpi; then
382 + local moddir=$(python_get_sitedir)/boost
383 + # moddir already includes eprefix
384 + mkdir -p "${D}${moddir}" || die
385 + mv "${ED%/}/usr/$(get_libdir)/mpi.so" "${D}${moddir}" || die
386 + cat << EOF > "${D}${moddir}/__init__.py" || die
387 +import sys
388 +if sys.platform.startswith('linux'):
389 + import DLFCN
390 + flags = sys.getdlopenflags()
391 + sys.setdlopenflags(DLFCN.RTLD_NOW | DLFCN.RTLD_GLOBAL)
392 + from . import mpi
393 + sys.setdlopenflags(flags)
394 + del DLFCN, flags
395 +else:
396 + from . import mpi
397 +del sys
398 +EOF
399 + fi
400 +
401 + python_optimize
402 + fi
403 + }
404 + if python_bindings_needed; then
405 + python_foreach_impl installation
406 + else
407 + installation
408 + fi
409 +
410 + pushd "${ED%/}/usr/$(get_libdir)" >/dev/null || die
411 +
412 + local ext=$(get_libname)
413 + if use threads; then
414 + local f
415 + for f in *${ext}; do
416 + dosym ${f} /usr/$(get_libdir)/${f/${ext}/-mt${ext}}
417 + done
418 + fi
419 +
420 + popd >/dev/null || die
421 +
422 + if tools_needed; then
423 + dobin dist/bin/*
424 +
425 + insinto /usr/share
426 + doins -r dist/share/boostbook
427 + fi
428 +
429 + # boost's build system truely sucks for not having a destdir. Because for
430 + # this reason we are forced to build with a prefix that includes the
431 + # DESTROOT, dynamic libraries on Darwin end messed up, referencing the
432 + # DESTROOT instread of the actual EPREFIX. There is no way out of here
433 + # but to do it the dirty way of manually setting the right install_names.
434 + if [[ ${CHOST} == *-darwin* ]]; then
435 + einfo "Working around completely broken build-system(tm)"
436 + local d
437 + for d in "${ED%/}"/usr/lib/*.dylib; do
438 + if [[ -f ${d} ]]; then
439 + # fix the "soname"
440 + ebegin " correcting install_name of ${d#${ED}}"
441 + install_name_tool -id "/${d#${D}}" "${d}"
442 + eend $?
443 + # fix references to other libs
444 + refs=$(otool -XL "${d}" | \
445 + sed -e '1d' -e 's/^\t//' | \
446 + grep "^libboost_" | \
447 + cut -f1 -d' ')
448 + local r
449 + for r in ${refs}; do
450 + ebegin " correcting reference to ${r}"
451 + install_name_tool -change \
452 + "${r}" \
453 + "${EPREFIX}/usr/lib/${r}" \
454 + "${d}"
455 + eend $?
456 + done
457 + fi
458 + done
459 + fi
460 +}
461 +
462 +pkg_preinst() {
463 + # Yai for having symlinks that are nigh-impossible to remove without
464 + # resorting to dirty hacks like these. Removes lingering symlinks
465 + # from the slotted versions.
466 + local symlink
467 + for symlink in "${EROOT%/}/usr/include/boost" "${EROOT%/}/usr/share/boostbook"; do
468 + if [[ -L ${symlink} ]]; then
469 + rm -f "${symlink}" || die
470 + fi
471 + done
472 +}
473
474 diff --git a/dev-libs/boost/files/boost-1.63.0-fix-python.patch b/dev-libs/boost/files/boost-1.63.0-fix-python.patch
475 new file mode 100644
476 index 00000000..abfefb6
477 --- /dev/null
478 +++ b/dev-libs/boost/files/boost-1.63.0-fix-python.patch
479 @@ -0,0 +1,127 @@
480 +--- a/libs/python/build/Jamfile
481 ++++ b/libs/python/build/Jamfile
482 +@@ -30,22 +30,6 @@
483 + ;
484 + }
485 +
486 +-rule find-py3-version
487 +-{
488 +- local versions = [ feature.values python ] ;
489 +- local py3ver ;
490 +- for local v in $(versions)
491 +- {
492 +- if $(v) >= 3.0
493 +- {
494 +- py3ver = $(v) ;
495 +- }
496 +- }
497 +- return $(py3ver) ;
498 +-}
499 +-
500 +-py3-version = [ find-py3-version ] ;
501 +-
502 + project boost/python
503 + : source-location ../src
504 + ;
505 +@@ -53,10 +37,16 @@
506 + rule cond ( test ? : yes * : no * ) { if $(test) { return $(yes) ; } else { return $(no) ; } }
507 + rule unless ( test ? : yes * : no * ) { if ! $(test) { return $(yes) ; } else { return $(no) ; } }
508 +
509 +-rule lib_boost_python ( is-py3 ? )
510 ++rule lib_boost_python
511 + {
512 ++ local python_major_version = [ MATCH "^([^.]+)" : [ feature.values python ] ] ;
513 ++ local python2 ;
514 ++ if $(python_major_version) = 2
515 ++ {
516 ++ python2 = true ;
517 ++ }
518 +
519 +- lib [ cond $(is-py3) : boost_python3 : boost_python ]
520 ++ lib boost_python
521 + : # sources
522 + numeric.cpp
523 + list.cpp
524 +@@ -90,20 +80,9 @@
525 + : # requirements
526 + <link>static:<define>BOOST_PYTHON_STATIC_LIB
527 + <define>BOOST_PYTHON_SOURCE
528 ++ [ cond $(python2) : <cxxflags>-fno-strict-aliasing ]
529 +
530 +- # On Windows, all code using Python has to link to the Python
531 +- # import library.
532 +- #
533 +- # On *nix we never link libboost_python to libpython. When
534 +- # extending Python, all Python symbols are provided by the
535 +- # Python interpreter executable. When embedding Python, the
536 +- # client executable is expected to explicitly link to
537 +- # /python//python (the target representing libpython) itself.
538 +- #
539 +- # python_for_extensions is a target defined by Boost.Build to
540 +- # provide the Python include paths, and on Windows, the Python
541 +- # import library, as usage requirements.
542 +- [ cond [ python.configured ] : <library>/python//python_for_extensions ]
543 ++ [ cond [ python.configured ] : <library>/python//python ]
544 +
545 + # we prevent building when there is no python available
546 + # as it's not possible anyway, and to cause dependents to
547 +@@ -112,7 +91,6 @@
548 + <dependency>config-warning
549 +
550 + <python-debugging>on:<define>BOOST_DEBUG_PYTHON
551 +- [ cond $(is-py3) : <python>$(py3-version) ]
552 +
553 + -<tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag
554 + <tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).python-tag
555 +@@ -125,51 +103,8 @@
556 + ;
557 + }
558 +
559 +-rule lib_boost_numpy ( is-py3 ? )
560 +-{
561 +- numpy-include = [ python.numpy-include ] ;
562 +- lib [ cond $(is-py3) : boost_numpy3 : boost_numpy ]
563 +- : # sources
564 +- numpy/dtype.cpp
565 +- numpy/matrix.cpp
566 +- numpy/ndarray.cpp
567 +- numpy/numpy.cpp
568 +- numpy/scalars.cpp
569 +- numpy/ufunc.cpp
570 +- : # requirements
571 +- [ cond [ python.numpy ] : <library>/python//python_for_extensions ]
572 +- [ unless [ python.numpy ] : <build>no ]
573 +- <include>$(numpy-include)
574 +- <library>boost_python
575 +- <python-debugging>on:<define>BOOST_DEBUG_PYTHON
576 +- [ cond $(is-py3) : <python>$(py3-version) ]
577 +-
578 +- -<tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag
579 +- <tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).python-tag
580 +-
581 +- : # default build
582 +- <link>shared
583 +- : # usage requirements
584 +- <python-debugging>on:<define>BOOST_DEBUG_PYTHON
585 +- ;
586 +-}
587 +-
588 + libraries = boost_python ;
589 +-libraries3 = boost_python3 ;
590 +-if [ python.numpy ]
591 +-{
592 +- libraries += boost_numpy ;
593 +- libraries3 += boost_numpy3 ;
594 +-}
595 +
596 + lib_boost_python ;
597 +-lib_boost_numpy ;
598 +-
599 +-if $(py3-version)
600 +-{
601 +- lib_boost_python yes ;
602 +- lib_boost_numpy yes ;
603 +- libraries += $(libraries3) ;
604 +-}
605 +
606 + boost-install $(libraries) ;
607
608 diff --git a/dev-util/boost-build/Manifest b/dev-util/boost-build/Manifest
609 index 1635eaa..39f9028 100644
610 --- a/dev-util/boost-build/Manifest
611 +++ b/dev-util/boost-build/Manifest
612 @@ -5,3 +5,4 @@ DIST boost_1_59_0.tar.bz2 70389425 SHA256 727a932322d94287b62abb1bd2d41723eec435
613 DIST boost_1_60_0.tar.bz2 76553944 SHA256 686affff989ac2488f79a97b9479efb9f2abae035b5ed4d8226de6857933fd3b SHA512 7c851b3fc2b322ff05d642d9cf03e7c30c5f04d5cf0579c99046b1ec708901c58a3d349031dfe24591f5b88c1e664b6a0d40abea6cce89abb52080c02eb725df WHIRLPOOL 828b0797a8b62150ecef5ee13f0e8b8d6b6a0e7365511ec9782d2d8f3a26ac38a98f10876c40d05ea46697c013b1f96f22b3a24c449372520c84bb725059fe48
614 DIST boost_1_61_0.tar.bz2 85202254 SHA256 a547bd06c2fd9a71ba1d169d9cf0339da7ebf4753849a8f7d6fdb8feee99b640 SHA512 a1c7338e2d2dbac8552ede7c554640d22cbb2fda7fbc325dc3cdcb51e769713626695426ffc158cbe0e1729dd9a7b5ad18af4800d74e24539e8d8564268c2b9d WHIRLPOOL 59b47e7ae9ae8443ecaab29b1104cfe3ebfa607d22afcc3fad4a87bdfd575939eba8130a80fd509da178eb3227a26cb74db51852716dc5df068d36fc4839372b
615 DIST boost_1_62_0.tar.bz2 84513338 SHA256 36c96b0f6155c98404091d8ceb48319a28279ca0333fba1ad8611eb90afb2ca0 SHA512 5385ae3d5255a433a704169ad454d8dc2b0b5bcae3fb23defd6570df4ff7d845cf9fcbeebccdc1c5db0eec9f82ee3d90040de9507c8167467c635d3b215463be WHIRLPOOL 49c4558d5e6d72084f083a76217e3d97b504f112d7e4d228eded72dc49fa7e675ba943a9fc52a3c27d296ee689aee27d4566796c6eae71cf647430285777c0fb
616 +DIST boost_1_63_0.tar.bz2 81984414 SHA256 beae2529f759f6b3bf3f4969a19c2e9d6f0c503edcb2de4a61d1428519fcb3b0 SHA512 c915c5f5778dee49b8e9d0a40f37f90f56fb1fdb1d8ce92d97bf48bc7bc462212487badfe4bbe30b06196d1149cfb221da12ac54e97499b0d4cb6466813bb4ad WHIRLPOOL 28c241785097272a1e0952e529eef082444e4ef35a8d738161e4a491a986d75359d3afe888b2ea91a4a81b6ec7a5772ebea337c9d09377b43f6eed66cac90378
617
618 diff --git a/dev-util/boost-build/boost-build-1.63.0.ebuild b/dev-util/boost-build/boost-build-1.63.0.ebuild
619 new file mode 100644
620 index 00000000..86e0638
621 --- /dev/null
622 +++ b/dev-util/boost-build/boost-build-1.63.0.ebuild
623 @@ -0,0 +1,143 @@
624 +# Copyright 1999-2016 Gentoo Foundation
625 +# Distributed under the terms of the GNU General Public License v2
626 +# $Id$
627 +
628 +EAPI=6
629 +
630 +RESTRICT="test"
631 +
632 +PYTHON_COMPAT=( python2_7 )
633 +inherit eutils flag-o-matic python-single-r1 toolchain-funcs versionator
634 +
635 +MY_PV="$(replace_all_version_separators _)"
636 +
637 +DESCRIPTION="A system for large project software construction, simple to use and powerful"
638 +HOMEPAGE="http://www.boost.org/doc/tools/build/index.html"
639 +SRC_URI="https://downloads.sourceforge.net/project/boost/boost/${PV}/boost_${MY_PV}.tar.bz2"
640 +
641 +LICENSE="Boost-1.0"
642 +SLOT="0"
643 +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh \
644 + ~sparc ~x86 ~ppc-aix ~amd64-fbsd ~x86-fbsd ~ia64-hpux ~x86-interix \
645 + ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris \
646 + ~sparc64-solaris ~x64-solaris ~x86-solaris"
647 +IUSE="examples python test"
648 +
649 +RDEPEND="python? ( ${PYTHON_DEPS} )
650 + !<dev-libs/boost-1.34.0
651 + !<=dev-util/boost-build-1.35.0-r1"
652 +DEPEND="${RDEPEND}
653 + test? ( sys-apps/diffutils
654 + ${PYTHON_DEPS} )"
655 +
656 +REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )
657 + test? ( ${PYTHON_REQUIRED_USE} )"
658 +
659 +S="${WORKDIR}/boost_${MY_PV}/tools/build/src"
660 +
661 +PATCHES=(
662 + "${FILESDIR}/${PN}-1.48.0-disable_python_rpath.patch"
663 + "${FILESDIR}/${PN}-1.50.0-respect-c_ld-flags.patch"
664 + "${FILESDIR}/${PN}-1.49.0-darwin-gentoo-toolchain.patch"
665 + "${FILESDIR}/${PN}-1.52.0-darwin-no-python-framework.patch"
666 + "${FILESDIR}/${PN}-1.54.0-support_dots_in_python-buildid.patch"
667 + "${FILESDIR}/${PN}-1.55.0-ppc-aix.patch"
668 +)
669 +
670 +pkg_setup() {
671 + if use python || use test; then
672 + python-single-r1_pkg_setup
673 + fi
674 +}
675 +
676 +src_unpack() {
677 + tar xjf "${DISTDIR}/${A}" boost_${MY_PV}/tools/build || die "unpacking tar failed"
678 +}
679 +
680 +src_prepare() {
681 + default
682 +
683 + pushd ../ >/dev/null || die
684 + eapply "${FILESDIR}/${PN}-1.54.0-fix-test.patch"
685 + popd >/dev/null || die
686 +
687 + # Remove stripping option
688 + # Fix python components build on multilib systems, bug #496446
689 + cd "${S}/engine" || die
690 + sed -i \
691 + -e 's|-s\b||' \
692 + -e "/libpython/s/lib ]/$(get_libdir) ]/" \
693 + build.jam || die "sed failed"
694 +
695 + # Force regeneration
696 + rm jambase.c || die
697 +
698 + # This patch allows us to fully control optimization
699 + # and stripping flags when bjam is used as build-system
700 + # We simply extend the optimization and debug-symbols feature
701 + # with empty dummies called 'none'
702 + cd "${S}" || die
703 + sed -i \
704 + -e 's/\(off speed space\)/\1 none/' \
705 + -e 's/\(debug-symbols : on off\)/\1 none/' \
706 + tools/builtin.jam || die "sed failed"
707 +}
708 +
709 +src_configure() {
710 + if use python; then
711 + # replace versions by user-selected one (TODO: fix this when slot-op
712 + # deps are available to always match the best version available)
713 + sed -i \
714 + -e "s|27 26 25 24 23 22|${EPYTHON#python}|" \
715 + engine/build.jam || die "sed failed"
716 + fi
717 +}
718 +
719 +src_compile() {
720 + cd engine || die
721 +
722 + local toolset
723 +
724 + if [[ ${CHOST} == *-darwin* ]]; then
725 + toolset=darwin
726 + else
727 + # Using boost's generic toolset here, which respects CC and CFLAGS
728 + toolset=cc
729 + fi
730 +
731 + CC=$(tc-getCC) ./build.sh ${toolset} -d+2 $(use_with python python "${EROOT%/}"/usr) || die "building bjam failed"
732 +}
733 +
734 +src_install() {
735 + dobin engine/bin.*/{bjam,b2}
736 +
737 + insinto /usr/share/boost-build
738 + doins -r "${FILESDIR}/site-config.jam" \
739 + ../boost-build.jam bootstrap.jam build-system.jam ../example/user-config.jam *.py \
740 + build kernel options tools util
741 +
742 + if ! use python; then
743 + find "${ED%/}/usr/share/boost-build" -iname "*.py" -delete || die "removing experimental python files failed"
744 + fi
745 +
746 + dodoc ../notes/{changes,release_procedure,build_dir_option,relative_source_paths}.txt
747 +
748 + if use examples; then
749 + docinto examples
750 + dodoc -r ../example/.
751 + docompress -x /usr/share/doc/${PF}/examples
752 + fi
753 +}
754 +
755 +src_test() {
756 + cd ../test || die
757 +
758 + export TMP="${T}"
759 +
760 + DO_DIFF="${PREFIX}/usr/bin/diff" ${PYTHON} test_all.py
761 +
762 + if [[ -s test_results.txt ]]; then
763 + eerror "At least one test failed: $(<test_results.txt)"
764 + die "tests failed"
765 + fi
766 +}
767
768 diff --git a/profiles/package.mask b/profiles/package.mask
769 index ebb3ba4..b52cc6b 100644
770 --- a/profiles/package.mask
771 +++ b/profiles/package.mask
772 @@ -31,6 +31,11 @@
773 #--- END OF EXAMPLES ---
774
775 # David Seifert <soap@g.o> (27 Dec 2016)
776 +# New release, masked to iron out bugs
777 +>=dev-util/boost-build-1.63.0
778 +>=dev-libs/boost-1.63.0
779 +
780 +# David Seifert <soap@g.o> (27 Dec 2016)
781 # Fails with more recent boost, dead upstream (bug #600548).
782 dev-cpp/luabind
783 games-rpg/valyriatear