Gentoo Archives: gentoo-commits

From: Benda XU <heroxbd@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/sci:master commit in: dev-libs/boost/, dev-libs/boost/files/
Date: Wed, 20 Jan 2021 16:11:45
Message-Id: 1611159084.039ea03a7621f7dfc1f3160d5632f47441d38692.heroxbd@gentoo
1 commit: 039ea03a7621f7dfc1f3160d5632f47441d38692
2 Author: Benda Xu <heroxbd <AT> gentoo <DOT> org>
3 AuthorDate: Wed Jan 20 06:26:40 2021 +0000
4 Commit: Benda XU <heroxbd <AT> gentoo <DOT> org>
5 CommitDate: Wed Jan 20 16:11:24 2021 +0000
6 URL: https://gitweb.gentoo.org/proj/sci.git/commit/?id=039ea03a
7
8 dev-libs/boost: add back 1.72.* for MIOpen.
9
10 AMD MIOpen depends on boost 1.72.* which has been remove from ::gentoo.
11
12 Suggested-by: Yiyang Wu <xgreenlandforwyy <AT> gmail.com>
13 Package-Manager: Portage-3.0.12, Repoman-3.0.1
14 Signed-off-by: Benda Xu <heroxbd <AT> gentoo.org>
15
16 dev-libs/boost/boost-1.72.0-r2.ebuild | 358 +++++++++++++++++++++
17 .../files/boost-1.72.0-boost-mpi-python.patch | 50 +++
18 ...issing-serialization-split_member-include.patch | 29 ++
19 ...t-1.72.0-revert-cease-dependence-on-range.patch | 49 +++
20 dev-libs/boost/metadata.xml | 21 ++
21 5 files changed, 507 insertions(+)
22
23 diff --git a/dev-libs/boost/boost-1.72.0-r2.ebuild b/dev-libs/boost/boost-1.72.0-r2.ebuild
24 new file mode 100644
25 index 000000000..542a589dd
26 --- /dev/null
27 +++ b/dev-libs/boost/boost-1.72.0-r2.ebuild
28 @@ -0,0 +1,358 @@
29 +# Copyright 1999-2021 Gentoo Authors
30 +# Distributed under the terms of the GNU General Public License v2
31 +
32 +EAPI=7
33 +
34 +PYTHON_COMPAT=( python3_{7,8} )
35 +
36 +inherit flag-o-matic multiprocessing python-r1 toolchain-funcs multilib-minimal
37 +
38 +MY_PV="$(ver_rs 1- _)"
39 +MAJOR_V="$(ver_cut 1-2)"
40 +
41 +DESCRIPTION="Boost Libraries for C++"
42 +HOMEPAGE="https://www.boost.org/"
43 +SRC_URI="https://dl.bintray.com/boostorg/release/${PV}/source/boost_${MY_PV}.tar.bz2"
44 +
45 +LICENSE="Boost-1.0"
46 +SLOT="0/${PV}" # ${PV} instead ${MAJOR_V} due to bug 486122
47 +KEYWORDS="~amd64"
48 +IUSE="bzip2 context debug doc icu lzma +nls mpi numpy python static-libs +threads tools zlib zstd"
49 +REQUIRED_USE="
50 + mpi? ( threads )
51 + python? ( ${PYTHON_REQUIRED_USE} )"
52 +
53 +# the tests will never fail because these are not intended as sanity
54 +# tests at all. They are more a way for upstream to check their own code
55 +# on new compilers. Since they would either be completely unreliable
56 +# (failing for no good reason) or completely useless (never failing)
57 +# there is no point in having them in the ebuild to begin with.
58 +RESTRICT="test"
59 +
60 +RDEPEND="
61 + !app-admin/eselect-boost
62 + !dev-libs/boost-numpy
63 + bzip2? ( app-arch/bzip2:=[${MULTILIB_USEDEP}] )
64 + icu? ( >=dev-libs/icu-3.6:=[${MULTILIB_USEDEP}] )
65 + !icu? ( virtual/libiconv[${MULTILIB_USEDEP}] )
66 + lzma? ( app-arch/xz-utils:=[${MULTILIB_USEDEP}] )
67 + mpi? ( >=virtual/mpi-2.0-r4[${MULTILIB_USEDEP},cxx,threads] )
68 + python? (
69 + ${PYTHON_DEPS}
70 + numpy? ( $(python_gen_cond_dep 'dev-python/numpy[${PYTHON_USEDEP}]' -3) )
71 + )
72 + zlib? ( sys-libs/zlib:=[${MULTILIB_USEDEP}] )
73 + zstd? ( app-arch/zstd:=[${MULTILIB_USEDEP}] )"
74 +DEPEND="${RDEPEND}"
75 +BDEPEND="=dev-util/boost-build-${MAJOR_V}*"
76 +
77 +S="${WORKDIR}/${PN}_${MY_PV}"
78 +
79 +PATCHES=(
80 + "${FILESDIR}"/${PN}-1.71.0-disable_icu_rpath.patch
81 + "${FILESDIR}"/${PN}-1.71.0-context-x32.patch
82 + "${FILESDIR}"/${PN}-1.71.0-build-auto_index-tool.patch
83 + # Bug 703294, incomplete Boost.Serialization refactoring
84 + "${FILESDIR}"/${PN}-1.72.0-missing-serialization-split_member-include.patch
85 + # Bug 703036, per python-impl Boost.MPI
86 + "${FILESDIR}"/${PN}-1.72.0-boost-mpi-python.patch
87 + # Bug 704128, missing include on Boost.Ranges
88 + "${FILESDIR}"/${PN}-1.72.0-revert-cease-dependence-on-range.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 user_config_jam="${BUILD_DIR}"/user-config.jam
101 + if [[ -s ${user_config_jam} ]]; then
102 + einfo "${user_config_jam} already exists, skipping configuration"
103 + return
104 + else
105 + einfo "Creating configuration in ${user_config_jam}"
106 + fi
107 +
108 + local compiler compiler_version compiler_executable="$(tc-getCXX)"
109 + if [[ ${CHOST} == *-darwin* ]]; then
110 + compiler="darwin"
111 + compiler_version="$(gcc-fullversion)"
112 + else
113 + compiler="gcc"
114 + compiler_version="$(gcc-version)"
115 + fi
116 +
117 + if use mpi; then
118 + local mpi_configuration="using mpi ;"
119 + fi
120 +
121 + cat > "${user_config_jam}" <<- __EOF__ || die
122 + using ${compiler} : ${compiler_version} : ${compiler_executable} : <cflags>"${CFLAGS}" <cxxflags>"${CXXFLAGS}" <linkflags>"${LDFLAGS}" ;
123 + ${mpi_configuration}
124 + __EOF__
125 +
126 + if python_bindings_needed; then
127 + append_to_user_config() {
128 + local py_config
129 + if tc-is-cross-compiler; then
130 + py_config="using python : ${EPYTHON#python} : : ${ESYSROOT}/usr/include/${EPYTHON} : ${ESYSROOT}/usr/$(get_libdir) ;"
131 + else
132 + py_config="using python : ${EPYTHON#python} : ${PYTHON} : $(python_get_includedir) ;"
133 + fi
134 + echo "${py_config}" >> "${user_config_jam}" || die
135 + }
136 + python_foreach_impl append_to_user_config
137 + fi
138 +
139 + if python_bindings_needed && use numpy; then
140 + einfo "Enabling support for NumPy extensions in Boost.Python"
141 + else
142 + einfo "Disabling support for NumPy extensions in Boost.Python"
143 +
144 + # Boost.Build does not allow for disabling of numpy
145 + # extensions, thereby leading to automagic numpy
146 + # https://github.com/boostorg/python/issues/111#issuecomment-280447482
147 + sed \
148 + -e 's/\[ unless \[ python\.numpy \] : <build>no \]/<build>no/g' \
149 + -i "${BUILD_DIR}"/libs/python/build/Jamfile || die
150 + fi
151 +}
152 +
153 +pkg_setup() {
154 + # Bail out on unsupported build configuration, bug #456792
155 + if [[ -f "${EROOT}"/etc/site-config.jam ]]; then
156 + if ! grep -q 'gentoo\(debug\|release\)' "${EROOT}"/etc/site-config.jam; then
157 + eerror "You are using custom ${EROOT}/etc/site-config.jam without defined gentoorelease/gentoodebug targets."
158 + eerror "Boost can not be built in such configuration."
159 + eerror "Please, either remove this file or add targets from ${EROOT}/usr/share/boost-build/site-config.jam to it."
160 + die "Unsupported target in ${EROOT}/etc/site-config.jam"
161 + fi
162 + fi
163 +}
164 +
165 +src_prepare() {
166 + default
167 + multilib_copy_sources
168 +}
169 +
170 +ejam() {
171 + create_user-config.jam
172 +
173 + local b2_opts=( "--user-config=${BUILD_DIR}/user-config.jam" )
174 + if python_bindings_needed; then
175 + append_to_b2_opts() {
176 + b2_opts+=( python="${EPYTHON#python}" )
177 + }
178 + python_foreach_impl append_to_b2_opts
179 + else
180 + b2_opts+=( --without-python )
181 + fi
182 + b2_opts+=( "$@" )
183 +
184 + echo b2 "${b2_opts[@]}" >&2
185 + b2 "${b2_opts[@]}"
186 +}
187 +
188 +src_configure() {
189 + # Workaround for too many parallel processes requested, bug #506064
190 + [[ "$(makeopts_jobs)" -gt 64 ]] && MAKEOPTS="${MAKEOPTS} -j64"
191 +
192 + OPTIONS=(
193 + $(usex debug gentoodebug gentoorelease)
194 + "-j$(makeopts_jobs)"
195 + -q
196 + -d+2
197 + pch=off
198 + $(usex icu "-sICU_PATH=${ESYSROOT}/usr" '--disable-icu boost.locale.icu=off')
199 + $(usex mpi '' '--without-mpi')
200 + $(usex nls '' '--without-locale')
201 + $(usex context '' '--without-context --without-coroutine --without-fiber')
202 + $(usex threads '' '--without-thread')
203 + --without-stacktrace
204 + --boost-build="${BROOT}"/usr/share/boost-build
205 + --prefix="${ED}/usr"
206 + --layout=system
207 + # CMake has issues working with multiple python impls,
208 + # disable cmake config generation for the time being
209 + # https://github.com/boostorg/python/issues/262#issuecomment-483069294
210 + --no-cmake-config
211 + # building with threading=single is currently not possible
212 + # https://svn.boost.org/trac/boost/ticket/7105
213 + threading=multi
214 + link=$(usex static-libs shared,static shared)
215 + # this seems to be the only way to disable compression algorithms
216 + # https://www.boost.org/doc/libs/1_70_0/libs/iostreams/doc/installation.html#boost-build
217 + -sNO_BZIP2=$(usex bzip2 0 1)
218 + -sNO_LZMA=$(usex lzma 0 1)
219 + -sNO_ZLIB=$(usex zlib 0 1)
220 + -sNO_ZSTD=$(usex zstd 0 1)
221 + )
222 +
223 + if [[ ${CHOST} == *-darwin* ]]; then
224 + # We need to add the prefix, and in two cases this exceeds, so prepare
225 + # for the largest possible space allocation.
226 + append-ldflags -Wl,-headerpad_max_install_names
227 + fi
228 +
229 + # Use C++14 globally as of 1.62
230 + append-cxxflags -std=c++14
231 +}
232 +
233 +multilib_src_compile() {
234 + ejam "${OPTIONS[@]}" || die
235 +
236 + if tools_needed; then
237 + pushd tools >/dev/null || die
238 + ejam \
239 + "${OPTIONS[@]}" \
240 + || die "Building of Boost tools failed"
241 + popd >/dev/null || die
242 + fi
243 +}
244 +
245 +multilib_src_install_all() {
246 + if ! use numpy; then
247 + rm -r "${ED}"/usr/include/boost/python/numpy* || die
248 + fi
249 +
250 + if use python; then
251 + if use mpi; then
252 + move_mpi_py_into_sitedir() {
253 + local pyver="${EPYTHON#python}"
254 + python_moduleinto boost
255 + python_domodule "${ED}"/usr/$(get_libdir)/mpi${pyver/./}.so
256 + rm "${ED}"/usr/$(get_libdir)/mpi${pyver/./}* || die
257 + dosym mpi${pyver/./}.so $(python_get_sitedir)/boost/mpi.so
258 +
259 + # create a proper python package
260 + touch "${D}"/$(python_get_sitedir)/boost/__init__.py || die
261 + python_optimize
262 + }
263 + python_foreach_impl move_mpi_py_into_sitedir
264 + else
265 + rm -r "${ED}"/usr/include/boost/mpi/python* || die
266 + fi
267 + else
268 + rm -r "${ED}"/usr/include/boost/{python*,mpi/python*,parameter/aux_/python,parameter/python*} || die
269 + fi
270 +
271 + if ! use nls; then
272 + rm -r "${ED}"/usr/include/boost/locale || die
273 + fi
274 +
275 + if ! use context; then
276 + rm -r "${ED}"/usr/include/boost/context || die
277 + rm -r "${ED}"/usr/include/boost/coroutine{,2} || die
278 + rm "${ED}"/usr/include/boost/asio/spawn.hpp || die
279 + fi
280 +
281 + if use doc; then
282 + # find extraneous files that shouldn't be installed
283 + # as part of the documentation and remove them.
284 + find libs/*/* \( -iname 'test' -o -iname 'src' \) -exec rm -rf '{}' + || die
285 + find doc \( -name 'Jamfile.v2' -o -name 'build' -o -name '*.manifest' \) -exec rm -rf '{}' + || die
286 + find tools \( -name 'Jamfile.v2' -o -name 'src' -o -name '*.cpp' -o -name '*.hpp' \) -exec rm -rf '{}' + || die
287 +
288 + docinto html
289 + dodoc *.{htm,html,png,css}
290 + dodoc -r doc libs more tools
291 +
292 + # To avoid broken links
293 + dodoc LICENSE_1_0.txt
294 +
295 + dosym ../../../../include/boost /usr/share/doc/${PF}/html/boost
296 + fi
297 +}
298 +
299 +multilib_src_install() {
300 + ejam \
301 + "${OPTIONS[@]}" \
302 + --includedir="${ED}/usr/include" \
303 + --libdir="${ED}/usr/$(get_libdir)" \
304 + install || die "Installation of Boost libraries failed"
305 +
306 + pushd "${ED}/usr/$(get_libdir)" >/dev/null || die
307 +
308 + local ext=$(get_libname)
309 + if use threads; then
310 + local f
311 + for f in *${ext}; do
312 + dosym ${f} /usr/$(get_libdir)/${f/${ext}/-mt${ext}}
313 + done
314 + fi
315 +
316 + popd >/dev/null || die
317 +
318 + if tools_needed; then
319 + dobin dist/bin/*
320 +
321 + insinto /usr/share
322 + doins -r dist/share/boostbook
323 + fi
324 +
325 + # boost's build system truely sucks for not having a destdir. Because for
326 + # this reason we are forced to build with a prefix that includes the
327 + # DESTROOT, dynamic libraries on Darwin end messed up, referencing the
328 + # DESTROOT instread of the actual EPREFIX. There is no way out of here
329 + # but to do it the dirty way of manually setting the right install_names.
330 + if [[ ${CHOST} == *-darwin* ]]; then
331 + einfo "Working around completely broken build-system(tm)"
332 + local d
333 + for d in "${ED}"/usr/lib/*.dylib; do
334 + if [[ -f ${d} ]]; then
335 + # fix the "soname"
336 + ebegin " correcting install_name of ${d#${ED}}"
337 + install_name_tool -id "/${d#${D}}" "${d}"
338 + eend $?
339 + # fix references to other libs
340 + refs=$(otool -XL "${d}" | \
341 + sed -e '1d' -e 's/^\t//' | \
342 + grep "^libboost_" | \
343 + cut -f1 -d' ')
344 + local r
345 + for r in ${refs}; do
346 + ebegin " correcting reference to ${r}"
347 + install_name_tool -change \
348 + "${r}" \
349 + "${EPREFIX}/usr/lib/${r}" \
350 + "${d}"
351 + eend $?
352 + done
353 + fi
354 + done
355 + fi
356 +}
357 +
358 +pkg_preinst() {
359 + # Yai for having symlinks that are nigh-impossible to remove without
360 + # resorting to dirty hacks like these. Removes lingering symlinks
361 + # from the slotted versions.
362 + local symlink
363 + for symlink in "${EROOT}"/usr/include/boost "${EROOT}"/usr/share/boostbook; do
364 + if [[ -L ${symlink} ]]; then
365 + rm -f "${symlink}" || die
366 + fi
367 + done
368 +
369 + # some ancient installs still have boost cruft lying around
370 + # for unknown reasons, causing havoc for reverse dependencies
371 + # Bug: 607734
372 + rm -rf "${EROOT}"/usr/include/boost-1_[3-5]? || die
373 +}
374 +
375 +pkg_postinst() {
376 + elog "Boost.Regex is *extremely* ABI sensitive. If you get errors such as"
377 + elog
378 + elog " undefined reference to \`boost::re_detail_$(ver_cut 1)0$(ver_cut 2)00::cpp_regex_traits_implementation"
379 + elog " <char>::transform_primary[abi:cxx11](char const*, char const*) const'"
380 + elog
381 + elog "Then you need to recompile Boost and all its reverse dependencies"
382 + elog "using the same toolchain. In general, *every* change of the C++ toolchain"
383 + elog "requires a complete rebuild of the boost-dependent ecosystem."
384 + elog
385 + elog "See for instance https://bugs.gentoo.org/638138"
386 +}
387
388 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
389 new file mode 100644
390 index 000000000..8fb164a62
391 --- /dev/null
392 +++ b/dev-libs/boost/files/boost-1.72.0-boost-mpi-python.patch
393 @@ -0,0 +1,50 @@
394 +Tag Boost.MPI python impls properly to avoid name clash
395 +https://github.com/boostorg/mpi/issues/112
396 +
397 +--- a/boostcpp.jam
398 ++++ b/boostcpp.jam
399 +@@ -185,7 +185,7 @@
400 +
401 + rule tag ( name : type ? : property-set )
402 + {
403 +- if $(type) in STATIC_LIB SHARED_LIB IMPORT_LIB
404 ++ if $(type) in STATIC_LIB SHARED_LIB IMPORT_LIB PYTHON_EXTENSION
405 + {
406 + local args = $(.format-name-args) ;
407 + if $(layout) = versioned
408 +@@ -223,7 +223,7 @@
409 + {
410 + local result = $(name) ;
411 +
412 +- if $(type) in STATIC_LIB SHARED_LIB IMPORT_LIB
413 ++ if $(type) in STATIC_LIB SHARED_LIB IMPORT_LIB PYTHON_EXTENSION
414 + {
415 + # Add Python version suffix
416 +
417 +--- a/libs/mpi/build/Jamfile.v2
418 ++++ b/libs/mpi/build/Jamfile.v2
419 +@@ -58,13 +58,13 @@
420 + rule python-tag ( name : type ? : property-set )
421 + {
422 + local result = $(name) ;
423 +- if $(type) in STATIC_LIB SHARED_LIB IMPORT_LIB
424 ++ if $(type) in STATIC_LIB SHARED_LIB IMPORT_LIB PYTHON_EXTENSION
425 + {
426 + local version = [ $(property-set).get <python> ] ;
427 + local lib-suffix = [ version-suffix $(version) ] ;
428 + result = $(result)$(lib-suffix) ;
429 + }
430 +- if $(type) in STATIC_LIB SHARED_LIB IMPORT_LIB && $(PYTHON_ID)
431 ++ if $(type) in STATIC_LIB SHARED_LIB IMPORT_LIB PYTHON_EXTENSION && $(PYTHON_ID)
432 + {
433 + result = $(result)-$(PYTHON_ID) ;
434 + }
435 +@@ -168,6 +168,8 @@
436 + <link>shared:<define>BOOST_PYTHON_DYN_LINK=1
437 + <link>shared <runtime-link>shared
438 + <python-debugging>on:<define>BOOST_DEBUG_PYTHON
439 ++ -<tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag
440 ++ <tag>@$(__name__).python-tag
441 + ;
442 +
443 + mpi_python_libs = boost_mpi_python mpi ;
444
445 diff --git a/dev-libs/boost/files/boost-1.72.0-missing-serialization-split_member-include.patch b/dev-libs/boost/files/boost-1.72.0-missing-serialization-split_member-include.patch
446 new file mode 100644
447 index 000000000..0c9f72583
448 --- /dev/null
449 +++ b/dev-libs/boost/files/boost-1.72.0-missing-serialization-split_member-include.patch
450 @@ -0,0 +1,29 @@
451 +Missing #include, as the split_member.hpp include is not
452 +part of the nvp.hpp interface, and hence cannot be relied
453 +upon to be included transitively.
454 +
455 +Confirmed on
456 +https://github.com/boostorg/serialization/commit/c32a663c9963385430abc563f9c85f94d8da43a9#r36528430
457 +
458 +Bug: https://bugs.gentoo.org/703294
459 +
460 +--- a/boost/bimap/detail/map_view_iterator.hpp
461 ++++ b/boost/bimap/detail/map_view_iterator.hpp
462 +@@ -22,6 +22,7 @@
463 +
464 + #ifndef BOOST_BIMAP_DISABLE_SERIALIZATION
465 + #include <boost/serialization/nvp.hpp>
466 ++ #include <boost/serialization/split_member.hpp>
467 + #endif // BOOST_BIMAP_DISABLE_SERIALIZATION
468 +
469 + #include <boost/iterator/detail/enable_if.hpp>
470 +--- a/boost/bimap/detail/set_view_iterator.hpp
471 ++++ b/boost/bimap/detail/set_view_iterator.hpp
472 +@@ -22,6 +22,7 @@
473 +
474 + #ifndef BOOST_BIMAP_DISABLE_SERIALIZATION
475 + #include <boost/serialization/nvp.hpp>
476 ++ #include <boost/serialization/split_member.hpp>
477 + #endif // BOOST_BIMAP_DISABLE_SERIALIZATION
478 +
479 + #include <boost/iterator/detail/enable_if.hpp>
480
481 diff --git a/dev-libs/boost/files/boost-1.72.0-revert-cease-dependence-on-range.patch b/dev-libs/boost/files/boost-1.72.0-revert-cease-dependence-on-range.patch
482 new file mode 100644
483 index 000000000..a6002074a
484 --- /dev/null
485 +++ b/dev-libs/boost/files/boost-1.72.0-revert-cease-dependence-on-range.patch
486 @@ -0,0 +1,49 @@
487 +From 436e1dbe6fcd31523d261d18ad011392f1d6fbbc Mon Sep 17 00:00:00 2001
488 +From: Oliver Kowalke <oliver.kowalke@×××××.com>
489 +Date: Sun, 1 Dec 2019 20:40:28 +0100
490 +Subject: [PATCH] Revert "Cease dependence on Range"
491 +
492 +This reverts commit 0c556bb59241e682bbcd3f572815149c5a9b17db.
493 +
494 +see #44 (One test fails to compile after boostorg/coroutine submodule updated)
495 +---
496 + boost/coroutine/asymmetric_coroutine.hpp | 12 +++---------
497 + 1 file changed, 3 insertions(+), 9 deletions(-)
498 +
499 +diff --git a/boost/coroutine/asymmetric_coroutine.hpp b/boost/coroutine/asymmetric_coroutine.hpp
500 +index ea96981..640896f 100644
501 +--- a/boost/coroutine/asymmetric_coroutine.hpp
502 ++++ b/boost/coroutine/asymmetric_coroutine.hpp
503 +@@ -14,6 +14,7 @@
504 + #include <boost/assert.hpp>
505 + #include <boost/config.hpp>
506 + #include <boost/move/move.hpp>
507 ++#include <boost/range.hpp>
508 + #include <boost/throw_exception.hpp>
509 + #include <boost/utility/explicit_operator_bool.hpp>
510 +
511 +@@ -2354,19 +2355,12 @@ end( push_coroutine< R > & c)
512 +
513 + }
514 +
515 +-// forward declaration of Boost.Range traits to break dependency on it
516 +-template<typename C, typename Enabler>
517 +-struct range_mutable_iterator;
518 +-
519 +-template<typename C, typename Enabler>
520 +-struct range_const_iterator;
521 +-
522 + template< typename Arg >
523 +-struct range_mutable_iterator< coroutines::push_coroutine< Arg >, void >
524 ++struct range_mutable_iterator< coroutines::push_coroutine< Arg > >
525 + { typedef typename coroutines::push_coroutine< Arg >::iterator type; };
526 +
527 + template< typename R >
528 +-struct range_mutable_iterator< coroutines::pull_coroutine< R >, void >
529 ++struct range_mutable_iterator< coroutines::pull_coroutine< R > >
530 + { typedef typename coroutines::pull_coroutine< R >::iterator type; };
531 +
532 + }
533 +--
534 +2.24.1
535 +
536
537 diff --git a/dev-libs/boost/metadata.xml b/dev-libs/boost/metadata.xml
538 new file mode 100644
539 index 000000000..4f031402a
540 --- /dev/null
541 +++ b/dev-libs/boost/metadata.xml
542 @@ -0,0 +1,21 @@
543 +<?xml version="1.0" encoding="UTF-8"?>
544 +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
545 +<pkgmetadata>
546 + <maintainer type="project">
547 + <email>sci@g.o</email>
548 + <description>Gentoo Science Project</description>
549 + </maintainer>
550 + <use>
551 + <flag name="context">Build and install the Boost.Context (and Boost.Fiber) library and all other Boost libraries that depend on it</flag>
552 + <flag name="debug">Build and install only the debug version of the Boost libraries. Only enable this flag if you're developing against boost.</flag>
553 + <flag name="doc">Install the full API documentation documentation. This takes over 200MB of extra disk space.</flag>
554 + <flag name="nls">Build libboost_locale. This library requires compatible C library interfaces, which might not be provided by uClibc or other embedded libraries.</flag>
555 + <flag name="numpy">Optionally build NumPy extensions when Boost.Python is enabled</flag>
556 + <flag name="threads">Build multi-thread-compatible libraries instead of single-threaded only.</flag>
557 + <flag name="tools">Build and install the boost tools (bcp, quickbook, inspect, wave)</flag>
558 + </use>
559 + <upstream>
560 + <remote-id type="cpe">cpe:/a:boost:boost</remote-id>
561 + <remote-id type="sourceforge">boost</remote-id>
562 + </upstream>
563 +</pkgmetadata>