summaryrefslogtreecommitdiff
path: root/dev-libs/boost
diff options
context:
space:
mode:
authorroot <root@alpha.trunkmasters.com>2026-06-12 19:09:37 -0500
committerroot <root@alpha.trunkmasters.com>2026-06-12 19:09:37 -0500
commitb590c8d7572b727d565cc0b8ff660d43569845de (patch)
tree06f7a4102ea4e845df8b66660f252920d52952f9 /dev-libs/boost
parent24f9cbfc4c34fdb6a6e03311674414e881ceab47 (diff)
downloadbaldeagleos-repo-b590c8d7572b727d565cc0b8ff660d43569845de.tar.gz
baldeagleos-repo-b590c8d7572b727d565cc0b8ff660d43569845de.tar.xz
baldeagleos-repo-b590c8d7572b727d565cc0b8ff660d43569845de.zip
Adding metadata
Diffstat (limited to 'dev-libs/boost')
-rw-r--r--dev-libs/boost/Manifest2
-rw-r--r--dev-libs/boost/boost-1.90.0-r1.ebuild477
-rw-r--r--dev-libs/boost/boost-1.91.0.ebuild483
-rw-r--r--dev-libs/boost/files/boost-1.88.0-algorithm-reverse_copy.patch24
-rw-r--r--dev-libs/boost/files/boost-1.88.0-beast-network-sandbox.patch33
-rw-r--r--dev-libs/boost/files/boost-1.88.0-bind-no-Werror.patch28
-rw-r--r--dev-libs/boost/files/boost-1.88.0-build-auto_index-tool.patch13
-rw-r--r--dev-libs/boost/files/boost-1.88.0-disable_icu_rpath.patch19
-rw-r--r--dev-libs/boost/files/boost-1.88.0-range-any_iterator.patch27
-rw-r--r--dev-libs/boost/files/boost-1.88.0-system-crashing-test.patch16
-rw-r--r--dev-libs/boost/files/boost-1.88.0-yap-cstdint.patch22
-rw-r--r--dev-libs/boost/files/boost-1.89.0-dll-no-lto.patch16
-rw-r--r--dev-libs/boost/files/boost-1.89.0-graph-remove-system-dependency.patch16
-rw-r--r--dev-libs/boost/files/boost-1.89.0-predef-include-path.patch13
-rw-r--r--dev-libs/boost/files/boost-1.89.0-python-exclude-broken-tests.patch28
-rw-r--r--dev-libs/boost/files/boost-1.89.0-unordered-no-tbb.patch14
-rw-r--r--dev-libs/boost/files/boost-1.90.0-msm-std.patch27
-rw-r--r--dev-libs/boost/files/boost-1.90.0-unsigned-char-EOF.patch41
-rw-r--r--dev-libs/boost/files/boost-1.91.0-spirit-test.patch16
-rw-r--r--dev-libs/boost/files/boost-1.91.0-uninitialised-buffer.patch13
-rw-r--r--dev-libs/boost/files/boost-1.91.0-wave-test-cfg.patch12
-rw-r--r--dev-libs/boost/metadata.xml26
22 files changed, 1366 insertions, 0 deletions
diff --git a/dev-libs/boost/Manifest b/dev-libs/boost/Manifest
new file mode 100644
index 000000000000..6fd14e08c114
--- /dev/null
+++ b/dev-libs/boost/Manifest
@@ -0,0 +1,2 @@
+DIST boost_1_90_0.tar.bz2 170662122 BLAKE2B daaf524dd26c0e24bec6e461749305277b9b86059f3eb3435ae4928a6537eb198234c597324faa40eb372343233daaf5f5aae886160d9833b04992ac57e385c9 SHA512 1c81b60f63367d7249f277f0a569c181926dcf5a725e30433dd336205f1782880489dd00df6a1a74fd107765d3ca2cd49f806788cabb7d5700a8a55927a9a199
+DIST boost_1_91_0.tar.bz2 204579466 BLAKE2B 305dc3b0a453fffc061afa577cc8a098bd5ced20c498a858fdf8710d22e22731063c54e45753e5379495f05784a108f8727ef551560f8afec282418c599890c6 SHA512 25b3c1434d4c561ff568581356d1f240ef12218be62281f34fe7482487c5328ee6902ef158b7cf8daafe84943cf6f46485a8710a6da74475f11da023ec7b5559
diff --git a/dev-libs/boost/boost-1.90.0-r1.ebuild b/dev-libs/boost/boost-1.90.0-r1.ebuild
new file mode 100644
index 000000000000..8c88cd6cad23
--- /dev/null
+++ b/dev-libs/boost/boost-1.90.0-r1.ebuild
@@ -0,0 +1,477 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Keep an eye on releases: https://www.boost.org/releases/
+
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit dot-a edo flag-o-matic multiprocessing python-r1 toolchain-funcs multilib-minimal
+
+MY_PV="$(ver_rs 1- _)"
+
+DESCRIPTION="Boost Libraries for C++"
+HOMEPAGE="https://www.boost.org/"
+SRC_URI="https://archives.boost.io/release/${PV}/source/boost_${MY_PV}.tar.bz2"
+S="${WORKDIR}/${PN}_${MY_PV}"
+
+LICENSE="Boost-1.0"
+SLOT="0/${PV}"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos ~x64-solaris"
+IUSE="bzip2 +context debug doc icu lzma +nls mpi numpy python +stacktrace test test-full tools zlib zstd"
+REQUIRED_USE="
+ python? ( ${PYTHON_REQUIRED_USE} )
+ test-full? ( test )
+"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ bzip2? ( app-arch/bzip2:=[${MULTILIB_USEDEP}] )
+ icu? ( dev-libs/icu:=[${MULTILIB_USEDEP}] )
+ !icu? ( virtual/libiconv[${MULTILIB_USEDEP}] )
+ lzma? ( app-arch/xz-utils:=[${MULTILIB_USEDEP}] )
+ mpi? ( virtual/mpi[${MULTILIB_USEDEP},threads] )
+ python? (
+ ${PYTHON_DEPS}
+ numpy? ( dev-python/numpy:=[${PYTHON_USEDEP}] )
+ )
+ zlib? ( virtual/zlib:=[${MULTILIB_USEDEP}] )
+ zstd? ( app-arch/zstd:=[${MULTILIB_USEDEP}] )"
+DEPEND="${RDEPEND}"
+BDEPEND=">=dev-build/b2-5.1.0"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.88.0-disable_icu_rpath.patch
+ "${FILESDIR}"/${PN}-1.88.0-build-auto_index-tool.patch
+ "${FILESDIR}"/${PN}-1.88.0-algorithm-reverse_copy.patch
+ "${FILESDIR}"/${PN}-1.88.0-beast-network-sandbox.patch
+ "${FILESDIR}"/${PN}-1.88.0-bind-no-Werror.patch
+ "${FILESDIR}"/${PN}-1.88.0-range-any_iterator.patch
+ "${FILESDIR}"/${PN}-1.88.0-system-crashing-test.patch
+ "${FILESDIR}"/${PN}-1.88.0-yap-cstdint.patch
+ # https://github.com/boostorg/dll/issues/108
+ "${FILESDIR}"/${PN}-1.89.0-dll-no-lto.patch
+ "${FILESDIR}"/${PN}-1.89.0-graph-remove-system-dependency.patch
+ "${FILESDIR}"/${PN}-1.89.0-predef-include-path.patch
+ "${FILESDIR}"/${PN}-1.89.0-python-exclude-broken-tests.patch
+ "${FILESDIR}"/${PN}-1.89.0-unordered-no-tbb.patch
+ "${FILESDIR}"/${PN}-1.90.0-msm-std.patch
+ "${FILESDIR}"/${PN}-1.90.0-unsigned-char-EOF.patch
+)
+
+create_user-config.jam() {
+ local user_config_jam="${BUILD_DIR}"/user-config.jam
+ if [[ -s ${user_config_jam} ]]; then
+ einfo "${user_config_jam} already exists, skipping configuration"
+ return
+ else
+ einfo "Creating configuration in ${user_config_jam}"
+ fi
+
+ local compiler compiler_version compiler_executable="$(tc-getCXX)"
+ compiler="gcc"
+ compiler_version="$(gcc-version)"
+
+ if use mpi; then
+ local mpi_configuration="using mpi ;"
+ fi
+
+ cat > "${user_config_jam}" <<- __EOF__ || die
+ using ${compiler} : ${compiler_version} : ${compiler_executable} : <cflags>"${CPPFLAGS} ${CFLAGS}" <cxxflags>"${CPPFLAGS} ${CXXFLAGS}" <linkflags>"${LDFLAGS}" <archiver>"$(tc-getAR)" <ranlib>"$(tc-getRANLIB)" ;
+ ${mpi_configuration}
+ __EOF__
+
+ if multilib_native_use python; then
+ append_to_user_config() {
+ local py_config
+ if tc-is-cross-compiler; then
+ py_config="using python : ${EPYTHON#python} : : ${ESYSROOT}/usr/include/${EPYTHON} : ${ESYSROOT}/usr/$(get_libdir) ;"
+ else
+ py_config="using python : ${EPYTHON#python} : ${PYTHON} : $(python_get_includedir) ;"
+ fi
+ echo "${py_config}" >> "${user_config_jam}" || die
+ }
+ python_foreach_impl append_to_user_config
+ fi
+
+ if multilib_native_use python && use numpy; then
+ einfo "Enabling support for NumPy extensions in Boost.Python"
+ else
+ einfo "Disabling support for NumPy extensions in Boost.Python"
+
+ # Boost.Build does not allow for disabling of numpy
+ # extensions, thereby leading to automagic numpy
+ # https://github.com/boostorg/python/issues/111#issuecomment-280447482
+ sed \
+ -e 's/\[ unless \[ python\.numpy \] : <build>no \]/<build>no/g' \
+ -i "${BUILD_DIR}"/libs/python/build/Jamfile || die
+ fi
+}
+
+pkg_setup() {
+ # Bail out on unsupported build configuration, bug #456792
+ if [[ -f "${EROOT}"/etc/site-config.jam ]]; then
+ if ! grep -q 'gentoo\(debug\|release\)' "${EROOT}"/etc/site-config.jam; then
+ eerror "You are using custom ${EROOT}/etc/site-config.jam without defined gentoorelease/gentoodebug targets."
+ eerror "Boost can not be built in such configuration."
+ eerror "Please, either remove this file or add targets from ${EROOT}/usr/share/boost-build/site-config.jam to it."
+ die "Unsupported target in ${EROOT}/etc/site-config.jam"
+ fi
+ fi
+}
+
+src_prepare() {
+ default
+ multilib_copy_sources
+}
+
+ejam() {
+ create_user-config.jam
+
+ local b2_opts=( "--user-config=${BUILD_DIR}/user-config.jam" )
+ if multilib_native_use python; then
+ append_to_b2_opts() {
+ b2_opts+=( python="${EPYTHON#python}" )
+ }
+ python_foreach_impl append_to_b2_opts
+ else
+ b2_opts+=( --without-python )
+ fi
+ b2_opts+=( "$@" )
+
+ echo b2 "${b2_opts[@]}" >&2
+ b2 "${b2_opts[@]}"
+}
+
+src_configure() {
+ # -Werror=odr
+ # https://bugs.gentoo.org/943975
+ # https://github.com/boostorg/quickbook/issues/27
+ # https://github.com/boostorg/spirit/issues/800
+ #
+ # Tests also fail:
+ # https://bugs.gentoo.org/956660
+ # https://github.com/boostorg/smart_ptr/issues/121
+ # https://github.com/boostorg/thread/issues/415
+ filter-lto
+
+ lto-guarantee-fat
+
+ # Workaround for too many parallel processes requested, bug #506064
+ [[ "$(makeopts_jobs)" -gt 64 ]] && MAKEOPTS="${MAKEOPTS} -j64"
+
+ # We don't want to end up with -L/usr/lib on our linker lines
+ # which then gives us lots of
+ # skipping incompatible /usr/lib/libc.a when searching for -lc
+ # warnings
+ [[ -n ${ESYSROOT} ]] && local icuarg="-sICU_PATH=${ESYSROOT}/usr"
+
+ OPTIONS=(
+ $(usex debug gentoodebug gentoorelease)
+ "-j$(makeopts_jobs)"
+ -q
+ -d+2
+ pch=off
+ $(usex icu "${icuarg}" '--disable-icu boost.locale.icu=off')
+ $(usev !mpi --without-mpi)
+ $(usev !nls --without-locale)
+ $(usev !context '--without-context --without-coroutine --without-fiber')
+ $(usev !stacktrace --without-stacktrace)
+ --boost-build="${BROOT}"/usr/share/b2/src
+ --layout=system
+ # building with threading=single is currently not possible
+ # https://svn.boost.org/trac/boost/ticket/7105
+ threading=multi
+ link=shared
+ # this seems to be the only way to disable compression algorithms
+ # https://www.boost.org/doc/libs/1_70_0/libs/iostreams/doc/installation.html#boost-build
+ -sNO_BZIP2=$(usex bzip2 0 1)
+ -sNO_LZMA=$(usex lzma 0 1)
+ -sNO_ZLIB=$(usex zlib 0 1)
+ -sNO_ZSTD=$(usex zstd 0 1)
+ boost.stacktrace.from_exception=off
+ )
+
+ if [[ ${CHOST} == *-darwin* ]]; then
+ # We need to add the prefix, and in two cases this exceeds, so prepare
+ # for the largest possible space allocation.
+ append-ldflags -Wl,-headerpad_max_install_names
+ fi
+
+ # Use C++17 globally as of 1.80
+ append-cxxflags -std=c++17
+
+ if [[ ${CHOST} != *-darwin* ]]; then
+ # On modern macOS, file I/O is already 64-bit by default,
+ # there's no support for special options like O_LARGEFILE.
+ # Thus, LFS must be disabled.
+ #
+ # On other systems, we need to enable LFS explicitly for 64-bit
+ # offsets on 32-bit hosts (#894564)
+ append-lfs-flags
+ fi
+}
+
+multilib_src_compile() {
+ ejam \
+ --prefix="${EPREFIX}"/usr \
+ "${OPTIONS[@]}" || die
+
+ if multilib_native_use tools; then
+ pushd tools >/dev/null || die
+ ejam \
+ --prefix="${EPREFIX}"/usr \
+ "${OPTIONS[@]}" \
+ || die "Building of Boost tools failed"
+ popd >/dev/null || die
+ fi
+}
+
+multilib_src_test() {
+ ##
+ ## Test exclusions
+ ##
+
+ # The following libraries do not compile or fail their tests:
+ local libs_excluded=(
+ # it seems tests are no longer built
+ "callable_traits"
+ # test output comparison failure
+ "config"
+ # undefined reference to `boost::math::concepts::real_concept boost::math::bernoulli_b2n<boost::math::concepts::real_concept>(int)
+ "math"
+ # In function 'PyObject* boost::parameter::python::aux::unspecified_type()':
+ # /usr/include/python3.13/object.h:339:30: error: lvalue required as left operand of assignment
+ # #define Py_TYPE(ob) Py_TYPE(_PyObject_CAST(ob))
+ # ~~~~~~~^~~~~~~~~~~~~~~~~~~~
+ "parameter_python"
+ # scope/lambda_tests22.cpp(27): test 'x == 1' failed in function 'int main()'
+ "phoenix"
+ # vec_access.hpp:95:223: error: static assertion failed: Boost QVM static assertion failure
+ "qvm"
+ # Processing file ../boost_1_89_0/libs/regex/example/../include/boost/regex/v5/regex_iterator.hpp
+ # terminate called after throwing an instance of 'std::length_error'
+ # what(): basic_string::_M_create
+ "regex"
+ # in function `boost::archive::tmpnam(char*)': test_array.cpp:(.text+0x108):
+ # undefined reference to `boost::filesystem::detail::unique_path(...)'
+ "serialization"
+ # TuTestMain.cpp(22) fatal error: in "test_main_caller( argc_ argv )":
+ # std::runtime_error: Event was not consumed!
+ "statechart"
+ # t_5_007.cpp(22): error: could not find include file: boost/version.hpp
+ "wave"
+ )
+
+ if ! use mpi; then
+ # graph_parallel tries to use MPI even with use=-mpi
+ local no_mpi=( "mpi" "graph_parallel" )
+ einfo "Disabling tests due to USE=-mpi: ${no_mpi[@]}"
+ libs_excluded+=( ${no_mpi[@]} )
+ fi
+
+ if ! use test-full; then
+ # passes its tests but takes a very long time to build
+ local no_full=( "geometry" "multiprecision" )
+ einfo "Disabling expensive tests due to USE=-test-full: ${no_full[@]}"
+ libs_excluded+=( ${no_full[@]} )
+ fi
+
+ einfo "Skipping the following tests: ${libs_excluded[@]}"
+
+ ##
+ ## Find and run tests
+ ##
+
+ # Prepare to find libraries but without exclusions
+ local excluded findlibs="find ${BUILD_DIR}/libs -maxdepth 1 -mindepth 1 -type d "
+ for excluded in ${libs_excluded[@]}; do
+ findlibs+="-not -name ${excluded} "
+ done
+
+ # Must come as last argument
+ findlibs+="-print0"
+
+ # Collect libraries to test, with full path.
+ # The list is then sorted to provide predictable execution order,
+ # which would otherwise depend on the file system.
+ local libs
+ readarray -td '' libs < <(${findlibs})
+ readarray -td '' libs < <(printf '%s\0' "${libs[@]}" | sort -z)
+
+ # Build the list of test names we are about to run
+ local lib_names
+ for lib in ${libs[@]}; do
+ lib_names+=("${lib##*/}")
+ done
+
+ # Create custom options for tests based on the build settings
+ TEST_OPTIONS=("${OPTIONS[@]}")
+
+ # Dial down log output - the full b2 command used to compile & run
+ # a test suite will be printed by ejam and can be used to build
+ # and run the tests in a test suite's directory.
+ TEST_OPTIONS=("${TEST_OPTIONS[@]/-d+2/-d0}")
+
+ # Finally build & run all test suites
+ einfo "Running the following tests: ${lib_names[*]}"
+
+ local failed_tests=()
+ for lib in "${libs[@]}"; do
+ # Skip libraries without test directory
+ [[ ! -d "${lib}/test" ]] && continue
+
+ # Move into library test dir & run all tests
+ pushd "${lib}/test" >/dev/null || die
+ nonfatal edob -m "Running tests in: $(pwd)" ejam --prefix="${EPREFIX}"/usr "${TEST_OPTIONS[@]}" || failed_tests+=( "${lib}" )
+ popd >/dev/null || die
+ done
+
+ if (( ${#failed_tests[@]} )); then
+ eerror "Failed tests. Printing summary."
+ local failed_test
+ for failed_test in "${failed_tests[@]}" ; do
+ eerror "Failed test: ${failed_test}"
+ done
+ die "Tests failed."
+ fi
+}
+
+multilib_src_install() {
+ ejam \
+ --prefix="${ED}"/usr \
+ --includedir="${ED}"/usr/include \
+ --libdir="${ED}"/usr/$(get_libdir) \
+ "${OPTIONS[@]}" install || die "Installation of Boost libraries failed"
+
+ if multilib_native_use tools; then
+ dobin dist/bin/*
+
+ insinto /usr/share
+ doins -r dist/share/boostbook
+ fi
+
+ # boost's build system truely sucks for not having a destdir. Because for
+ # this reason we are forced to build with a prefix that includes the
+ # DESTROOT, dynamic libraries on Darwin end messed up, referencing the
+ # DESTROOT instread of the actual EPREFIX. There is no way out of here
+ # but to do it the dirty way of manually setting the right install_names.
+ if [[ ${CHOST} == *-darwin* ]]; then
+ einfo "Working around completely broken build-system(tm)"
+ local d
+ for d in "${ED}"/usr/lib/*.dylib; do
+ if [[ -f ${d} ]]; then
+ # fix the "soname"
+ ebegin " correcting install_name of ${d#${ED}}"
+ install_name_tool -id "/${d#${D}}" "${d}"
+ eend $?
+ # fix references to other libs
+ # these paths look like this:
+ # bin.v2/libs/thread/build/gcc-12.1/gentoorelease/pch-off/
+ # threadapi-pthread/threading-multi/visibility-hidden/
+ # libboost_thread.dylib
+ refs=$(otool -XL "${d}" | \
+ sed -e '1d' -e 's/^\t//' | \
+ grep "libboost_" | \
+ cut -f1 -d' ')
+ local r
+ for r in ${refs}; do
+ # strip path prefix from references, so we obtain
+ # something like libboost_thread.dylib.
+ local r_basename=${r##*/}
+
+ ebegin " correcting reference to ${r_basename}"
+ install_name_tool -change \
+ "${r}" \
+ "${EPREFIX}/usr/lib/${r_basename}" \
+ "${d}"
+ eend $?
+ done
+ fi
+ done
+ fi
+}
+
+multilib_src_install_all() {
+ if ! use numpy; then
+ rm -r "${ED}"/usr/include/boost/python/numpy* || die
+ fi
+
+ if use python; then
+ if use mpi; then
+ move_mpi_py_into_sitedir() {
+ python_moduleinto boost
+
+ python_domodule "${ED}"/usr/$(get_libdir)/boost-${EPYTHON}/mpi.so
+ rm -r "${ED}"/usr/$(get_libdir)/boost-${EPYTHON} || die
+
+ python_optimize
+ }
+ python_foreach_impl move_mpi_py_into_sitedir
+ else
+ rm -r "${ED}"/usr/include/boost/mpi/python* || die
+ fi
+ else
+ rm -r "${ED}"/usr/include/boost/{python*,mpi/python*,parameter/aux_/python,parameter/python*} || die
+ fi
+
+ if ! use nls; then
+ rm -r "${ED}"/usr/include/boost/locale || die
+ fi
+
+ if ! use context; then
+ rm -r "${ED}"/usr/include/boost/context || die
+ rm -r "${ED}"/usr/include/boost/coroutine{,2} || die
+ rm "${ED}"/usr/include/boost/asio/spawn.hpp || die
+ fi
+
+ if use doc; then
+ # find extraneous files that shouldn't be installed
+ # as part of the documentation and remove them.
+ find libs/*/* \( -iname 'test' -o -iname 'src' \) -exec rm -rf '{}' + || die
+ find doc \( -name 'Jamfile.v2' -o -name 'build' -o -name '*.manifest' \) -exec rm -rf '{}' + || die
+ find tools \( -name 'Jamfile.v2' -o -name 'src' -o -name '*.cpp' -o -name '*.hpp' \) -exec rm -rf '{}' + || die
+
+ docinto html
+ dodoc *.{htm,html,png,css}
+ dodoc -r doc libs more tools
+
+ # To avoid broken links
+ dodoc LICENSE_1_0.txt
+
+ dosym ../../../../include/boost /usr/share/doc/${PF}/html/boost
+ fi
+
+ strip-lto-bytecode
+}
+
+pkg_preinst() {
+ # Yay for having symlinks that are nigh-impossible to remove without
+ # resorting to dirty hacks like these. Removes lingering symlinks
+ # from the slotted versions.
+ local symlink
+ for symlink in "${EROOT}"/usr/include/boost "${EROOT}"/usr/share/boostbook; do
+ if [[ -L ${symlink} ]]; then
+ rm -f "${symlink}" || die
+ fi
+ done
+
+ # some ancient installs still have boost cruft lying around
+ # for unknown reasons, causing havoc for reverse dependencies
+ # Bug: 607734
+ rm -rf "${EROOT}"/usr/include/boost-1_[3-5]? || die
+}
+
+pkg_postinst() {
+ elog "Boost.Regex is *extremely* ABI sensitive. If you get errors such as"
+ elog
+ elog " undefined reference to \`boost::re_detail_$(ver_cut 1)0$(ver_cut 2)00::cpp_regex_traits_implementation"
+ elog " <char>::transform_primary[abi:cxx11](char const*, char const*) const'"
+ elog
+ elog "Then you need to recompile Boost and all its reverse dependencies"
+ elog "using the same toolchain. In general, *every* change of the C++ toolchain"
+ elog "requires a complete rebuild of the Boost-dependent ecosystem."
+ elog
+ elog "See for instance https://bugs.gentoo.org/638138"
+}
diff --git a/dev-libs/boost/boost-1.91.0.ebuild b/dev-libs/boost/boost-1.91.0.ebuild
new file mode 100644
index 000000000000..6b01b1dc43a4
--- /dev/null
+++ b/dev-libs/boost/boost-1.91.0.ebuild
@@ -0,0 +1,483 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Keep an eye on releases: https://www.boost.org/releases/
+
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit dot-a edo flag-o-matic multiprocessing python-r1 toolchain-funcs multilib-minimal
+
+MY_PV="$(ver_rs 1- _)"
+
+DESCRIPTION="Boost Libraries for C++"
+HOMEPAGE="https://www.boost.org/"
+SRC_URI="https://archives.boost.io/release/${PV}/source/boost_${MY_PV}.tar.bz2"
+S="${WORKDIR}/${PN}_${MY_PV}"
+
+LICENSE="Boost-1.0"
+SLOT="0/${PV}"
+#KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos ~x64-solaris"
+IUSE="bzip2 +context debug doc icu lzma +nls mpi numpy python +stacktrace test test-full tools zlib zstd"
+REQUIRED_USE="
+ python? ( ${PYTHON_REQUIRED_USE} )
+ test-full? ( test )
+"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ bzip2? ( app-arch/bzip2:=[${MULTILIB_USEDEP}] )
+ icu? ( dev-libs/icu:=[${MULTILIB_USEDEP}] )
+ !icu? ( virtual/libiconv[${MULTILIB_USEDEP}] )
+ lzma? ( app-arch/xz-utils:=[${MULTILIB_USEDEP}] )
+ mpi? ( virtual/mpi[${MULTILIB_USEDEP},threads] )
+ python? (
+ ${PYTHON_DEPS}
+ numpy? ( dev-python/numpy:=[${PYTHON_USEDEP}] )
+ )
+ zlib? ( virtual/zlib:=[${MULTILIB_USEDEP}] )
+ zstd? ( app-arch/zstd:=[${MULTILIB_USEDEP}] )"
+DEPEND="${RDEPEND}"
+BDEPEND=">=dev-build/b2-5.1.0"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.88.0-disable_icu_rpath.patch
+ "${FILESDIR}"/${PN}-1.88.0-build-auto_index-tool.patch
+ "${FILESDIR}"/${PN}-1.88.0-beast-network-sandbox.patch
+ "${FILESDIR}"/${PN}-1.88.0-bind-no-Werror.patch
+ "${FILESDIR}"/${PN}-1.88.0-system-crashing-test.patch
+ "${FILESDIR}"/${PN}-1.88.0-yap-cstdint.patch
+ # https://github.com/boostorg/dll/issues/108
+ "${FILESDIR}"/${PN}-1.89.0-dll-no-lto.patch
+ "${FILESDIR}"/${PN}-1.89.0-graph-remove-system-dependency.patch
+ "${FILESDIR}"/${PN}-1.89.0-predef-include-path.patch
+ "${FILESDIR}"/${PN}-1.89.0-python-exclude-broken-tests.patch
+ "${FILESDIR}"/${PN}-1.89.0-unordered-no-tbb.patch
+ "${FILESDIR}"/${PN}-1.90.0-msm-std.patch
+ "${FILESDIR}"/${PN}-1.90.0-unsigned-char-EOF.patch
+ "${FILESDIR}"/${PN}-1.91.0-spirit-test.patch
+ "${FILESDIR}"/${PN}-1.91.0-uninitialised-buffer.patch
+ "${FILESDIR}"/${PN}-1.91.0-wave-test-cfg.patch
+)
+
+create_user-config.jam() {
+ local user_config_jam="${BUILD_DIR}"/user-config.jam
+ if [[ -s ${user_config_jam} ]]; then
+ einfo "${user_config_jam} already exists, skipping configuration"
+ return
+ else
+ einfo "Creating configuration in ${user_config_jam}"
+ fi
+
+ local compiler compiler_version compiler_executable="$(tc-getCXX)"
+ compiler="gcc"
+ compiler_version="$(gcc-version)"
+
+ if use mpi; then
+ local mpi_configuration="using mpi ;"
+ fi
+
+ cat > "${user_config_jam}" <<- __EOF__ || die
+ using ${compiler} : ${compiler_version} : ${compiler_executable} : <cflags>"${CPPFLAGS} ${CFLAGS}" <cxxflags>"${CPPFLAGS} ${CXXFLAGS}" <linkflags>"${LDFLAGS}" <archiver>"$(tc-getAR)" <ranlib>"$(tc-getRANLIB)" ;
+ ${mpi_configuration}
+ __EOF__
+
+ if multilib_native_use python; then
+ append_to_user_config() {
+ local py_config
+ if tc-is-cross-compiler; then
+ py_config="using python : ${EPYTHON#python} : : ${ESYSROOT}/usr/include/${EPYTHON} : ${ESYSROOT}/usr/$(get_libdir) ;"
+ else
+ py_config="using python : ${EPYTHON#python} : ${PYTHON} : $(python_get_includedir) ;"
+ fi
+ echo "${py_config}" >> "${user_config_jam}" || die
+ }
+ python_foreach_impl append_to_user_config
+ fi
+
+ if multilib_native_use python && use numpy; then
+ einfo "Enabling support for NumPy extensions in Boost.Python"
+ else
+ einfo "Disabling support for NumPy extensions in Boost.Python"
+
+ # Boost.Build does not allow for disabling of numpy
+ # extensions, thereby leading to automagic numpy
+ # https://github.com/boostorg/python/issues/111#issuecomment-280447482
+ sed \
+ -e 's/\[ unless \[ python\.numpy \] : <build>no \]/<build>no/g' \
+ -i "${BUILD_DIR}"/libs/python/build/Jamfile || die
+ fi
+}
+
+pkg_setup() {
+ # Bail out on unsupported build configuration, bug #456792
+ if [[ -f "${EROOT}"/etc/site-config.jam ]]; then
+ if ! grep -q 'gentoo\(debug\|release\)' "${EROOT}"/etc/site-config.jam; then
+ eerror "You are using custom ${EROOT}/etc/site-config.jam without defined gentoorelease/gentoodebug targets."
+ eerror "Boost can not be built in such configuration."
+ eerror "Please, either remove this file or add targets from ${EROOT}/usr/share/boost-build/site-config.jam to it."
+ die "Unsupported target in ${EROOT}/etc/site-config.jam"
+ fi
+ fi
+}
+
+src_prepare() {
+ default
+ multilib_copy_sources
+}
+
+ejam() {
+ create_user-config.jam
+
+ local b2_opts=( "--user-config=${BUILD_DIR}/user-config.jam" )
+ if multilib_native_use python; then
+ append_to_b2_opts() {
+ b2_opts+=( python="${EPYTHON#python}" )
+ }
+ python_foreach_impl append_to_b2_opts
+ else
+ b2_opts+=( --without-python )
+ fi
+ b2_opts+=( "$@" )
+
+ echo b2 "${b2_opts[@]}" >&2
+ b2 "${b2_opts[@]}"
+}
+
+src_configure() {
+ # -Werror=odr
+ # https://bugs.gentoo.org/943975
+ # https://github.com/boostorg/quickbook/issues/27
+ # https://github.com/boostorg/spirit/issues/800
+ #
+ # Tests also fail:
+ # https://bugs.gentoo.org/956660
+ # https://github.com/boostorg/smart_ptr/issues/121
+ # https://github.com/boostorg/thread/issues/415
+ filter-lto
+
+ lto-guarantee-fat
+
+ # Workaround for too many parallel processes requested, bug #506064
+ [[ "$(makeopts_jobs)" -gt 64 ]] && MAKEOPTS="${MAKEOPTS} -j64"
+
+ # We don't want to end up with -L/usr/lib on our linker lines
+ # which then gives us lots of
+ # skipping incompatible /usr/lib/libc.a when searching for -lc
+ # warnings
+ [[ -n ${ESYSROOT} ]] && local icuarg="-sICU_PATH=${ESYSROOT}/usr"
+
+ OPTIONS=(
+ $(usex debug gentoodebug gentoorelease)
+ "-j$(makeopts_jobs)"
+ -q
+ -d+2
+ pch=off
+ $(usex icu "${icuarg}" '--disable-icu boost.locale.icu=off')
+ $(usev !mpi --without-mpi)
+ $(usev !nls --without-locale)
+ $(usev !context '--without-context --without-coroutine --without-fiber')
+ $(usev !stacktrace --without-stacktrace)
+ --boost-build="${BROOT}"/usr/share/b2/src
+ --layout=system
+ # building with threading=single is currently not possible
+ # https://svn.boost.org/trac/boost/ticket/7105
+ threading=multi
+ link=shared
+ # this seems to be the only way to disable compression algorithms
+ # https://www.boost.org/doc/libs/1_70_0/libs/iostreams/doc/installation.html#boost-build
+ -sNO_BZIP2=$(usex bzip2 0 1)
+ -sNO_LZMA=$(usex lzma 0 1)
+ -sNO_ZLIB=$(usex zlib 0 1)
+ -sNO_ZSTD=$(usex zstd 0 1)
+ boost.stacktrace.from_exception=off
+ )
+
+ if [[ ${CHOST} == *-darwin* ]]; then
+ # We need to add the prefix, and in two cases this exceeds, so prepare
+ # for the largest possible space allocation.
+ append-ldflags -Wl,-headerpad_max_install_names
+ fi
+
+ # Use C++17 globally as of 1.80
+ append-cxxflags -std=c++17
+
+ if [[ ${CHOST} != *-darwin* ]]; then
+ # On modern macOS, file I/O is already 64-bit by default,
+ # there's no support for special options like O_LARGEFILE.
+ # Thus, LFS must be disabled.
+ #
+ # On other systems, we need to enable LFS explicitly for 64-bit
+ # offsets on 32-bit hosts (#894564)
+ append-lfs-flags
+ fi
+}
+
+multilib_src_compile() {
+ ejam \
+ --prefix="${EPREFIX}"/usr \
+ "${OPTIONS[@]}" || die
+
+ if multilib_native_use tools; then
+ pushd tools >/dev/null || die
+ ejam \
+ --prefix="${EPREFIX}"/usr \
+ "${OPTIONS[@]}" \
+ || die "Building of Boost tools failed"
+ popd >/dev/null || die
+ fi
+}
+
+multilib_src_test() {
+ ##
+ ## Test exclusions
+ ##
+
+ # The following libraries do not compile or fail their tests:
+ local libs_excluded=(
+ # it seems tests are no longer built
+ "callable_traits"
+ # test output comparison failure
+ "config"
+ # undefined reference to `boost::math::concepts::real_concept boost::math::bernoulli_b2n<boost::math::concepts::real_concept>(int)
+ "math"
+ # In function 'PyObject* boost::parameter::python::aux::unspecified_type()':
+ # /usr/include/python3.13/object.h:339:30: error: lvalue required as left operand of assignment
+ # #define Py_TYPE(ob) Py_TYPE(_PyObject_CAST(ob))
+ # ~~~~~~~^~~~~~~~~~~~~~~~~~~~
+ "parameter_python"
+ # scope/lambda_tests22.cpp(27): test 'x == 1' failed in function 'int main()'
+ "phoenix"
+ # vec_access.hpp:95:223: error: static assertion failed: Boost QVM static assertion failure
+ "qvm"
+ # In function 'void boost::redis::detail::update_sentinel_list(std::vector<boost::redis::address>&,
+ # std::size_t, boost::span<const boost::redis::address>, boost::span<const boost::redis::address>)':
+ # boost/redis/impl/sentinel_utils.hpp:269:20: error: no matching function for call to
+ # 'find(std::vector<boost::redis::address>::iterator, std::vector<boost::redis::address>::iterator,
+ # const boost::redis::address&)'
+ "redis"
+ # Processing file ../boost_1_89_0/libs/regex/example/../include/boost/regex/v5/regex_iterator.hpp
+ # terminate called after throwing an instance of 'std::length_error'
+ # what(): basic_string::_M_create
+ # https://github.com/boostorg/regex/issues/274
+ "regex"
+ # in function `boost::archive::tmpnam(char*)': test_array.cpp:(.text+0x108):
+ # undefined reference to `boost::filesystem::detail::unique_path(...)'
+ "serialization"
+ # TuTestMain.cpp(22) fatal error: in "test_main_caller( argc_ argv )":
+ # std::runtime_error: Event was not consumed!
+ "statechart"
+ )
+
+ if ! use mpi; then
+ # graph_parallel tries to use MPI even with use=-mpi
+ local no_mpi=( "mpi" "graph_parallel" )
+ einfo "Disabling tests due to USE=-mpi: ${no_mpi[@]}"
+ libs_excluded+=( ${no_mpi[@]} )
+ fi
+
+ if ! use test-full; then
+ # passes its tests but takes a very long time to build
+ local no_full=( "geometry" "multiprecision" )
+ einfo "Disabling expensive tests due to USE=-test-full: ${no_full[@]}"
+ libs_excluded+=( ${no_full[@]} )
+ fi
+
+ einfo "Skipping the following tests: ${libs_excluded[@]}"
+
+ ##
+ ## Find and run tests
+ ##
+
+ # Prepare to find libraries but without exclusions
+ local excluded findlibs="find ${BUILD_DIR}/libs -maxdepth 1 -mindepth 1 -type d "
+ for excluded in ${libs_excluded[@]}; do
+ findlibs+="-not -name ${excluded} "
+ done
+
+ # Must come as last argument
+ findlibs+="-print0"
+
+ # Collect libraries to test, with full path.
+ # The list is then sorted to provide predictable execution order,
+ # which would otherwise depend on the file system.
+ local libs
+ readarray -td '' libs < <(${findlibs})
+ readarray -td '' libs < <(printf '%s\0' "${libs[@]}" | sort -z)
+
+ # Build the list of test names we are about to run
+ local lib_names
+ for lib in ${libs[@]}; do
+ lib_names+=("${lib##*/}")
+ done
+
+ # Create custom options for tests based on the build settings
+ TEST_OPTIONS=("${OPTIONS[@]}")
+
+ # Dial down log output - the full b2 command used to compile & run
+ # a test suite will be printed by ejam and can be used to build
+ # and run the tests in a test suite's directory.
+ TEST_OPTIONS=("${TEST_OPTIONS[@]/-d+2/-d0}")
+
+ # Finally build & run all test suites
+ einfo "Running the following tests: ${lib_names[*]}"
+
+ local failed_tests=()
+ for lib in "${libs[@]}"; do
+ # Skip libraries without test directory
+ [[ ! -d "${lib}/test" ]] && continue
+
+ # Move into library test dir & run all tests
+ pushd "${lib}/test" >/dev/null || die
+ nonfatal edob -m "Running tests in: $(pwd)" ejam --prefix="${EPREFIX}"/usr "${TEST_OPTIONS[@]}" || failed_tests+=( "${lib}" )
+ popd >/dev/null || die
+ done
+
+ if (( ${#failed_tests[@]} )); then
+ eerror "Failed tests. Printing summary."
+ local failed_test
+ for failed_test in "${failed_tests[@]}" ; do
+ eerror "Failed test: ${failed_test}"
+ done
+ die "Tests failed."
+ fi
+}
+
+multilib_src_install() {
+ ejam \
+ --prefix="${ED}"/usr \
+ --includedir="${ED}"/usr/include \
+ --libdir="${ED}"/usr/$(get_libdir) \
+ "${OPTIONS[@]}" install || die "Installation of Boost libraries failed"
+
+ if multilib_native_use tools; then
+ dobin dist/bin/*
+
+ insinto /usr/share
+ doins -r dist/share/boostbook
+ fi
+
+ # boost's build system truely sucks for not having a destdir. Because for
+ # this reason we are forced to build with a prefix that includes the
+ # DESTROOT, dynamic libraries on Darwin end messed up, referencing the
+ # DESTROOT instread of the actual EPREFIX. There is no way out of here
+ # but to do it the dirty way of manually setting the right install_names.
+ if [[ ${CHOST} == *-darwin* ]]; then
+ einfo "Working around completely broken build-system(tm)"
+ local d
+ for d in "${ED}"/usr/lib/*.dylib; do
+ if [[ -f ${d} ]]; then
+ # fix the "soname"
+ ebegin " correcting install_name of ${d#${ED}}"
+ install_name_tool -id "/${d#${D}}" "${d}"
+ eend $?
+ # fix references to other libs
+ # these paths look like this:
+ # bin.v2/libs/thread/build/gcc-12.1/gentoorelease/pch-off/
+ # threadapi-pthread/threading-multi/visibility-hidden/
+ # libboost_thread.dylib
+ refs=$(otool -XL "${d}" | \
+ sed -e '1d' -e 's/^\t//' | \
+ grep "libboost_" | \
+ cut -f1 -d' ')
+ local r
+ for r in ${refs}; do
+ # strip path prefix from references, so we obtain
+ # something like libboost_thread.dylib.
+ local r_basename=${r##*/}
+
+ ebegin " correcting reference to ${r_basename}"
+ install_name_tool -change \
+ "${r}" \
+ "${EPREFIX}/usr/lib/${r_basename}" \
+ "${d}"
+ eend $?
+ done
+ fi
+ done
+ fi
+}
+
+multilib_src_install_all() {
+ if ! use numpy; then
+ rm -r "${ED}"/usr/include/boost/python/numpy* || die
+ fi
+
+ if use python; then
+ if use mpi; then
+ move_mpi_py_into_sitedir() {
+ python_moduleinto boost
+
+ python_domodule "${ED}"/usr/$(get_libdir)/boost-${EPYTHON}/mpi.so
+ rm -r "${ED}"/usr/$(get_libdir)/boost-${EPYTHON} || die
+
+ python_optimize
+ }
+ python_foreach_impl move_mpi_py_into_sitedir
+ else
+ rm -r "${ED}"/usr/include/boost/mpi/python* || die
+ fi
+ else
+ rm -r "${ED}"/usr/include/boost/{python*,mpi/python*,parameter/aux_/python,parameter/python*} || die
+ fi
+
+ if ! use nls; then
+ rm -r "${ED}"/usr/include/boost/locale || die
+ fi
+
+ if ! use context; then
+ rm -r "${ED}"/usr/include/boost/context || die
+ rm -r "${ED}"/usr/include/boost/coroutine{,2} || die
+ rm "${ED}"/usr/include/boost/asio/spawn.hpp || die
+ fi
+
+ if use doc; then
+ # find extraneous files that shouldn't be installed
+ # as part of the documentation and remove them.
+ find libs/*/* \( -iname 'test' -o -iname 'src' \) -exec rm -rf '{}' + || die
+ find doc \( -name 'Jamfile.v2' -o -name 'build' -o -name '*.manifest' \) -exec rm -rf '{}' + || die
+ find tools \( -name 'Jamfile.v2' -o -name 'src' -o -name '*.cpp' -o -name '*.hpp' \) -exec rm -rf '{}' + || die
+
+ docinto html
+ dodoc *.{htm,html,png,css}
+ dodoc -r doc libs more tools
+
+ # To avoid broken links
+ dodoc LICENSE_1_0.txt
+
+ dosym ../../../../include/boost /usr/share/doc/${PF}/html/boost
+ fi
+
+ strip-lto-bytecode
+}
+
+pkg_preinst() {
+ # Yay for having symlinks that are nigh-impossible to remove without
+ # resorting to dirty hacks like these. Removes lingering symlinks
+ # from the slotted versions.
+ local symlink
+ for symlink in "${EROOT}"/usr/include/boost "${EROOT}"/usr/share/boostbook; do
+ if [[ -L ${symlink} ]]; then
+ rm -f "${symlink}" || die
+ fi
+ done
+
+ # some ancient installs still have boost cruft lying around
+ # for unknown reasons, causing havoc for reverse dependencies
+ # Bug: 607734
+ rm -rf "${EROOT}"/usr/include/boost-1_[3-5]? || die
+}
+
+pkg_postinst() {
+ elog "Boost.Regex is *extremely* ABI sensitive. If you get errors such as"
+ elog
+ elog " undefined reference to \`boost::re_detail_$(ver_cut 1)0$(ver_cut 2)00::cpp_regex_traits_implementation"
+ elog " <char>::transform_primary[abi:cxx11](char const*, char const*) const'"
+ elog
+ elog "Then you need to recompile Boost and all its reverse dependencies"
+ elog "using the same toolchain. In general, *every* change of the C++ toolchain"
+ elog "requires a complete rebuild of the Boost-dependent ecosystem."
+ elog
+ elog "See for instance https://bugs.gentoo.org/638138"
+}
diff --git a/dev-libs/boost/files/boost-1.88.0-algorithm-reverse_copy.patch b/dev-libs/boost/files/boost-1.88.0-algorithm-reverse_copy.patch
new file mode 100644
index 000000000000..78e7d47dd270
--- /dev/null
+++ b/dev-libs/boost/files/boost-1.88.0-algorithm-reverse_copy.patch
@@ -0,0 +1,24 @@
+Patch from: https://github.com/boostorg/algorithm/pull/124
+Fixed patch paths to match boost distribution.
+
+From 7012619c8056b1b30f88bc57dd39c80c0018214f Mon Sep 17 00:00:00 2001
+From: Yuriy Chernyshov <thegeorg@yandex-team.com>
+Date: Mon, 5 May 2025 18:01:59 +0200
+Subject: [PATCH] Add missing include
+
+---
+ include/boost/algorithm/searching/boyer_moore.hpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/include/boost/algorithm/searching/boyer_moore.hpp b/include/boost/algorithm/searching/boyer_moore.hpp
+index 80a5a4474..e3c00105c 100644
+--- a/boost/algorithm/searching/boyer_moore.hpp
++++ b/boost/algorithm/searching/boyer_moore.hpp
+@@ -10,6 +10,7 @@
+ #ifndef BOOST_ALGORITHM_BOYER_MOORE_SEARCH_HPP
+ #define BOOST_ALGORITHM_BOYER_MOORE_SEARCH_HPP
+
++#include <algorithm> // for std::reverse_copy
+ #include <iterator> // for std::iterator_traits
+
+ #include <boost/config.hpp>
diff --git a/dev-libs/boost/files/boost-1.88.0-beast-network-sandbox.patch b/dev-libs/boost/files/boost-1.88.0-beast-network-sandbox.patch
new file mode 100644
index 000000000000..4d42b8fea1ff
--- /dev/null
+++ b/dev-libs/boost/files/boost-1.88.0-beast-network-sandbox.patch
@@ -0,0 +1,33 @@
+Delete a test case that tries to fail to connect to an
+unconnectable address, but instead fails because network-sandbox
+prevents the connection.
+
+Bug: https://bugs.gentoo.org/954810
+
+--- boost_1_88_0/libs/beast/test/beast/core/basic_stream.cpp~ 2025-04-03 13:37:23.000000000 +0200
++++ boost_1_88_0/libs/beast/test/beast/core/basic_stream.cpp 2025-04-27 22:42:50.705597311 +0200
+@@ -1014,24 +1014,6 @@ public:
+ //
+
+ {
+- // normal timeout
+- // Requires timeout happen before ECONNREFUSED
+- stream_type s(ioc);
+- auto const ep = net::ip::tcp::endpoint(
+- #if 1
+- // This address _should_ be unconnectible
+- net::ip::make_address("72.5.65.111"), 1);
+- #else
+- // On Travis ECONNREFUSED happens before the timeout
+- net::ip::make_address("127.0.0.1"), 1);
+- #endif
+- s.expires_after(std::chrono::seconds(0));
+- s.async_connect(ep, connect_handler{error::timeout});
+- ioc.run_for(std::chrono::seconds(1));
+- ioc.restart();
+- }
+-
+- {
+ // stream destroyed
+ {
+ stream_type s(ioc);
diff --git a/dev-libs/boost/files/boost-1.88.0-bind-no-Werror.patch b/dev-libs/boost/files/boost-1.88.0-bind-no-Werror.patch
new file mode 100644
index 000000000000..2ebd7e402630
--- /dev/null
+++ b/dev-libs/boost/files/boost-1.88.0-bind-no-Werror.patch
@@ -0,0 +1,28 @@
+Prevent test failure due to:
+
+bind_dm3_test.cpp: In function 'int main()':
+bind_dm3_test.cpp:39:17: error: possibly dangling reference to a temporary [-Werror=dangling-reference]
+ 39 | int const & x = boost::bind( &pair_type::first, _1 )( pair );
+ | ^
+bind_dm3_test.cpp:39:32: note: 'boost::_bi::bind_t<const int&, boost::_mfi::dm<int, std::pair<int, int> >, boost::_bi::list<boost::arg<1> > >' temporary created here
+ 39 | int const & x = boost::bind( &pair_type::first, _1 )( pair );
+ | ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
+cc1plus: all warnings being treated as errors
+
+This was seemingly fixed before in commit:
+https://github.com/boostorg/bind/commit/8729fbdbfa124291612bc011a7d639d8701de0c2
+but either it was not fixed properly or regressed in gcc-15.
+
+Bug: https://bugs.gentoo.org/954810
+
+--- boost_1_88_0/libs/bind/test/Jamfile.v2~ 2025-04-03 13:37:23.000000000 +0200
++++ boost_1_88_0/libs/bind/test/Jamfile.v2 2025-04-28 01:23:11.942535523 +0200
+@@ -19,7 +19,7 @@ project
+ : requirements
+
+ <toolset>msvc:<warnings-as-errors>on
+- <toolset>gcc:<warnings-as-errors>on
++ <toolset>gcc:<warnings-as-errors>off
+ <toolset>clang:<warnings-as-errors>on
+
+ <toolset>gcc:<cxxflags>$(gcc-flags)
diff --git a/dev-libs/boost/files/boost-1.88.0-build-auto_index-tool.patch b/dev-libs/boost/files/boost-1.88.0-build-auto_index-tool.patch
new file mode 100644
index 000000000000..ca793b9d06eb
--- /dev/null
+++ b/dev-libs/boost/files/boost-1.88.0-build-auto_index-tool.patch
@@ -0,0 +1,13 @@
+Build auto_index tool with USE="tools"
+See also: https://bugs.gentoo.org/529066
+
+--- a/tools/Jamfile.v2
++++ b/tools/Jamfile.v2
+@@ -18,6 +18,7 @@
+ ;
+
+ TOOLS =
++ auto_index/build//auto_index
+ bcp//bcp
+ inspect/build//inspect
+ quickbook//quickbook
diff --git a/dev-libs/boost/files/boost-1.88.0-disable_icu_rpath.patch b/dev-libs/boost/files/boost-1.88.0-disable_icu_rpath.patch
new file mode 100644
index 000000000000..a64d2d8675ee
--- /dev/null
+++ b/dev-libs/boost/files/boost-1.88.0-disable_icu_rpath.patch
@@ -0,0 +1,19 @@
+--- a/libs/locale/build/Jamfile.v2
++++ b/libs/locale/build/Jamfile.v2
+@@ -99,16 +99,6 @@ if $(.icu-path)
+ rule path_options ( properties * )
+ {
+ local result ;
+- if <address-model>64 in $(properties) && <toolset>msvc in $(properties)
+- {
+- debug-message Search 64 bit ICU in "$(.icu-path)/lib64" ;
+- result = <search>$(.icu-path)/bin64 <search>$(.icu-path)/lib64 ;
+- }
+- else
+- {
+- debug-message Search ICU in "$(.icu-path)/lib" ;
+- result = <search>$(.icu-path)/bin <search>$(.icu-path)/lib ;
+- }
+ return $(result) ;
+ }
+
diff --git a/dev-libs/boost/files/boost-1.88.0-range-any_iterator.patch b/dev-libs/boost/files/boost-1.88.0-range-any_iterator.patch
new file mode 100644
index 000000000000..a147f1f23a69
--- /dev/null
+++ b/dev-libs/boost/files/boost-1.88.0-range-any_iterator.patch
@@ -0,0 +1,27 @@
+
+From: https://github.com/boostorg/range/commit/1d124e8869a9eb17a235f33d8a7a9f203d09d44b
+Patch paths adapted for boost distribution.
+Bug: https://bugs.gentoo.org/955526
+
+From 9ac89e9936b826c13e90611cb9a81a7aa0508d20 Mon Sep 17 00:00:00 2001
+From: Michael Cho <michael@michaelcho.dev>
+Date: Sun, 30 Mar 2025 21:45:49 -0400
+Subject: [PATCH] Add include for add_const
+
+Signed-off-by: Michael Cho <michael@michaelcho.dev>
+---
+ include/boost/range/detail/any_iterator_interface.hpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/include/boost/range/detail/any_iterator_interface.hpp b/include/boost/range/detail/any_iterator_interface.hpp
+index 1103be6c..79e71dbd 100644
+--- a/boost/range/detail/any_iterator_interface.hpp
++++ b/boost/range/detail/any_iterator_interface.hpp
+@@ -13,6 +13,7 @@
+ #include <boost/mpl/if.hpp>
+ #include <boost/range/detail/any_iterator_buffer.hpp>
+ #include <boost/iterator/iterator_categories.hpp>
++#include <boost/type_traits/add_const.hpp>
+ #include <boost/type_traits/is_convertible.hpp>
+ #include <boost/type_traits/is_reference.hpp>
+ #include <boost/type_traits/remove_const.hpp>
diff --git a/dev-libs/boost/files/boost-1.88.0-system-crashing-test.patch b/dev-libs/boost/files/boost-1.88.0-system-crashing-test.patch
new file mode 100644
index 000000000000..fa9baeac6d0d
--- /dev/null
+++ b/dev-libs/boost/files/boost-1.88.0-system-crashing-test.patch
@@ -0,0 +1,16 @@
+Do not build a supposed-to-crash test which may or may not even compile
+correctly any longer.
+
+Bug: https://bugs.gentoo.org/955831
+
+--- boost_1_88_0/libs/system/test/Jamfile.v2~ 2025-04-03 13:37:30.000000000 +0200
++++ boost_1_88_0/libs/system/test/Jamfile.v2 2025-05-11 14:28:16.187753266 +0200
+@@ -68,7 +68,7 @@ system-run before_main_test.cpp ;
+
+ run-fail throws_assign_fail.cpp : : :
+ # GCC 12 catches this at compile time with a warning
+- <toolset>gcc,<variant>release:<build>no ;
++ <toolset>gcc:<build>no ;
+
+ system-run constexpr_test.cpp ;
+ system-run win32_hresult_test.cpp ;
diff --git a/dev-libs/boost/files/boost-1.88.0-yap-cstdint.patch b/dev-libs/boost/files/boost-1.88.0-yap-cstdint.patch
new file mode 100644
index 000000000000..c7602f411043
--- /dev/null
+++ b/dev-libs/boost/files/boost-1.88.0-yap-cstdint.patch
@@ -0,0 +1,22 @@
+Building tests with gcc-15 fails with:
+
+operators_unary.cpp: In function 'int main()':
+operators_unary.cpp:30:14: error: 'uint32_t' was not declared in this scope
+ 30 | term<uint32_t> x{{2u}};
+ | ^~~~~~~~
+
+Bug: https://bugs.gentoo.org/954810
+
+diff --git boost_1_88_0/libs/yap/test/operators_unary.cpp~ boost_1_88_0/libs/yap/test/operators_unary.cpp
+index c65aead..25a6b2f 100644
+--- boost_1_88_0/libs/yap/test/operators_unary.cpp~
++++ boost_1_88_0/libs/yap/test/operators_unary.cpp
+@@ -8,7 +8,7 @@
+ #include <boost/core/lightweight_test.hpp>
+
+ #include <sstream>
+-
++#include <cstdint>
+
+ template<typename T>
+ using term = boost::yap::terminal<boost::yap::expression, T>;
diff --git a/dev-libs/boost/files/boost-1.89.0-dll-no-lto.patch b/dev-libs/boost/files/boost-1.89.0-dll-no-lto.patch
new file mode 100644
index 000000000000..cdbcf7606f34
--- /dev/null
+++ b/dev-libs/boost/files/boost-1.89.0-dll-no-lto.patch
@@ -0,0 +1,16 @@
+Unconditionally disable LTO in case it's injected from the outside.
+LTO breaks the test as some symbols and sections are gone/rearranged.
+
+https://github.com/boostorg/dll/issues/108
+
+--- a/libs/dll/test/Jamfile.v2
++++ a/libs/dll/test/Jamfile.v2
+@@ -36,7 +36,7 @@ project
+ [ requires cxx11_static_assert ]
+ # linux
+ <target-os>linux:<linkflags>"-ldl"
+- <toolset>gcc:<cxxflags>"-Wall -Wextra -pedantic -Wno-long-long"
++ <toolset>gcc:<cxxflags>"-Wall -Wextra -pedantic -Wno-long-long -fno-lto"
+
+ # others
+ <local-visibility>hidden
diff --git a/dev-libs/boost/files/boost-1.89.0-graph-remove-system-dependency.patch b/dev-libs/boost/files/boost-1.89.0-graph-remove-system-dependency.patch
new file mode 100644
index 000000000000..c3f511fcb2c2
--- /dev/null
+++ b/dev-libs/boost/files/boost-1.89.0-graph-remove-system-dependency.patch
@@ -0,0 +1,16 @@
+Do not depend on boost_system's test build directory since it no longer exists.
+
+--- boost_1_89_0/libs/graph/test/Jamfile.v2~
++++ boost_1_89_0/libs/graph/test/Jamfile.v2
+@@ -172,11 +172,9 @@ alias graph_test_with_filesystem : :
+ alias graph_test_with_filesystem :
+ [ run all_planar_input_files_test.cpp
+ ../../filesystem/build
+- ../../system/build
+ : $(PLANAR_INPUT_FILES) ]
+ [ run parallel_edges_loops_test.cpp
+ ../../filesystem/build
+- ../../system/build
+ : $(PLANAR_INPUT_FILES) ]
+ ;
+
diff --git a/dev-libs/boost/files/boost-1.89.0-predef-include-path.patch b/dev-libs/boost/files/boost-1.89.0-predef-include-path.patch
new file mode 100644
index 000000000000..153bb8e3df19
--- /dev/null
+++ b/dev-libs/boost/files/boost-1.89.0-predef-include-path.patch
@@ -0,0 +1,13 @@
+Use the correct path to the include file.
+
+--- boost_1_89_0/libs/predef/test/build.jam~
++++ boost_1_89_0/libs/predef/test/build.jam
+@@ -12,7 +12,7 @@ project
+ : requirements
+ # Add explicit dependency since we don't have header scanner for
+ # .m and .mm files.
+- <dependency>../include/boost/predef.h
++ <dependency>../../../boost/predef.h
+ ;
+
+ using testing ;
diff --git a/dev-libs/boost/files/boost-1.89.0-python-exclude-broken-tests.patch b/dev-libs/boost/files/boost-1.89.0-python-exclude-broken-tests.patch
new file mode 100644
index 000000000000..98321d8efd8b
--- /dev/null
+++ b/dev-libs/boost/files/boost-1.89.0-python-exclude-broken-tests.patch
@@ -0,0 +1,28 @@
+Exclude tests that are either obsolete or simply don't work.
+The upcast.cpp test error message looks suspiciously like the
+parameter_python build failure; probably due to a newer Python
+Object API break.
+
+--- a/libs/python/test/Jamfile
++++ b/libs/python/test/Jamfile
+@@ -111,11 +111,6 @@ bpl-test crossmod_exception
+ [ bpl-test andreas_beyer ]
+ [ bpl-test wrapper_held_type ]
+
+-[ bpl-test polymorphism2_auto_ptr
+- : polymorphism2_auto_ptr.py polymorphism2.py polymorphism2_auto_ptr.cpp
+- : [ requires auto_ptr ]
+-]
+-
+ [ bpl-test polymorphism ]
+ [ bpl-test polymorphism2 ]
+
+@@ -239,8 +234,6 @@ bpl-test crossmod_opaque
+ [ py-compile object_manager.cpp ]
+ [ py-compile copy_ctor_mutates_rhs.cpp ]
+
+-[ py-run upcast.cpp ]
+-
+ [ py-compile select_holder.cpp ]
+
+ [ run select_from_python_test.cpp ../src/converter/type_id.cpp
diff --git a/dev-libs/boost/files/boost-1.89.0-unordered-no-tbb.patch b/dev-libs/boost/files/boost-1.89.0-unordered-no-tbb.patch
new file mode 100644
index 000000000000..0f406f90f6d4
--- /dev/null
+++ b/dev-libs/boost/files/boost-1.89.0-unordered-no-tbb.patch
@@ -0,0 +1,14 @@
+Disable use of TBB aka OneAPI for tests due to some undiagnosed inclusion
+and/or linker issue: https://github.com/boostorg/unordered/issues/222
+
+--- boost_1_89_0/libs/unordered/test/Jamfile.v2~
++++ boost_1_89_0/libs/unordered/test/Jamfile.v2
+@@ -39,6 +39,8 @@ project
+ <toolset>gcc:<warnings-as-errors>on
+ <toolset>clang:<warnings-as-errors>on
+ <toolset>msvc:<warnings-as-errors>on
++
++ <cxxflags>-DBOOST_UNORDERED_DISABLE_PARALLEL_ALGORITHMS
+ ;
+
+ path-constant BOOST_UNORDERED_TEST_DIR : . ;
diff --git a/dev-libs/boost/files/boost-1.90.0-msm-std.patch b/dev-libs/boost/files/boost-1.90.0-msm-std.patch
new file mode 100644
index 000000000000..22a6d12745f8
--- /dev/null
+++ b/dev-libs/boost/files/boost-1.90.0-msm-std.patch
@@ -0,0 +1,27 @@
+The msm-unit-tests-cxxstd20 testsuite sets <cxxstd>20, but unfortunately
+this setting is prepended relative to the ebuild's setting:
+
+ x86_64-pc-linux-gnu-g++ -std=c++20 -fvisibility-inlines-hidden
+ -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
+ -pipe -O -std=c++17
+
+which causes an expected build error:
+
+ In file included from Back11OrthogonalDeferred3WithPuml.cpp:15:
+ boost/msm/front/puml/puml.hpp: In function 'constexpr auto boost::msm::front::puml::detail::parse_guard_simple(Func)':
+ boost/msm/front/puml/puml.hpp:511:25: error: lambda-expression in unevaluated context only available with
+ '-std=c++20' or '-std=gnu++20' [-Wtemplate-body]
+
+Setting -std=c++20 globally for the gcc toolchain lets all tests pass.
+
+--- boost_1_90_0/libs/msm/test/Jamfile.v2~
++++ boost_1_90_0/libs/msm/test/Jamfile.v2
+@@ -19,7 +19,7 @@ project
+ requirements
+ <library>/boost/msm//boost_msm
+ <include>.
+- <toolset>gcc:<cxxflags>"-ftemplate-depth-300 -g0"
++ <toolset>gcc:<cxxflags>"-ftemplate-depth-300 -g0 -std=c++20"
+ <toolset>darwin:<cxxflags>"-ftemplate-depth-300 -g0"
+ <toolset>intel:<cxxflags>"-g0"
+ <toolset>gcc:<optimization>off
diff --git a/dev-libs/boost/files/boost-1.90.0-unsigned-char-EOF.patch b/dev-libs/boost/files/boost-1.90.0-unsigned-char-EOF.patch
new file mode 100644
index 000000000000..da89b4965a87
--- /dev/null
+++ b/dev-libs/boost/files/boost-1.90.0-unsigned-char-EOF.patch
@@ -0,0 +1,41 @@
+https://github.com/boostorg/process/issues/536
+--- a/libs/process/src/ext/cmd.cpp
++++ b/libs/process/src/ext/cmd.cpp
+@@ -219,7 +219,7 @@ shell cmd(boost::process::v2::pid_type pid, error_code & ec)
+ procargs.resize(4096);
+ int f = ::open(("/proc/" + std::to_string(pid) + "/cmdline").c_str(), O_RDONLY);
+
+- while (procargs.back() != EOF)
++ while (procargs.back() != (char) EOF)
+ {
+ auto r = ::read(f, &*(procargs.end() - 4096), 4096);
+ if (r < 0)
+@@ -237,7 +237,7 @@ shell cmd(boost::process::v2::pid_type pid, error_code & ec)
+ }
+ ::close(f);
+
+- if (procargs.back() == EOF)
++ if (procargs.back() == (char) EOF)
+ procargs.pop_back();
+
+ auto argc = std::count(procargs.begin(), procargs.end(), '\0');
+--- a/libs/process/src/ext/env.cpp
++++ b/libs/process/src/ext/env.cpp
+@@ -127,7 +127,7 @@ native_env_iterator next(native_env_iterator nh)
+ }
+ native_env_iterator find_end(native_env_iterator nh)
+ {
+- while (*nh != EOF)
++ while (*nh != (char) EOF)
+ nh ++;
+ return nh ;
+ }
+@@ -318,7 +318,7 @@ env_view env(boost::process::v2::pid_type pid, error_code & ec)
+
+ int f = ::open(("/proc/" + std::to_string(pid) + "/environ").c_str(), O_RDONLY);
+
+- while (!procargs || procargs.get()[size - 1] != EOF)
++ while (!procargs || procargs.get()[size - 1] != (char) EOF)
+ {
+ std::unique_ptr<char, detail::ext::native_env_handle_deleter> buf{new char[size + 4096]};
+ if (size > 0)
diff --git a/dev-libs/boost/files/boost-1.91.0-spirit-test.patch b/dev-libs/boost/files/boost-1.91.0-spirit-test.patch
new file mode 100644
index 000000000000..03c3e2ba1f75
--- /dev/null
+++ b/dev-libs/boost/files/boost-1.91.0-spirit-test.patch
@@ -0,0 +1,16 @@
+
+x3/attribute_type_check.cpp:34:42: error: 'decay_t' is not a member of 'boost'; did you mean 'std::decay_t'?
+ 34 | static inline checked_attr_parser<boost::decay_t<Value>, Expected>
+ | ^~~~~~~
+
+--- a/libs/spirit/test/x3/attribute_type_check.cpp
++++ b/libs/spirit/test/x3/attribute_type_check.cpp
+@@ -31,7 +31,7 @@ struct checked_attr_parser : x3::attr_pa
+ };
+
+ template <typename Expected, typename Value>
+-static inline checked_attr_parser<boost::decay_t<Value>, Expected>
++static inline checked_attr_parser<std::decay_t<Value>, Expected>
+ checked_attr(Value&& value) { return { std::forward<Value>(value) }; }
+
+ // instantiate our type checker
diff --git a/dev-libs/boost/files/boost-1.91.0-uninitialised-buffer.patch b/dev-libs/boost/files/boost-1.91.0-uninitialised-buffer.patch
new file mode 100644
index 000000000000..c047fe0f2875
--- /dev/null
+++ b/dev-libs/boost/files/boost-1.91.0-uninitialised-buffer.patch
@@ -0,0 +1,13 @@
+https://github.com/boostorg/serialization/issues/333
+
+--- a/boost/archive/iterators/wchar_from_mb.hpp
++++ b/boost/archive/iterators/wchar_from_mb.hpp
+@@ -94,7 +94,7 @@ class wchar_from_mb
+
+ template<typename T>
+ struct sliding_buffer {
+- boost::array<T, 32> m_buffer;
++ boost::array<T, 32> m_buffer = {};
+ typename boost::array<T, 32>::const_iterator m_next_available;
+ typename boost::array<T, 32>::iterator m_next;
+ bool m_done;
diff --git a/dev-libs/boost/files/boost-1.91.0-wave-test-cfg.patch b/dev-libs/boost/files/boost-1.91.0-wave-test-cfg.patch
new file mode 100644
index 000000000000..d6df32d298da
--- /dev/null
+++ b/dev-libs/boost/files/boost-1.91.0-wave-test-cfg.patch
@@ -0,0 +1,12 @@
+--- a/libs/wave/test/testwave/testfiles/test.cfg
++++ b/libs/wave/test/testwave/testfiles/test.cfg
+@@ -112,7 +112,8 @@ t_5_003.cpp
+ #t_5_004.cpp
+ t_5_005.cpp
+ t_5_006.cpp
+-t_5_007.cpp
++# skip test due to error: could not find include file: boost/version.hpp
++# t_5_007.cpp
+ t_5_008.cpp
+ t_5_009.cpp
+ t_5_010.cpp
diff --git a/dev-libs/boost/metadata.xml b/dev-libs/boost/metadata.xml
new file mode 100644
index 000000000000..c6fc6b245c2c
--- /dev/null
+++ b/dev-libs/boost/metadata.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>soap@gentoo.org</email>
+ <name>David Seifert</name>
+ </maintainer>
+ <maintainer type="project">
+ <email>office@gentoo.org</email>
+ <description>Please CC on stabilisation bugs</description>
+ </maintainer>
+ <use>
+ <flag name="context">Build and install the Boost.Context (and Boost.Fiber) library and all other Boost libraries that depend on it</flag>
+ <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>
+ <flag name="doc">Install the full API documentation documentation. This takes over 200MB of extra disk space.</flag>
+ <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>
+ <flag name="numpy">Optionally build NumPy extensions when Boost.Python is enabled</flag>
+ <flag name="stacktrace">Build the full Boost.Stacktrace dynamic library instead of relying on the header-only implementation</flag>
+ <flag name="test-full">Enable tests that take a very long time to build or run</flag>
+ <flag name="tools">Build and install the boost tools (bcp, quickbook, inspect, wave)</flag>
+ </use>
+ <upstream>
+ <remote-id type="cpe">cpe:/a:boost:boost</remote-id>
+ </upstream>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>