diff options
| author | root <root@alpha.trunkmasters.com> | 2026-06-12 19:09:37 -0500 |
|---|---|---|
| committer | root <root@alpha.trunkmasters.com> | 2026-06-12 19:09:37 -0500 |
| commit | b590c8d7572b727d565cc0b8ff660d43569845de (patch) | |
| tree | 06f7a4102ea4e845df8b66660f252920d52952f9 /dev-libs/boost | |
| parent | 24f9cbfc4c34fdb6a6e03311674414e881ceab47 (diff) | |
| download | baldeagleos-repo-b590c8d7572b727d565cc0b8ff660d43569845de.tar.gz baldeagleos-repo-b590c8d7572b727d565cc0b8ff660d43569845de.tar.xz baldeagleos-repo-b590c8d7572b727d565cc0b8ff660d43569845de.zip | |
Adding metadata
Diffstat (limited to 'dev-libs/boost')
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> |
