diff --git a/sdk_container/src/third_party/portage-stable/dev-libs/boost/Manifest b/sdk_container/src/third_party/portage-stable/dev-libs/boost/Manifest index 9789dbd925..4c89701f99 100644 --- a/sdk_container/src/third_party/portage-stable/dev-libs/boost/Manifest +++ b/sdk_container/src/third_party/portage-stable/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/sdk_container/src/third_party/portage-stable/dev-libs/boost/boost-1.80.0-r1.ebuild b/sdk_container/src/third_party/portage-stable/dev-libs/boost/boost-1.80.0-r1.ebuild deleted file mode 100644 index 89992f5452..0000000000 --- a/sdk_container/src/third_party/portage-stable/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/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}" "${CXXFLAGS}" "${LDFLAGS}" "$(tc-getAR)" "$(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 \] : no \]/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 " ::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/sdk_container/src/third_party/portage-stable/dev-libs/boost/boost-1.82.0.ebuild b/sdk_container/src/third_party/portage-stable/dev-libs/boost/boost-1.82.0-r1.ebuild similarity index 91% rename from sdk_container/src/third_party/portage-stable/dev-libs/boost/boost-1.82.0.ebuild rename to sdk_container/src/third_party/portage-stable/dev-libs/boost/boost-1.82.0-r1.ebuild index efe85c3319..f257063c37 100644 --- a/sdk_container/src/third_party/portage-stable/dev-libs/boost/boost-1.82.0.ebuild +++ b/sdk_container/src/third_party/portage-stable/dev-libs/boost/boost-1.82.0-r1.ebuild @@ -16,7 +16,7 @@ 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" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~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 @@ -51,6 +51,7 @@ PATCHES=( "${FILESDIR}"/${PN}-1.81.0-phoenix-multiple-definitions.patch # (upstreamed) + "${FILESDIR}"/${PN}-1.82.0-context-arm64.patch ) python_bindings_needed() { @@ -71,13 +72,8 @@ create_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 + compiler="gcc" + compiler_version="$(gcc-version)" if use mpi; then local mpi_configuration="using mpi ;" @@ -194,8 +190,15 @@ src_configure() { # Use C++17 globally as of 1.80 append-cxxflags -std=c++17 - # need to enable LFS explicitly for 64-bit offsets on 32-bit hosts (#894564) - append-lfs-flags + 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() { @@ -242,16 +245,24 @@ multilib_src_install() { 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_" | \ + grep "libboost_" | \ cut -f1 -d' ') local r for r in ${refs}; do - ebegin " correcting reference to ${r}" + # 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}" \ + "${EPREFIX}/usr/lib/${r_basename}" \ "${d}" eend $? done diff --git a/sdk_container/src/third_party/portage-stable/dev-libs/boost/files/boost-1.80.0-disable_icu_rpath.patch b/sdk_container/src/third_party/portage-stable/dev-libs/boost/files/boost-1.80.0-disable_icu_rpath.patch deleted file mode 100644 index 1f4ec29fcf..0000000000 --- a/sdk_container/src/third_party/portage-stable/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 = $(icu-path)/include $(ICU_LINK) $(icu-path)/bin shared ; -- ICU64_OPTS = $(icu-path)/include $(ICU_LINK) $(icu-path)/bin64 shared ; -+ ICU_OPTS = $(icu_path)/include $(ICU_LINK) shared ; -+ ICU64_OPTS = $(icu_path)/include $(ICU_LINK) shared ; - } else - { - searched-lib icuuc : : icuuc diff --git a/sdk_container/src/third_party/portage-stable/dev-libs/boost/files/boost-1.80.0-python3.11.patch b/sdk_container/src/third_party/portage-stable/dev-libs/boost/files/boost-1.80.0-python3.11.patch deleted file mode 100644 index cdbc36ca95..0000000000 --- a/sdk_container/src/third_party/portage-stable/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 -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/sdk_container/src/third_party/portage-stable/dev-libs/boost/files/boost-1.80.0-unary-function.patch b/sdk_container/src/third_party/portage-stable/dev-libs/boost/files/boost-1.80.0-unary-function.patch deleted file mode 100644 index 7941d7c663..0000000000 --- a/sdk_container/src/third_party/portage-stable/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 -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/sdk_container/src/third_party/portage-stable/dev-libs/boost/files/boost-1.80.0-unordered-fix.patch b/sdk_container/src/third_party/portage-stable/dev-libs/boost/files/boost-1.80.0-unordered-fix.patch deleted file mode 100644 index 5177609438..0000000000 --- a/sdk_container/src/third_party/portage-stable/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 -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(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(n), -- groups + static_cast(n / N)); -+ iterator pbg(buckets + static_cast(n), -+ groups + static_cast(n / N)); - -- return pbg; -+ return pbg; -+ } else { -+ return this->end(); -+ } - } - - span 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 - 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 - float unordered_map::load_factor() const BOOST_NOEXCEPT - { -+ if (table_.size_ == 0) { -+ return 0.0f; -+ } -+ - BOOST_ASSERT(table_.bucket_count() != 0); - return static_cast(table_.size_) / - static_cast(table_.bucket_count()); -@@ -2506,6 +2510,10 @@ namespace boost { - template - float unordered_multimap::load_factor() const BOOST_NOEXCEPT - { -+ if (table_.size_ == 0) { -+ return 0.0f; -+ } -+ - BOOST_ASSERT(table_.bucket_count() != 0); - return static_cast(table_.size_) / - static_cast(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 - float unordered_set::load_factor() const BOOST_NOEXCEPT - { -+ if (table_.size_ == 0) { -+ return 0.0f; -+ } -+ - BOOST_ASSERT(table_.bucket_count() != 0); - return static_cast(table_.size_) / - static_cast(table_.bucket_count()); -@@ -1986,6 +1990,10 @@ namespace boost { - template - float unordered_multiset::load_factor() const BOOST_NOEXCEPT - { -+ if (table_.size_ == 0) { -+ return 0.0f; -+ } -+ - BOOST_ASSERT(table_.bucket_count() != 0); - return static_cast(table_.size_) / - static_cast(table_.bucket_count()); diff --git a/sdk_container/src/third_party/portage-stable/dev-libs/boost/files/boost-1.80.0-unordered-ftm-malloc.patch b/sdk_container/src/third_party/portage-stable/dev-libs/boost/files/boost-1.80.0-unordered-ftm-malloc.patch deleted file mode 100644 index 95b39e4bb6..0000000000 --- a/sdk_container/src/third_party/portage-stable/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 - #elif defined(sun) || defined(__sun) - #include --#elif (_POSIX_C_SOURCE >= 200112L) || (_XOPEN_SOURCE >= 600) -+#elif defined(_POSIX_VERSION) - #include - #else - #include - diff --git a/sdk_container/src/third_party/portage-stable/dev-libs/boost/files/boost-1.82.0-context-arm64.patch b/sdk_container/src/third_party/portage-stable/dev-libs/boost/files/boost-1.82.0-context-arm64.patch new file mode 100644 index 0000000000..a4efac7f2f --- /dev/null +++ b/sdk_container/src/third_party/portage-stable/dev-libs/boost/files/boost-1.82.0-context-arm64.patch @@ -0,0 +1,19 @@ +https://github.com/boostorg/context/commit/d039c8e4da79dbc76481236249e22892bfdde047 +https://bugs.gentoo.org/904132 + +From d039c8e4da79dbc76481236249e22892bfdde047 Mon Sep 17 00:00:00 2001 +From: Nikita Kniazev +Date: Thu, 23 Mar 2023 16:23:07 +0300 +Subject: [PATCH] Fix arm64 detection broken by recent B2 change + +--- a/libs/context/build/Jamfile.v2 ++++ b/libs/context/build/Jamfile.v2 +@@ -79,7 +79,7 @@ local rule default_abi ( ) + local tmp = sysv ; + if [ os.name ] = "NT" { tmp = ms ; } + else if [ os.name ] = "CYGWIN" { tmp = ms ; } +- else if [ os.platform ] = "ARM" { tmp = aapcs ; } ++ else if [ os.platform ] in ARM ARM64 { tmp = aapcs ; } + else if [ os.platform ] = "MIPS32" { tmp = o32 ; } + else if [ os.platform ] = "MIPS64" { tmp = n64 ; } + return $(tmp) ;