diff options
author | Andreas Sturmlechner <asturm@gentoo.org> | 2023-04-29 23:27:59 +0200 |
---|---|---|
committer | Andreas Sturmlechner <asturm@gentoo.org> | 2023-04-30 19:16:23 +0200 |
commit | 9abdf3274aa90bf4dec65675f25325f6502e8bd6 (patch) | |
tree | 7838178e69214c4ebcdcd4e3b2ebba349c735c2b /dev-libs/boost | |
parent | media-libs/harfbuzz: drop 5.3.1-r1 (diff) | |
download | gentoo-9abdf3274aa90bf4dec65675f25325f6502e8bd6.tar.gz gentoo-9abdf3274aa90bf4dec65675f25325f6502e8bd6.tar.bz2 gentoo-9abdf3274aa90bf4dec65675f25325f6502e8bd6.zip |
dev-libs/boost: drop 1.80.0-r1
Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
Diffstat (limited to 'dev-libs/boost')
-rw-r--r-- | dev-libs/boost/Manifest | 1 | ||||
-rw-r--r-- | dev-libs/boost/boost-1.80.0-r1.ebuild | 343 | ||||
-rw-r--r-- | dev-libs/boost/files/boost-1.80.0-disable_icu_rpath.patch | 13 | ||||
-rw-r--r-- | dev-libs/boost/files/boost-1.80.0-python3.11.patch | 33 | ||||
-rw-r--r-- | dev-libs/boost/files/boost-1.80.0-unary-function.patch | 27 | ||||
-rw-r--r-- | dev-libs/boost/files/boost-1.80.0-unordered-fix.patch | 192 | ||||
-rw-r--r-- | dev-libs/boost/files/boost-1.80.0-unordered-ftm-malloc.patch | 21 |
7 files changed, 0 insertions, 630 deletions
diff --git a/dev-libs/boost/Manifest b/dev-libs/boost/Manifest index 9789dbd925d6..4c89701f991c 100644 --- a/dev-libs/boost/Manifest +++ b/dev-libs/boost/Manifest @@ -1,3 +1,2 @@ -DIST boost_1_80_0.tar.bz2 115869904 BLAKE2B 507e811be7659442c41bc2d99811bd02a236dc94932e1a7a8cf256243b479f2d2707819cd99e016a51c9dadc215713e803afdd9ea4c105af8d5d2d28d3d06a1f SHA512 829a95b463473d69ff79ea41799c68429bb79d3b2321fbdb71df079af237ab01de9ad7e9612d8783d925730acada010068d2d1aa856c34244ee5c0ece16f208f DIST boost_1_81_0.tar.bz2 118797750 BLAKE2B ae57247fb80ee5a952881a99bdbe9a1d5622690879ef59053716647dc1121e70fdd322251837387b43357f1cd63c6d1ba285cf35c0c40e4f5ee28a929d7eacf7 SHA512 a04201e73da59f68fa02761b333c864a96ebaf268247b6b10cb19ed3d70ee9ad3da4c53123f2a7a4a9b9e1408793b51e1adbcc6fd09f60fecef3ca9522bb6b36 DIST boost_1_82_0.tar.bz2 121325129 BLAKE2B 16ee164ce7114d8134c861b3652c842750cec63ab0e79e4386d8cb9c56f7a454f9a9cfa75f25d9132a8d8d9e6f39d32a8e7535f83f52f355bbc40ef530163fa5 SHA512 6fddc452ca67f99f5c181e21c73d96feb7346e10886477c91b4abc2cdf447750599e0d42f935ef591222200ef6c033de078a7ad2bb577c81fa56a249b17420cb diff --git a/dev-libs/boost/boost-1.80.0-r1.ebuild b/dev-libs/boost/boost-1.80.0-r1.ebuild deleted file mode 100644 index 89992f545238..000000000000 --- a/dev-libs/boost/boost-1.80.0-r1.ebuild +++ /dev/null @@ -1,343 +0,0 @@ -# Copyright 1999-2023 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{9..11} ) - -inherit 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://boostorg.jfrog.io/artifactory/main/release/${PV}/source/boost_${MY_PV}.tar.bz2" -S="${WORKDIR}/${PN}_${MY_PV}" - -LICENSE="Boost-1.0" -SLOT="0/${PV}" # ${PV} instead of the major version due to bug 486122 -KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris ~x86-winnt" -IUSE="bzip2 context debug doc icu lzma +nls mpi numpy python tools zlib zstd" -REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" -# the tests will never fail because these are not intended as sanity -# tests at all. They are more a way for upstream to check their own code -# on new compilers. Since they would either be completely unreliable -# (failing for no good reason) or completely useless (never failing) -# there is no point in having them in the ebuild to begin with. -RESTRICT="test" - -RDEPEND=" - !<dev-libs/leatherman-1.12.0-r1 - bzip2? ( app-arch/bzip2:=[${MULTILIB_USEDEP}] ) - icu? ( >=dev-libs/icu-3.6:=[${MULTILIB_USEDEP}] ) - !icu? ( virtual/libiconv[${MULTILIB_USEDEP}] ) - lzma? ( app-arch/xz-utils:=[${MULTILIB_USEDEP}] ) - mpi? ( >=virtual/mpi-2.0-r4[${MULTILIB_USEDEP},cxx,threads] ) - python? ( - ${PYTHON_DEPS} - numpy? ( dev-python/numpy[${PYTHON_USEDEP}] ) - ) - zlib? ( sys-libs/zlib:=[${MULTILIB_USEDEP}] ) - zstd? ( app-arch/zstd:=[${MULTILIB_USEDEP}] )" -DEPEND="${RDEPEND}" -BDEPEND=">=dev-util/b2-4.9.2" - -PATCHES=( - "${FILESDIR}"/${PN}-1.80.0-disable_icu_rpath.patch - "${FILESDIR}"/${PN}-1.79.0-context-x32.patch - "${FILESDIR}"/${PN}-1.79.0-build-auto_index-tool.patch - # Boost.MPI's __init__.py doesn't work on Py3 - "${FILESDIR}"/${PN}-1.79.0-boost-mpi-python-PEP-328.patch - "${FILESDIR}"/${PN}-1.80.0-fix-mips1-transition.patch - # (upstreamed) - "${FILESDIR}"/${PN}-1.80.0-unordered-fix.patch - "${FILESDIR}"/${PN}-1.80.0-unary-function.patch - "${FILESDIR}"/${PN}-1.80.0-python3.11.patch - "${FILESDIR}"/${PN}-1.80.0-unordered-ftm-malloc.patch -) - -python_bindings_needed() { - multilib_is_native_abi && use python -} - -tools_needed() { - multilib_is_native_abi && use tools -} - -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)" - if [[ ${CHOST} == *-darwin* ]]; then - compiler="darwin" - compiler_version="$(gcc-fullversion)" - else - compiler="gcc" - compiler_version="$(gcc-version)" - fi - - if use mpi; then - local mpi_configuration="using mpi ;" - fi - - cat > "${user_config_jam}" <<- __EOF__ || die - using ${compiler} : ${compiler_version} : ${compiler_executable} : <cflags>"${CFLAGS}" <cxxflags>"${CXXFLAGS}" <linkflags>"${LDFLAGS}" <archiver>"$(tc-getAR)" <ranlib>"$(tc-getRANLIB)" ; - ${mpi_configuration} - __EOF__ - - if python_bindings_needed; 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 python_bindings_needed && 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 python_bindings_needed; 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() { - # 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') - --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) - ) - - 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 -} - -multilib_src_compile() { - ejam \ - --prefix="${EPREFIX}"/usr \ - "${OPTIONS[@]}" || die - - if tools_needed; then - pushd tools >/dev/null || die - ejam \ - --prefix="${EPREFIX}"/usr \ - "${OPTIONS[@]}" \ - || die "Building of Boost tools failed" - popd >/dev/null || die - 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 tools_needed; 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 - refs=$(otool -XL "${d}" | \ - sed -e '1d' -e 's/^\t//' | \ - grep "^libboost_" | \ - cut -f1 -d' ') - local r - for r in ${refs}; do - ebegin " correcting reference to ${r}" - install_name_tool -change \ - "${r}" \ - "${EPREFIX}/usr/lib/${r}" \ - "${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 "${S}"/libs/mpi/build/__init__.py - - 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 -} - -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.80.0-disable_icu_rpath.patch b/dev-libs/boost/files/boost-1.80.0-disable_icu_rpath.patch deleted file mode 100644 index 1f4ec29fcf00..000000000000 --- a/dev-libs/boost/files/boost-1.80.0-disable_icu_rpath.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- a/libs/locale/build/Jamfile.v2 -+++ b/libs/locale/build/Jamfile.v2 -@@ -82,8 +82,8 @@ ICU_LINK ?= [ modules.peek : ICU_LINK_LOCALE ] ; - - if $(ICU_LINK) - { -- ICU_OPTS = <include>$(icu-path)/include <linkflags>$(ICU_LINK) <dll-path>$(icu-path)/bin <runtime-link>shared ; -- ICU64_OPTS = <include>$(icu-path)/include <linkflags>$(ICU_LINK) <dll-path>$(icu-path)/bin64 <runtime-link>shared ; -+ ICU_OPTS = <include>$(icu_path)/include <linkflags>$(ICU_LINK) <runtime-link>shared ; -+ ICU64_OPTS = <include>$(icu_path)/include <linkflags>$(ICU_LINK) <runtime-link>shared ; - } else - { - searched-lib icuuc : : <name>icuuc diff --git a/dev-libs/boost/files/boost-1.80.0-python3.11.patch b/dev-libs/boost/files/boost-1.80.0-python3.11.patch deleted file mode 100644 index cdbc36ca953f..000000000000 --- a/dev-libs/boost/files/boost-1.80.0-python3.11.patch +++ /dev/null @@ -1,33 +0,0 @@ -https://github.com/boostorg/python/commit/a218babc8daee904a83f550fb66e5cb3f1cb3013 -https://github.com/boostorg/python/pull/385 - -From a218babc8daee904a83f550fb66e5cb3f1cb3013 Mon Sep 17 00:00:00 2001 -From: Victor Stinner <vstinner@python.org> -Date: Mon, 25 Apr 2022 10:51:46 +0200 -Subject: [PATCH] Fix enum_type_object type on Python 3.11 - -The enum_type_object type inherits from PyLong_Type which is not tracked -by the GC. Instances doesn't have to be tracked by the GC: remove the -Py_TPFLAGS_HAVE_GC flag. - -The Python C API documentation says: - - "To create a container type, the tp_flags field of the type object - must include the Py_TPFLAGS_HAVE_GC and provide an implementation of - the tp_traverse handler." - -https://docs.python.org/dev/c-api/gcsupport.html - -The new exception was introduced in Python 3.11 by: -https://github.com/python/cpython/issues/88429 ---- a/libs/python/src/object/enum.cpp -+++ b/libs/python/src/object/enum.cpp -@@ -113,7 +113,6 @@ static PyTypeObject enum_type_object = { - #if PY_VERSION_HEX < 0x03000000 - | Py_TPFLAGS_CHECKTYPES - #endif -- | Py_TPFLAGS_HAVE_GC - | Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /* tp_doc */ - 0, /* tp_traverse */ - diff --git a/dev-libs/boost/files/boost-1.80.0-unary-function.patch b/dev-libs/boost/files/boost-1.80.0-unary-function.patch deleted file mode 100644 index 7941d7c66395..000000000000 --- a/dev-libs/boost/files/boost-1.80.0-unary-function.patch +++ /dev/null @@ -1,27 +0,0 @@ -https://bugs.gentoo.org/869401 -https://github.com/boostorg/config/commit/f0af4a9184457939b89110795ae2d293582c5f66 -https://github.com/boostorg/container_hash/issues/24 - -From: jzmaddock <john@johnmaddock.co.uk> -Date: Mon, 11 Jul 2022 18:26:07 +0100 -Subject: [PATCH] The std lib unary/binary_function base classes are - deprecated/removed from libcpp15. Fixes - https://github.com/boostorg/container_hash/issues/24. - ---- a/boost/config/stdlib/libcpp.hpp -+++ b/boost/config/stdlib/libcpp.hpp -@@ -168,4 +168,13 @@ - # define BOOST_NO_CXX14_HDR_SHARED_MUTEX - #endif - -+#if _LIBCPP_VERSION >= 15000 -+// -+// Unary function is now deprecated in C++11 and later: -+// -+#if __cplusplus >= 201103L -+#define BOOST_NO_CXX98_FUNCTION_BASE -+#endif -+#endif -+ - // --- end --- - diff --git a/dev-libs/boost/files/boost-1.80.0-unordered-fix.patch b/dev-libs/boost/files/boost-1.80.0-unordered-fix.patch deleted file mode 100644 index 51776094386e..000000000000 --- a/dev-libs/boost/files/boost-1.80.0-unordered-fix.patch +++ /dev/null @@ -1,192 +0,0 @@ -From f9eae4153f4ea9aac4b6c46e660ec92824d5827f Mon Sep 17 00:00:00 2001 -From: Christian Mazakas <christian.mazakas@gmail.com> -Date: Tue, 16 Aug 2022 14:34:58 -0700 -Subject: [PATCH] Update code to be valid when the internal `buckets_` data - member is moved-from - ---- - boost/unordered/detail/fca.hpp | 18 +++++-- - .../boost/unordered/detail/implementation.hpp | 49 +++++++++++-------- - boost/unordered/unordered_map.hpp | 8 +++ - boost/unordered/unordered_set.hpp | 8 +++ - 4 files changed, 58 insertions(+), 25 deletions(-) - -diff --git a/boost/unordered/detail/fca.hpp b/boost/unordered/detail/fca.hpp -index 19fafe739..a1d14d957 100644 ---- a/boost/unordered/detail/fca.hpp -+++ b/boost/unordered/detail/fca.hpp -@@ -646,7 +646,7 @@ namespace boost { - - size_type bucket_count() const { return size_; } - -- iterator begin() const { return ++at(size_); } -+ iterator begin() const { return size_ == 0 ? end() : ++at(size_); } - - iterator end() const - { -@@ -660,6 +660,10 @@ namespace boost { - - local_iterator begin(size_type n) const - { -+ if (size_ == 0) { -+ return this->end(n); -+ } -+ - return local_iterator( - (buckets + static_cast<difference_type>(n))->next); - } -@@ -670,12 +674,16 @@ namespace boost { - - iterator at(size_type n) const - { -- std::size_t const N = group::N; -+ if (size_ > 0) { -+ std::size_t const N = group::N; - -- iterator pbg(buckets + static_cast<difference_type>(n), -- groups + static_cast<difference_type>(n / N)); -+ iterator pbg(buckets + static_cast<difference_type>(n), -+ groups + static_cast<difference_type>(n / N)); - -- return pbg; -+ return pbg; -+ } else { -+ return this->end(); -+ } - } - - span<Bucket> raw() -diff --git a/boost/unordered/detail/implementation.hpp b/boost/unordered/detail/implementation.hpp -index 2cc27c5d4..373236754 100644 ---- a/boost/unordered/detail/implementation.hpp -+++ b/boost/unordered/detail/implementation.hpp -@@ -2054,12 +2054,14 @@ namespace boost { - - std::size_t bucket_size(std::size_t index) const - { -- bucket_iterator itb = buckets_.at(index); -- node_pointer n = itb->next; - std::size_t count = 0; -- while (n) { -- ++count; -- n = n->next; -+ if (size_ > 0) { -+ bucket_iterator itb = buckets_.at(index); -+ node_pointer n = itb->next; -+ while (n) { -+ ++count; -+ n = n->next; -+ } - } - return count; - } -@@ -2420,11 +2422,14 @@ namespace boost { - node_pointer find_node_impl( - Key const& x, bucket_iterator itb) const - { -- key_equal const& pred = this->key_eq(); -- node_pointer p = itb->next; -- for (; p; p = p->next) { -- if (pred(x, extractor::extract(p->value()))) { -- break; -+ node_pointer p = node_pointer(); -+ if (itb != buckets_.end()) { -+ key_equal const& pred = this->key_eq(); -+ p = itb->next; -+ for (; p; p = p->next) { -+ if (pred(x, extractor::extract(p->value()))) { -+ break; -+ } - } - } - return p; -@@ -2453,11 +2458,13 @@ namespace boost { - inline iterator transparent_find( - Key const& k, Hash const& h, Pred const& pred) const - { -- std::size_t const key_hash = h(k); -- bucket_iterator itb = buckets_.at(buckets_.position(key_hash)); -- for (node_pointer p = itb->next; p; p = p->next) { -- if (BOOST_LIKELY(pred(k, extractor::extract(p->value())))) { -- return iterator(p, itb); -+ if (size_ > 0) { -+ std::size_t const key_hash = h(k); -+ bucket_iterator itb = buckets_.at(buckets_.position(key_hash)); -+ for (node_pointer p = itb->next; p; p = p->next) { -+ if (BOOST_LIKELY(pred(k, extractor::extract(p->value())))) { -+ return iterator(p, itb); -+ } - } - } - -@@ -2467,11 +2474,13 @@ namespace boost { - template <class Key> - node_pointer* find_prev(Key const& key, bucket_iterator itb) - { -- key_equal pred = this->key_eq(); -- for (node_pointer* pp = boost::addressof(itb->next); *pp; -- pp = boost::addressof((*pp)->next)) { -- if (pred(key, extractor::extract((*pp)->value()))) { -- return pp; -+ if (size_ > 0) { -+ key_equal pred = this->key_eq(); -+ for (node_pointer* pp = boost::addressof(itb->next); *pp; -+ pp = boost::addressof((*pp)->next)) { -+ if (pred(key, extractor::extract((*pp)->value()))) { -+ return pp; -+ } - } - } - typedef node_pointer* node_pointer_pointer; -diff --git a/boost/unordered/unordered_map.hpp b/boost/unordered/unordered_map.hpp -index 97908fb65..3e25a28a2 100644 ---- a/boost/unordered/unordered_map.hpp -+++ b/boost/unordered/unordered_map.hpp -@@ -2069,6 +2069,10 @@ namespace boost { - template <class K, class T, class H, class P, class A> - float unordered_map<K, T, H, P, A>::load_factor() const BOOST_NOEXCEPT - { -+ if (table_.size_ == 0) { -+ return 0.0f; -+ } -+ - BOOST_ASSERT(table_.bucket_count() != 0); - return static_cast<float>(table_.size_) / - static_cast<float>(table_.bucket_count()); -@@ -2506,6 +2510,10 @@ namespace boost { - template <class K, class T, class H, class P, class A> - float unordered_multimap<K, T, H, P, A>::load_factor() const BOOST_NOEXCEPT - { -+ if (table_.size_ == 0) { -+ return 0.0f; -+ } -+ - BOOST_ASSERT(table_.bucket_count() != 0); - return static_cast<float>(table_.size_) / - static_cast<float>(table_.bucket_count()); -diff --git a/boost/unordered/unordered_set.hpp b/boost/unordered/unordered_set.hpp -index 8721a68a0..82d323c6e 100644 ---- a/boost/unordered/unordered_set.hpp -+++ b/boost/unordered/unordered_set.hpp -@@ -1586,6 +1586,10 @@ namespace boost { - template <class T, class H, class P, class A> - float unordered_set<T, H, P, A>::load_factor() const BOOST_NOEXCEPT - { -+ if (table_.size_ == 0) { -+ return 0.0f; -+ } -+ - BOOST_ASSERT(table_.bucket_count() != 0); - return static_cast<float>(table_.size_) / - static_cast<float>(table_.bucket_count()); -@@ -1986,6 +1990,10 @@ namespace boost { - template <class T, class H, class P, class A> - float unordered_multiset<T, H, P, A>::load_factor() const BOOST_NOEXCEPT - { -+ if (table_.size_ == 0) { -+ return 0.0f; -+ } -+ - BOOST_ASSERT(table_.bucket_count() != 0); - return static_cast<float>(table_.size_) / - static_cast<float>(table_.bucket_count()); diff --git a/dev-libs/boost/files/boost-1.80.0-unordered-ftm-malloc.patch b/dev-libs/boost/files/boost-1.80.0-unordered-ftm-malloc.patch deleted file mode 100644 index 95b39e4bb6be..000000000000 --- a/dev-libs/boost/files/boost-1.80.0-unordered-ftm-malloc.patch +++ /dev/null @@ -1,21 +0,0 @@ -https://github.com/boostorg/align/commit/5ad7df63cd792fbdb801d600b93cad1a432f0151 -https://github.com/boostorg/align/pull/19 - -From 5ad7df63cd792fbdb801d600b93cad1a432f0151 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=C3=89rico=20Nogueira=20Rolim?= - <34201958+ericonr@users.noreply.github.com> -Date: Fri, 11 Nov 2022 18:29:45 -0300 -Subject: [PATCH] Don't use FTMs to determine implementation choice - ---- a/boost/align/aligned_alloc.hpp -+++ b/boost/align/aligned_alloc.hpp -@@ -38,7 +38,7 @@ Distributed under the Boost Software License, Version 1.0. - #include <boost/align/detail/aligned_alloc_posix.hpp> - #elif defined(sun) || defined(__sun) - #include <boost/align/detail/aligned_alloc_sunos.hpp> --#elif (_POSIX_C_SOURCE >= 200112L) || (_XOPEN_SOURCE >= 600) -+#elif defined(_POSIX_VERSION) - #include <boost/align/detail/aligned_alloc_posix.hpp> - #else - #include <boost/align/detail/aligned_alloc.hpp> - |