diff options
Diffstat (limited to 'dev-libs/boost')
18 files changed, 641 insertions, 409 deletions
diff --git a/dev-libs/boost/Manifest b/dev-libs/boost/Manifest index 05253944a437..48f0e20f3193 100644 --- a/dev-libs/boost/Manifest +++ b/dev-libs/boost/Manifest @@ -1,3 +1,2 @@ -DIST boost-1.77.0-patches-1.tar.xz 9612 BLAKE2B b56e45cee94329c97e8ee4e6f040832829e63fb0ae47f02fb1aa54720311f56e68b4d4d53557952bb280d60316ecf64ffc1a1e9c9411b70a733690270b85c2d2 SHA512 1358fa6d3afa45fe414f0c11bb583cc8b95737405c6fc3831f7485e22edac990e98849c06c851a4d0fe26bbeec7b8b40103090dc80417ae717ba33caa2088d86 -DIST boost_1_76_0.tar.bz2 110073117 BLAKE2B 45445e6a9725cb99131e0b831b2fac0840d083692c13887b41adeac5cb8b3732026db3641d6be20591a676b78a87fcf363eb9b1508f87ed26039bba6a1ced533 SHA512 5d68bed98c57e03b4cb2420d9b856e5f0669561a6142a4b0c9c8a58dc5b6b28e16ccbb16ac559c3a3198c45769a246bf996b96cb7b6a019dd15f05c2270e9429 -DIST boost_1_77_0.tar.bz2 110361537 BLAKE2B 106aeb09ec7705b595f2ca966a76c53c649eac6fac50d88c156862e0991c33c89a2f3a09edcbcb453fa44bf71cdde030b35d0a0889ad97b65f3a868cb877a532 SHA512 39b45c9b60bc5a2a4c669a4463d1272c1e093376b2fb374d7f20a84ea10a3e23bb04b335a735a83a04575731f874d9bff77e89acd947524b3fbbae1b26ae1f2f +DIST boost_1_84_0.tar.bz2 123110547 BLAKE2B a872ee00402be0383726020f4d13a7df6c2765c52eac2e09aab1604432931d26dd597503f5dcbbf788d7e7528d13c6d1dbfff1e85d22bf92c7828ef74cf2405d SHA512 5dfeb35198bb096e46cf9e131ef0334cb95bc0bf09f343f291b860b112598b3c36111bd8c232439c401a2b2fb832fa0c399a8d5b96afc60bd359dff070154497 +DIST boost_1_85_0.tar.bz2 124015250 BLAKE2B dd72a9299cd78d2c260e1c94e28ba04daaa352f5bd023d99e43caa3540b1e0f8c09fc04b91f68db0ef8532e4a91fdef0b66a80bf0f9f838303bccaf0729bf581 SHA512 b4489813a4192b57626589457932338cfc47c4ec05c19b3a58b2d8df9e95f022ff2f5f452811ff82d1cec4fb0a490e991c8825bad0fb5a81318d07a8788d8ca0 diff --git a/dev-libs/boost/boost-1.76.0-r1.ebuild b/dev-libs/boost/boost-1.84.0-r3.ebuild index fd0a7959b900..b9e822fe2043 100644 --- a/dev-libs/boost/boost-1.76.0-r1.ebuild +++ b/dev-libs/boost/boost-1.84.0-r3.ebuild @@ -1,14 +1,19 @@ -# Copyright 1999-2021 Gentoo Authors +# Copyright 1999-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 -EAPI=7 +EAPI=8 -PYTHON_COMPAT=( python3_{8..10} ) +# Keep an eye on both of these after releases for patches: +# * https://www.boost.org/patches/ +# * https://www.boost.org/users/history/version_${MY_PV}.html +# (e.g. https://www.boost.org/users/history/version_1_83_0.html) +# Note that the latter may sometimes feature patches not on the former too. + +PYTHON_COMPAT=( python3_{10..12} ) inherit flag-o-matic multiprocessing python-r1 toolchain-funcs multilib-minimal MY_PV="$(ver_rs 1- _)" -MAJOR_V="$(ver_cut 1-2)" DESCRIPTION="Boost Libraries for C++" HOMEPAGE="https://www.boost.org/" @@ -16,12 +21,10 @@ SRC_URI="https://boostorg.jfrog.io/artifactory/main/release/${PV}/source/boost_$ S="${WORKDIR}/${PN}_${MY_PV}" LICENSE="Boost-1.0" -SLOT="0/${PV}" # ${PV} instead ${MAJOR_V} due to bug 486122 -KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~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 static-libs +threads tools zlib zstd" -REQUIRED_USE=" - mpi? ( threads ) - python? ( ${PYTHON_REQUIRED_USE} )" +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 ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" +IUSE="bzip2 +context debug doc icu lzma +nls mpi numpy python +stacktrace 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 @@ -30,14 +33,11 @@ REQUIRED_USE=" RESTRICT="test" RDEPEND=" - !app-admin/eselect-boost - !dev-libs/boost-numpy - !<dev-libs/leatherman-1.12.0-r1 bzip2? ( app-arch/bzip2:=[${MULTILIB_USEDEP}] ) - icu? ( >=dev-libs/icu-3.6:=[${MULTILIB_USEDEP}] ) + icu? ( dev-libs/icu:=[${MULTILIB_USEDEP}] ) !icu? ( virtual/libiconv[${MULTILIB_USEDEP}] ) lzma? ( app-arch/xz-utils:=[${MULTILIB_USEDEP}] ) - mpi? ( >=virtual/mpi-2.0-r4[${MULTILIB_USEDEP},cxx,threads] ) + mpi? ( virtual/mpi[${MULTILIB_USEDEP},cxx,threads] ) python? ( ${PYTHON_DEPS} numpy? ( dev-python/numpy[${PYTHON_USEDEP}] ) @@ -45,27 +45,19 @@ RDEPEND=" zlib? ( sys-libs/zlib:=[${MULTILIB_USEDEP}] ) zstd? ( app-arch/zstd:=[${MULTILIB_USEDEP}] )" DEPEND="${RDEPEND}" -BDEPEND=">=dev-util/boost-build-${MAJOR_V}-r2" +BDEPEND=">=dev-build/b2-5.0.0" PATCHES=( - "${FILESDIR}"/${PN}-1.71.0-disable_icu_rpath.patch - "${FILESDIR}"/${PN}-1.71.0-context-x32.patch - "${FILESDIR}"/${PN}-1.71.0-build-auto_index-tool.patch - # Boost.MPI's __init__.py doesn't work on Py3 - "${FILESDIR}"/${PN}-1.73-boost-mpi-python-PEP-328.patch - "${FILESDIR}"/${PN}-1.74-CVE-2012-2677.patch - "${FILESDIR}"/${PN}-1.76-boost-numpy.patch - "${FILESDIR}"/${PN}-1.76-sparc-define.patch + "${FILESDIR}"/${PN}-1.81.0-disable_icu_rpath.patch + "${FILESDIR}"/${PN}-1.79.0-build-auto_index-tool.patch + + # upstreamed + "${FILESDIR}"/${PN}-1.83.0-math-gcc14.patch + "${FILESDIR}"/${PN}-1.79.0-context-x32.patch + "${FILESDIR}"/${PN}-1.84.0-signals2-patch1.patch + "${FILESDIR}"/${PN}-1.84.0-signals2-patch2.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 @@ -76,24 +68,19 @@ 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 ;" fi cat > "${user_config_jam}" <<- __EOF__ || die - using ${compiler} : ${compiler_version} : ${compiler_executable} : <cflags>"${CFLAGS}" <cxxflags>"${CXXFLAGS}" <linkflags>"${LDFLAGS}" ; + using ${compiler} : ${compiler_version} : ${compiler_executable} : <cflags>"${CPPFLAGS} ${CFLAGS}" <cxxflags>"${CPPFLAGS} ${CXXFLAGS}" <linkflags>"${LDFLAGS}" <archiver>"$(tc-getAR)" <ranlib>"$(tc-getRANLIB)" ; ${mpi_configuration} __EOF__ - if python_bindings_needed; then + if multilib_native_use python; then append_to_user_config() { local py_config if tc-is-cross-compiler; then @@ -106,7 +93,7 @@ create_user-config.jam() { python_foreach_impl append_to_user_config fi - if python_bindings_needed && use numpy; then + 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" @@ -141,7 +128,7 @@ ejam() { create_user-config.jam local b2_opts=( "--user-config=${BUILD_DIR}/user-config.jam" ) - if python_bindings_needed; then + if multilib_native_use python; then append_to_b2_opts() { b2_opts+=( python="${EPYTHON#python}" ) } @@ -159,24 +146,29 @@ 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 "-sICU_PATH=${ESYSROOT}/usr" '--disable-icu boost.locale.icu=off') - $(usex mpi '' '--without-mpi') - $(usex nls '' '--without-locale') - $(usex context '' '--without-context --without-coroutine --without-fiber') - $(usex threads '' '--without-thread') - --without-stacktrace - --boost-build="${BROOT}"/usr/share/boost-build/src + $(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=$(usex static-libs shared,static shared) + 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) @@ -191,8 +183,18 @@ src_configure() { append-ldflags -Wl,-headerpad_max_install_names fi - # Use C++14 globally as of 1.62 - append-cxxflags -std=c++14 + # 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() { @@ -200,7 +202,7 @@ multilib_src_compile() { --prefix="${EPREFIX}"/usr \ "${OPTIONS[@]}" || die - if tools_needed; then + if multilib_native_use tools; then pushd tools >/dev/null || die ejam \ --prefix="${EPREFIX}"/usr \ @@ -217,19 +219,7 @@ multilib_src_install() { --libdir="${ED}"/usr/$(get_libdir) \ "${OPTIONS[@]}" install || die "Installation of Boost libraries failed" - pushd "${ED}"/usr/$(get_libdir) >/dev/null || die - - local ext=$(get_libname) - if use threads; then - local f - for f in *${ext}; do - dosym ${f} /usr/$(get_libdir)/${f/${ext}/-mt${ext}} - done - fi - - popd >/dev/null || die - - if tools_needed; then + if multilib_native_use tools; then dobin dist/bin/* insinto /usr/share @@ -251,16 +241,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 @@ -278,7 +276,6 @@ multilib_src_install_all() { 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 diff --git a/dev-libs/boost/boost-1.77.0-r4.ebuild b/dev-libs/boost/boost-1.85.0.ebuild index 1ff2d52c6c8e..30577a1da191 100644 --- a/dev-libs/boost/boost-1.77.0-r4.ebuild +++ b/dev-libs/boost/boost-1.85.0.ebuild @@ -1,25 +1,29 @@ -# Copyright 1999-2021 Gentoo Authors +# Copyright 1999-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 -PYTHON_COMPAT=( python3_{8..10} ) +# Keep an eye on both of these after releases for patches: +# * https://www.boost.org/patches/ +# * https://www.boost.org/users/history/version_${MY_PV}.html +# (e.g. https://www.boost.org/users/history/version_1_83_0.html) +# Note that the latter may sometimes feature patches not on the former too. + +PYTHON_COMPAT=( python3_{10..12} ) inherit flag-o-matic multiprocessing python-r1 toolchain-funcs multilib-minimal MY_PV="$(ver_rs 1- _)" -MAJOR_V="$(ver_cut 1-2)" 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" -SRC_URI+=" https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${P}-patches-1.tar.xz" S="${WORKDIR}/${PN}_${MY_PV}" LICENSE="Boost-1.0" -SLOT="0/${PV}" # ${PV} instead ${MAJOR_V} due to bug 486122 -KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~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" +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 ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" +IUSE="bzip2 +context debug doc icu lzma +nls mpi numpy python +stacktrace 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 @@ -29,14 +33,11 @@ REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" RESTRICT="test" RDEPEND=" - !app-admin/eselect-boost - !dev-libs/boost-numpy - !<dev-libs/leatherman-1.12.0-r1 bzip2? ( app-arch/bzip2:=[${MULTILIB_USEDEP}] ) - icu? ( >=dev-libs/icu-3.6:=[${MULTILIB_USEDEP}] ) + icu? ( dev-libs/icu:=[${MULTILIB_USEDEP}] ) !icu? ( virtual/libiconv[${MULTILIB_USEDEP}] ) lzma? ( app-arch/xz-utils:=[${MULTILIB_USEDEP}] ) - mpi? ( >=virtual/mpi-2.0-r4[${MULTILIB_USEDEP},cxx,threads] ) + mpi? ( virtual/mpi[${MULTILIB_USEDEP},cxx,threads] ) python? ( ${PYTHON_DEPS} numpy? ( dev-python/numpy[${PYTHON_USEDEP}] ) @@ -44,30 +45,14 @@ RDEPEND=" zlib? ( sys-libs/zlib:=[${MULTILIB_USEDEP}] ) zstd? ( app-arch/zstd:=[${MULTILIB_USEDEP}] )" DEPEND="${RDEPEND}" -BDEPEND=">=dev-util/boost-build-${MAJOR_V}-r2" +BDEPEND=">=dev-build/b2-5.0.0" PATCHES=( - "${WORKDIR}"/${PN}-1.71.0-disable_icu_rpath.patch - "${WORKDIR}"/${PN}-1.71.0-context-x32.patch - "${WORKDIR}"/${PN}-1.71.0-build-auto_index-tool.patch - # Boost.MPI's __init__.py doesn't work on Py3 - "${WORKDIR}"/${PN}-1.73-boost-mpi-python-PEP-328.patch - "${WORKDIR}"/${PN}-1.74-CVE-2012-2677.patch - "${WORKDIR}"/${PN}-1.76-sparc-define.patch - "${WORKDIR}"/${PN}-1.77-math-deprecated-include.patch - "${WORKDIR}"/${PN}-1.77-geometry.patch - "${FILESDIR}"/${P}-python-3.10.patch - "${FILESDIR}"/${P}-fix-process-include.patch + "${FILESDIR}"/${PN}-1.81.0-disable_icu_rpath.patch + "${FILESDIR}"/${PN}-1.79.0-build-auto_index-tool.patch + "${FILESDIR}"/${PN}-1.85.0-bcp-filesystem.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 @@ -78,24 +63,19 @@ 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 ;" fi cat > "${user_config_jam}" <<- __EOF__ || die - using ${compiler} : ${compiler_version} : ${compiler_executable} : <cflags>"${CFLAGS}" <cxxflags>"${CXXFLAGS}" <linkflags>"${LDFLAGS}" ; + using ${compiler} : ${compiler_version} : ${compiler_executable} : <cflags>"${CPPFLAGS} ${CFLAGS}" <cxxflags>"${CPPFLAGS} ${CXXFLAGS}" <linkflags>"${LDFLAGS}" <archiver>"$(tc-getAR)" <ranlib>"$(tc-getRANLIB)" ; ${mpi_configuration} __EOF__ - if python_bindings_needed; then + if multilib_native_use python; then append_to_user_config() { local py_config if tc-is-cross-compiler; then @@ -108,7 +88,7 @@ create_user-config.jam() { python_foreach_impl append_to_user_config fi - if python_bindings_needed && use numpy; then + 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" @@ -143,7 +123,7 @@ ejam() { create_user-config.jam local b2_opts=( "--user-config=${BUILD_DIR}/user-config.jam" ) - if python_bindings_needed; then + if multilib_native_use python; then append_to_b2_opts() { b2_opts+=( python="${EPYTHON#python}" ) } @@ -161,18 +141,24 @@ 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 "-sICU_PATH=${ESYSROOT}/usr" '--disable-icu boost.locale.icu=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/boost-build/src + $(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 @@ -192,8 +178,18 @@ src_configure() { append-ldflags -Wl,-headerpad_max_install_names fi - # Use C++14 globally as of 1.62 - append-cxxflags -std=c++14 + # 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() { @@ -201,7 +197,7 @@ multilib_src_compile() { --prefix="${EPREFIX}"/usr \ "${OPTIONS[@]}" || die - if tools_needed; then + if multilib_native_use tools; then pushd tools >/dev/null || die ejam \ --prefix="${EPREFIX}"/usr \ @@ -218,7 +214,7 @@ multilib_src_install() { --libdir="${ED}"/usr/$(get_libdir) \ "${OPTIONS[@]}" install || die "Installation of Boost libraries failed" - if tools_needed; then + if multilib_native_use tools; then dobin dist/bin/* insinto /usr/share @@ -240,16 +236,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 @@ -267,7 +271,6 @@ multilib_src_install_all() { 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 diff --git a/dev-libs/boost/files/boost-1.71.0-disable_icu_rpath.patch b/dev-libs/boost/files/boost-1.71.0-disable_icu_rpath.patch deleted file mode 100644 index 32faf8d0eb31..000000000000 --- a/dev-libs/boost/files/boost-1.71.0-disable_icu_rpath.patch +++ /dev/null @@ -1,29 +0,0 @@ ---- a/libs/locale/build/Jamfile.v2 -+++ b/libs/locale/build/Jamfile.v2 -@@ -65,8 +65,8 @@ - - 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 - { -@@ -124,7 +124,6 @@ - <library>icuuc/<link>shared/<runtime-link>shared - <library>icudt/<link>shared/<runtime-link>shared - <library>icuin/<link>shared/<runtime-link>shared -- <dll-path>$(ICU_PATH)/bin - <runtime-link>shared ; - - -@@ -183,7 +182,6 @@ - <library>icuuc_64/<link>shared/<runtime-link>shared - <library>icudt_64/<link>shared/<runtime-link>shared - <library>icuin_64/<link>shared/<runtime-link>shared -- <dll-path>$(ICU_PATH)/bin64 - <runtime-link>shared ; - - diff --git a/dev-libs/boost/files/boost-1.73-boost-mpi-python-PEP-328.patch b/dev-libs/boost/files/boost-1.73-boost-mpi-python-PEP-328.patch deleted file mode 100644 index 444db2b60952..000000000000 --- a/dev-libs/boost/files/boost-1.73-boost-mpi-python-PEP-328.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- a/libs/mpi/build/__init__.py -+++ b/libs/mpi/build/__init__.py -@@ -1,10 +1,12 @@ -+from __future__ import absolute_import -+ - import sys - if sys.platform == 'linux2': - import DLFCN as dl - flags = sys.getdlopenflags() - sys.setdlopenflags(dl.RTLD_NOW|dl.RTLD_GLOBAL) -- import mpi -+ from . import mpi - sys.setdlopenflags(flags) - else: -- import mpi -+ from . import mpi - diff --git a/dev-libs/boost/files/boost-1.74-CVE-2012-2677.patch b/dev-libs/boost/files/boost-1.74-CVE-2012-2677.patch deleted file mode 100644 index ff947f74f1c4..000000000000 --- a/dev-libs/boost/files/boost-1.74-CVE-2012-2677.patch +++ /dev/null @@ -1,125 +0,0 @@ -https://src.fedoraproject.org/rpms/boost/raw/master/f/boost-1.58.0-pool.patch -https://bugzilla.redhat.com/show_bug.cgi?id=828856 -https://bugs.gentoo.org/620468 -https://svn.boost.org/trac10/ticket/6701 - -Index: boost/pool/pool.hpp -=================================================================== ---- a/boost/pool/pool.hpp (revision 78317) -+++ b/boost/pool/pool.hpp (revision 78326) -@@ -27,4 +27,6 @@ - #include <boost/pool/poolfwd.hpp> - -+// std::numeric_limits -+#include <boost/limits.hpp> - // boost::integer::static_lcm - #include <boost/integer/common_factor_ct.hpp> -@@ -358,4 +360,11 @@ - } - -+ size_type max_chunks() const -+ { //! Calculated maximum number of memory chunks that can be allocated in a single call by this Pool. -+ size_type partition_size = alloc_size(); -+ size_type POD_size = integer::static_lcm<sizeof(size_type), sizeof(void *)>::value + sizeof(size_type); -+ return (std::numeric_limits<size_type>::max() - POD_size) / alloc_size(); -+ } -+ - static void * & nextof(void * const ptr) - { //! \returns Pointer dereferenced. -@@ -377,5 +388,7 @@ - //! the first time that object needs to allocate system memory. - //! The default is 32. This parameter may not be 0. -- //! \param nmax_size is the maximum number of chunks to allocate in one block. -+ //! \param nmax_size is the maximum number of chunks to allocate in one block. -+ set_next_size(nnext_size); -+ set_max_size(nmax_size); - } - -@@ -400,7 +413,7 @@ - } - void set_next_size(const size_type nnext_size) -- { //! Set number of chunks to request from the system the next time that object needs to allocate system memory. This value should never be set to 0. -- //! \returns nnext_size. -- next_size = start_size = nnext_size; -+ { //! Set number of chunks to request from the system the next time that object needs to allocate system memory. This value should never be set to 0. -+ BOOST_USING_STD_MIN(); -+ next_size = start_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(nnext_size, max_chunks()); - } - size_type get_max_size() const -@@ -410,5 +423,6 @@ - void set_max_size(const size_type nmax_size) - { //! Set max_size. -- max_size = nmax_size; -+ BOOST_USING_STD_MIN(); -+ max_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(nmax_size, max_chunks()); - } - size_type get_requested_size() const -@@ -713,7 +727,7 @@ - BOOST_USING_STD_MIN(); - if(!max_size) -- next_size <<= 1; -+ set_next_size(next_size << 1); - else if( next_size*partition_size/requested_size < max_size) -- next_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size*requested_size/ partition_size); -+ set_next_size(min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size * requested_size / partition_size)); - - // initialize it, -@@ -753,7 +767,7 @@ - BOOST_USING_STD_MIN(); - if(!max_size) -- next_size <<= 1; -+ set_next_size(next_size << 1); - else if( next_size*partition_size/requested_size < max_size) -- next_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size*requested_size/ partition_size); -+ set_next_size(min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size * requested_size / partition_size)); - - // initialize it, -@@ -797,4 +811,6 @@ - //! \returns Address of chunk n if allocated ok. - //! \returns 0 if not enough memory for n chunks. -+ if (n > max_chunks()) -+ return 0; - - const size_type partition_size = alloc_size(); -@@ -845,7 +861,7 @@ - BOOST_USING_STD_MIN(); - if(!max_size) -- next_size <<= 1; -+ set_next_size(next_size << 1); - else if( next_size*partition_size/requested_size < max_size) -- next_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size*requested_size/ partition_size); -+ set_next_size(min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size * requested_size / partition_size)); - - // insert it into the list, -Index: libs/pool/test/test_bug_6701.cpp -=================================================================== ---- a/libs/pool/test/test_bug_6701.cpp (revision 78326) -+++ b/libs/pool/test/test_bug_6701.cpp (revision 78326) -@@ -0,0 +1,27 @@ -+/* Copyright (C) 2012 Étienne Dupuis -+* -+* Use, modification and distribution is subject to the -+* Boost Software License, Version 1.0. (See accompanying -+* file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) -+*/ -+ -+// Test of bug #6701 (https://svn.boost.org/trac/boost/ticket/6701) -+ -+#include <boost/pool/object_pool.hpp> -+#include <boost/limits.hpp> -+ -+int main() -+{ -+ boost::pool<> p(1024, std::numeric_limits<size_t>::max() / 768); -+ -+ void *x = p.malloc(); -+ BOOST_ASSERT(!x); -+ -+ BOOST_ASSERT(std::numeric_limits<size_t>::max() / 1024 >= p.get_next_size()); -+ BOOST_ASSERT(std::numeric_limits<size_t>::max() / 1024 >= p.get_max_size()); -+ -+ void *y = p.ordered_malloc(std::numeric_limits<size_t>::max() / 768); -+ BOOST_ASSERT(!y); -+ -+ return 0; -+} diff --git a/dev-libs/boost/files/boost-1.76-boost-numpy.patch b/dev-libs/boost/files/boost-1.76-boost-numpy.patch deleted file mode 100644 index d9af132039e4..000000000000 --- a/dev-libs/boost/files/boost-1.76-boost-numpy.patch +++ /dev/null @@ -1,23 +0,0 @@ -From 0796305c863804a2b31610507c531da5c0408422 Mon Sep 17 00:00:00 2001 -From: Peter Dimov <pdimov@gmail.com> -Date: Mon, 24 May 2021 22:14:55 +0300 -Subject: [PATCH] Use the /python//numpy target instead of [ numpy.include ] - (fixes #361) - ---- - libs/python/build/Jamfile | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/libs/python/build/Jamfile b/libs/python/build/Jamfile -index dbc9fb203..03b69a25d 100644 ---- a/libs/python/build/Jamfile -+++ b/libs/python/build/Jamfile -@@ -117,7 +117,7 @@ lib boost_numpy - <define>BOOST_NUMPY_SOURCE - [ cond [ python.numpy ] : <library>/python//python_for_extensions ] - [ unless [ python.numpy ] : <build>no ] -- <include>$(numpy-include) -+ <library>/python//numpy - <library>boost_python - <python-debugging>on:<define>BOOST_DEBUG_PYTHON - -<tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag diff --git a/dev-libs/boost/files/boost-1.76-sparc-define.patch b/dev-libs/boost/files/boost-1.76-sparc-define.patch deleted file mode 100644 index b3909ee31376..000000000000 --- a/dev-libs/boost/files/boost-1.76-sparc-define.patch +++ /dev/null @@ -1,21 +0,0 @@ -https://github.com/boostorg/predef/commit/1be0e4a2d8db15a405f64a6f65507b87c1be7e1a.patch - -From 1be0e4a2d8db15a405f64a6f65507b87c1be7e1a Mon Sep 17 00:00:00 2001 -From: tkoecker <tkoecker@gmx.net> -Date: Fri, 21 May 2021 16:31:11 +0200 -Subject: [PATCH] added missing brackets (#118) ---- a/boost/predef/architecture/sparc.h -+++ b/boost/predef/architecture/sparc.h -@@ -34,10 +34,10 @@ Distributed under the Boost Software License, Version 1.0. - - #if defined(__sparc__) || defined(__sparc) - # undef BOOST_ARCH_SPARC --# if !defined(BOOST_ARCH_SPARC) && (defined(__sparcv9) || defined(__sparc_v9__) -+# if !defined(BOOST_ARCH_SPARC) && (defined(__sparcv9) || defined(__sparc_v9__)) - # define BOOST_ARCH_SPARC BOOST_VERSION_NUMBER(9,0,0) - # endif --# if !defined(BOOST_ARCH_SPARC) && (defined(__sparcv8) || defined(__sparc_v8__) -+# if !defined(BOOST_ARCH_SPARC) && (defined(__sparcv8) || defined(__sparc_v8__)) - # define BOOST_ARCH_SPARC BOOST_VERSION_NUMBER(8,0,0) - # endif - # if !defined(BOOST_ARCH_SPARC) diff --git a/dev-libs/boost/files/boost-1.77.0-fix-process-include.patch b/dev-libs/boost/files/boost-1.77.0-fix-process-include.patch deleted file mode 100644 index 566603b360ac..000000000000 --- a/dev-libs/boost/files/boost-1.77.0-fix-process-include.patch +++ /dev/null @@ -1,19 +0,0 @@ -https://github.com/boostorg/process/commit/e08374ed95ac33865bda40602c94909e7cd9607f.patch -https://bugs.gentoo.org/827899 - -From: Eddie-cz <48474051+Eddie-cz@users.noreply.github.com> -Date: Mon, 2 Aug 2021 10:49:42 +0200 -Subject: [PATCH] Update wchar_t.hpp - ---- a/boost/process/detail/traits/wchar_t.hpp -+++ b/boost/process/detail/traits/wchar_t.hpp -@@ -12,6 +12,8 @@ - #include <boost/process/detail/traits/env.hpp> - #include <boost/process/locale.hpp> - -+#include <algorithm> -+ - namespace boost { namespace process { namespace detail { - - //template - diff --git a/dev-libs/boost/files/boost-1.77.0-python-3.10.patch b/dev-libs/boost/files/boost-1.77.0-python-3.10.patch deleted file mode 100644 index 69181b1fa42b..000000000000 --- a/dev-libs/boost/files/boost-1.77.0-python-3.10.patch +++ /dev/null @@ -1,44 +0,0 @@ -https://github.com/boostorg/boost_install/commit/0605dadfacf51994dcd8c5c82fb733dc6fa24073 - -From: Martin Jansa <martin.jansa@lge.com> -Date: Tue, 19 Oct 2021 12:24:31 +0000 -Subject: [PATCH] BoostConfig.cmake: allow searching for python310 - -* accept double digits in Python3_VERSION_MINOR - -* if someone is using e.g.: - find_package(Python3 REQUIRED) - find_package(Boost REQUIRED python${Python3_VERSION_MAJOR}${Python3_VERSION_MINOR}) - - with python-3.10 then it currently fails with: - - -- Found PythonLibs: /usr/lib/libpython3.10.so (found version "3.10.0") - -- Found Python3: -native/usr/bin/python3-native/python3 (found version "3.10.0") found components: Interpreter - CMake Error at /usr/lib/cmake/Boost-1.77.0/BoostConfig.cmake:141 (find_package): - Could not find a package configuration file provided by "boost_python310" - (requested version 1.77.0) with any of the following names: - - boost_python310Config.cmake - boost_python310-config.cmake - - Add the installation prefix of "boost_python310" to CMAKE_PREFIX_PATH or - set "boost_python310_DIR" to a directory containing one of the above files. - If "boost_python310" provides a separate development package or SDK, be - sure it has been installed. - Call Stack (most recent call first): - /usr/lib/cmake/Boost-1.77.0/BoostConfig.cmake:258 (boost_find_component) - /usr/share/cmake-3.21/Modules/FindBoost.cmake:594 (find_package) - CMakeLists.txt:18 (find_package) - -Signed-off-by: Martin Jansa <martin.jansa@lge.com> ---- a/tools/boost_install/BoostConfig.cmake -+++ b/tools/boost_install/BoostConfig.cmake -@@ -113,7 +113,7 @@ macro(boost_find_component comp required quiet) - set(_BOOST_REQUIRED REQUIRED) - endif() - -- if("${comp}" MATCHES "^(python|numpy|mpi_python)([1-9])([0-9])$") -+ if("${comp}" MATCHES "^(python|numpy|mpi_python)([1-9])([0-9][0-9]?)$") - - # handle pythonXY and numpyXY versioned components for compatibility - diff --git a/dev-libs/boost/files/boost-1.71.0-build-auto_index-tool.patch b/dev-libs/boost/files/boost-1.79.0-build-auto_index-tool.patch index ca793b9d06eb..ca793b9d06eb 100644 --- a/dev-libs/boost/files/boost-1.71.0-build-auto_index-tool.patch +++ b/dev-libs/boost/files/boost-1.79.0-build-auto_index-tool.patch diff --git a/dev-libs/boost/files/boost-1.71.0-context-x32.patch b/dev-libs/boost/files/boost-1.79.0-context-x32.patch index 9ee3d545d618..625599152328 100644 --- a/dev-libs/boost/files/boost-1.71.0-context-x32.patch +++ b/dev-libs/boost/files/boost-1.79.0-context-x32.patch @@ -1,3 +1,10 @@ +https://github.com/boostorg/context/pull/247 + +From 922e033fa1464e506c82a0d6980103268f7197cf Mon Sep 17 00:00:00 2001 +From: David Seifert <soap@gentoo.org> +Date: Tue, 23 Jan 2024 13:23:29 +0100 +Subject: [PATCH] Fix x32 build on x86-64 + --- a/libs/context/src/asm/jump_i386_sysv_elf_gas.S +++ b/libs/context/src/asm/jump_i386_sysv_elf_gas.S @@ -24,6 +24,10 @@ @@ -11,7 +18,7 @@ .file "jump_i386_sysv_elf_gas.S" .text .globl jump_fcontext -@@ -81,3 +85,5 @@ +@@ -91,3 +95,5 @@ jump_fcontext: /* Mark that we don't need executable stack. */ .section .note.GNU-stack,"",%progbits @@ -30,7 +37,7 @@ .file "make_i386_sysv_elf_gas.S" .text .globl make_fcontext -@@ -105,3 +109,5 @@ +@@ -111,3 +115,5 @@ finish: /* Mark that we don't need executable stack. */ .section .note.GNU-stack,"",%progbits diff --git a/dev-libs/boost/files/boost-1.81.0-disable_icu_rpath.patch b/dev-libs/boost/files/boost-1.81.0-disable_icu_rpath.patch new file mode 100644 index 000000000000..a64d2d8675ee --- /dev/null +++ b/dev-libs/boost/files/boost-1.81.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.83.0-math-gcc14.patch b/dev-libs/boost/files/boost-1.83.0-math-gcc14.patch new file mode 100644 index 000000000000..935f1486bfee --- /dev/null +++ b/dev-libs/boost/files/boost-1.83.0-math-gcc14.patch @@ -0,0 +1,19 @@ +https://github.com/boostorg/math/pull/1057 + +From b3a21bcbcbd95c23da594ff53c3a48e38f0ff9f3 Mon Sep 17 00:00:00 2001 +From: Matt Borland <matt@mattborland.com> +Date: Wed, 13 Dec 2023 08:43:43 +0100 +Subject: [PATCH] Fix cstdfloat numeric limits detection macro for libstdc++14 + +--- a/boost/math/cstdfloat/cstdfloat_limits.hpp ++++ b/boost/math/cstdfloat/cstdfloat_limits.hpp +@@ -24,7 +24,7 @@ + #pragma GCC system_header + #endif + +- #if defined(BOOST_CSTDFLOAT_HAS_INTERNAL_FLOAT128_T) && defined(BOOST_MATH_USE_FLOAT128) && !defined(BOOST_CSTDFLOAT_NO_LIBQUADMATH_SUPPORT) && (!defined(__GNUC__) || (defined(__GNUC__) && __GNUC__ < 14)) ++ #if defined(BOOST_CSTDFLOAT_HAS_INTERNAL_FLOAT128_T) && defined(BOOST_MATH_USE_FLOAT128) && !defined(BOOST_CSTDFLOAT_NO_LIBQUADMATH_SUPPORT) && (!defined(_GLIBCXX_RELEASE) || (defined(_GLIBCXX_RELEASE) && _GLIBCXX_RELEASE < 14)) + + #include <limits> + #include <boost/math/tools/nothrow.hpp> + diff --git a/dev-libs/boost/files/boost-1.84.0-signals2-patch1.patch b/dev-libs/boost/files/boost-1.84.0-signals2-patch1.patch new file mode 100644 index 000000000000..9c07bd8f06cf --- /dev/null +++ b/dev-libs/boost/files/boost-1.84.0-signals2-patch1.patch @@ -0,0 +1,124 @@ +https://github.com/boostorg/signals2/issues/70 + +From 2ba258f7b465e7bde14663ca3a966019b4ec3694 Mon Sep 17 00:00:00 2001 +From: Frank Mori Hess <fmh6jj@gmail.com> +Date: Sat, 30 Dec 2023 14:34:58 -0500 +Subject: [PATCH] Fix disconnect by slot when the slot is another signal. + +--- a/boost/signals2/detail/signal_template.hpp ++++ b/boost/signals2/detail/signal_template.hpp +@@ -103,9 +103,9 @@ namespace boost + BOOST_SIGNALS2_FORWARDED_ARGS(BOOST_SIGNALS2_NUM_ARGS)); + } + template<typename T> +- bool operator==(const T &other) const ++ bool contains(const T &other) const + { +- return _fun == other; ++ return _fun.contains(other); + } + private: + BOOST_SIGNALS2_BOUND_EXTENDED_SLOT_FUNCTION_N(BOOST_SIGNALS2_NUM_ARGS)() +@@ -115,6 +115,8 @@ namespace boost + boost::shared_ptr<connection> _connection; + }; + ++ template<BOOST_SIGNALS2_SIGNAL_TEMPLATE_DECL(BOOST_SIGNALS2_NUM_ARGS)> ++ class BOOST_SIGNALS2_WEAK_SIGNAL_CLASS_NAME(BOOST_SIGNALS2_NUM_ARGS); + template<BOOST_SIGNALS2_SIGNAL_TEMPLATE_DECL(BOOST_SIGNALS2_NUM_ARGS)> + class BOOST_SIGNALS2_SIGNAL_IMPL_CLASS_NAME(BOOST_SIGNALS2_NUM_ARGS); + +@@ -150,6 +152,8 @@ namespace boost + typedef GroupCompare group_compare_type; + typedef typename detail::slot_call_iterator_t<slot_invoker, + typename connection_list_type::iterator, connection_body<group_key_type, slot_type, Mutex> > slot_call_iterator; ++ typedef detail::BOOST_SIGNALS2_WEAK_SIGNAL_CLASS_NAME(BOOST_SIGNALS2_NUM_ARGS) ++ <BOOST_SIGNALS2_SIGNAL_TEMPLATE_INSTANTIATION> weak_signal_type; + + BOOST_SIGNALS2_SIGNAL_IMPL_CLASS_NAME(BOOST_SIGNALS2_NUM_ARGS)(const combiner_type &combiner_arg, + const group_compare_type &group_compare): +@@ -531,13 +535,20 @@ namespace boost + { + (*it)->nolock_disconnect(lock); + }else +- { +- // check for wrapped extended slot ++ { // check for wrapped extended slot + bound_extended_slot_function_type *fp; + fp = (*it)->slot().slot_function().template target<bound_extended_slot_function_type>(); +- if(fp && function_equal(*fp, slot)) ++ if(fp && fp->contains(slot)) + { + (*it)->nolock_disconnect(lock); ++ }else ++ { // check for wrapped signal ++ weak_signal_type *fp; ++ fp = (*it)->slot().slot_function().template target<weak_signal_type>(); ++ if(fp && fp->contains(slot)) ++ { ++ (*it)->nolock_disconnect(lock); ++ } + } + } + } +@@ -588,8 +599,6 @@ namespace boost + const boost::shared_ptr<mutex_type> _mutex; + }; + +- template<BOOST_SIGNALS2_SIGNAL_TEMPLATE_DECL(BOOST_SIGNALS2_NUM_ARGS)> +- class BOOST_SIGNALS2_WEAK_SIGNAL_CLASS_NAME(BOOST_SIGNALS2_NUM_ARGS); + } + + template<BOOST_SIGNALS2_SIGNAL_TEMPLATE_DEFAULTED_DECL(BOOST_SIGNALS2_NUM_ARGS)> +@@ -603,8 +612,7 @@ namespace boost + typedef detail::BOOST_SIGNALS2_SIGNAL_IMPL_CLASS_NAME(BOOST_SIGNALS2_NUM_ARGS) + <BOOST_SIGNALS2_SIGNAL_TEMPLATE_INSTANTIATION> impl_class; + public: +- typedef detail::BOOST_SIGNALS2_WEAK_SIGNAL_CLASS_NAME(BOOST_SIGNALS2_NUM_ARGS) +- <BOOST_SIGNALS2_SIGNAL_TEMPLATE_INSTANTIATION> weak_signal_type; ++ typedef typename impl_class::weak_signal_type weak_signal_type; + friend class detail::BOOST_SIGNALS2_WEAK_SIGNAL_CLASS_NAME(BOOST_SIGNALS2_NUM_ARGS) + <BOOST_SIGNALS2_SIGNAL_TEMPLATE_INSTANTIATION>; + +@@ -746,12 +754,24 @@ namespace boost + using std::swap; + swap(_pimpl, other._pimpl); + } ++ bool operator==(const BOOST_SIGNALS2_SIGNAL_CLASS_NAME(BOOST_SIGNALS2_NUM_ARGS) & other) const ++ { ++ return _pimpl.get() == other._pimpl.get(); ++ } + protected: + virtual shared_ptr<void> lock_pimpl() const + { + return _pimpl; + } + private: ++ // explicit private copy constructor to avoid compiler trying to do implicit conversions to signal ++ explicit BOOST_SIGNALS2_SIGNAL_CLASS_NAME(BOOST_SIGNALS2_NUM_ARGS)( ++ const BOOST_SIGNALS2_SIGNAL_CLASS_NAME(BOOST_SIGNALS2_NUM_ARGS) & other) BOOST_NOEXCEPT ++ { ++ // noncopyable ++ BOOST_ASSERT(false); ++ } ++ + shared_ptr<impl_class> + _pimpl; + }; +@@ -802,6 +822,16 @@ namespace boost + shared_pimpl(_weak_pimpl.lock()); + return (*shared_pimpl)(BOOST_SIGNALS2_SIGNATURE_ARG_NAMES(BOOST_SIGNALS2_NUM_ARGS)); + } ++ bool contains(const BOOST_SIGNALS2_SIGNAL_CLASS_NAME(BOOST_SIGNALS2_NUM_ARGS) ++ <BOOST_SIGNALS2_SIGNAL_TEMPLATE_INSTANTIATION> &signal) const ++ { ++ return _weak_pimpl.lock().get() == signal._pimpl.get(); ++ } ++ template <typename T> ++ bool contains(const T&) const ++ { ++ return false; ++ } + private: + boost::weak_ptr<detail::BOOST_SIGNALS2_SIGNAL_IMPL_CLASS_NAME(BOOST_SIGNALS2_NUM_ARGS) + <BOOST_SIGNALS2_SIGNAL_TEMPLATE_INSTANTIATION> > _weak_pimpl; diff --git a/dev-libs/boost/files/boost-1.84.0-signals2-patch2.patch b/dev-libs/boost/files/boost-1.84.0-signals2-patch2.patch new file mode 100644 index 000000000000..f277ae9973a1 --- /dev/null +++ b/dev-libs/boost/files/boost-1.84.0-signals2-patch2.patch @@ -0,0 +1,19 @@ +https://github.com/boostorg/signals2/issues/70 + +From 4d994bbed820882059c7842ba5e230a26d68f2f0 Mon Sep 17 00:00:00 2001 +From: Frank Mori Hess <fmh6jj@gmail.com> +Date: Sat, 30 Dec 2023 14:51:49 -0500 +Subject: [PATCH] Fix disconnect by slot when slot is wrapped in a + boost::reference_wrapper + +--- a/boost/signals2/detail/signal_template.hpp ++++ b/boost/signals2/detail/signal_template.hpp +@@ -223,7 +223,7 @@ namespace boost + void disconnect(const T &slot) + { + typedef mpl::bool_<(is_convertible<T, group_type>::value)> is_group; +- do_disconnect(slot, is_group()); ++ do_disconnect(unwrap_ref(slot), is_group()); + } + // emit signal + result_type operator ()(BOOST_SIGNALS2_SIGNATURE_FULL_ARGS(BOOST_SIGNALS2_NUM_ARGS)) diff --git a/dev-libs/boost/files/boost-1.85.0-bcp-filesystem.patch b/dev-libs/boost/files/boost-1.85.0-bcp-filesystem.patch new file mode 100644 index 000000000000..23d94040341d --- /dev/null +++ b/dev-libs/boost/files/boost-1.85.0-bcp-filesystem.patch @@ -0,0 +1,188 @@ +https://bugs.gentoo.org/932240 +https://github.com/boostorg/bcp/commit/cd21e9b4a749a77c24facf2da44f01e032c40842 + +From cd21e9b4a749a77c24facf2da44f01e032c40842 Mon Sep 17 00:00:00 2001 +From: Andrey Semashev <andrey.semashev@gmail.com> +Date: Sun, 24 Mar 2024 14:49:18 +0300 +Subject: [PATCH] Remove usage of deprecated and removed Boost.Filesystem APIs. + +--- + add_dependent_lib.cpp | 5 +++-- + add_path.cpp | 30 +++++++++++++++--------------- + bcp_imp.hpp | 1 + + copy_path.cpp | 8 ++++---- + file_types.cpp | 2 +- + 5 files changed, 24 insertions(+), 22 deletions(-) + +diff --git a/tools/bcp/add_dependent_lib.cpp b/tools/bcp/add_dependent_lib.cpp +index 4852914..521b70d 100644 +--- a/tools/bcp/add_dependent_lib.cpp ++++ b/tools/bcp/add_dependent_lib.cpp +@@ -15,6 +15,7 @@ + #include "bcp_imp.hpp" + #include "fileview.hpp" + #include <boost/regex.hpp> ++#include <boost/filesystem/directory.hpp> + #include <boost/filesystem/operations.hpp> + #include <boost/filesystem/exception.hpp> + #include <iostream> +@@ -43,12 +44,12 @@ static void init_library_scanner(const fs::path& p, bool cvs_mode, const std::st + // + // Don't add files created by build system: + // +- if((p.leaf() == "bin") || (p.leaf() == "bin-stage")) ++ if((p.filename() == "bin") || (p.filename() == "bin-stage")) + return; + // + // Don't add version control directories: + // +- if((p.leaf() == "CVS") || (p.leaf() == ".svn")) ++ if((p.filename() == "CVS") || (p.filename() == ".svn")) + return; + // + // don't add directories not under version control: +diff --git a/tools/bcp/add_path.cpp b/tools/bcp/add_path.cpp +index 8a1fee3..747bb8c 100644 +--- a/tools/bcp/add_path.cpp ++++ b/tools/bcp/add_path.cpp +@@ -15,6 +15,7 @@ + #include "bcp_imp.hpp" + #include "fileview.hpp" + #include <boost/regex.hpp> ++#include <boost/filesystem/directory.hpp> + #include <boost/filesystem/operations.hpp> + #include <boost/filesystem/exception.hpp> + #include <iostream> +@@ -24,8 +25,7 @@ void bcp_implementation::add_path(const fs::path& p) + { + if (m_excluded.find(p) != m_excluded.end()) + return; +- fs::path normalized_path = p; +- normalized_path.normalize(); ++ fs::path normalized_path = p.lexically_normal(); + if(fs::exists(m_boost_path / normalized_path)) + { + if(fs::is_directory(m_boost_path / normalized_path)) +@@ -45,12 +45,12 @@ void bcp_implementation::add_directory(const fs::path& p) + // + // Don't add files created by build system: + // +- if((p.leaf() == "bin") || (p.leaf() == "bin-stage")) ++ if((p.filename() == "bin") || (p.filename() == "bin-stage")) + return; + // + // Don't add version control directories: + // +- if((p.leaf() == "CVS") || (p.leaf() == ".svn")) ++ if((p.filename() == "CVS") || (p.filename() == ".svn")) + return; + // + // don't add directories not under version control: +@@ -180,7 +180,7 @@ void bcp_implementation::add_file(const fs::path& p) + { + // only concatonate if it's a relative path + // rather than a URL: +- fs::path dep(p.branch_path() / s); ++ fs::path dep(p.parent_path() / s); + if(!m_dependencies.count(dep)) + { + m_dependencies[dep] = p; // set up dependency tree +@@ -355,13 +355,13 @@ void bcp_implementation::add_file_dependencies(const fs::path& p, bool scanfile) + continue; + } + include_file = i->str(); +- fs::path test_file(m_boost_path / p.branch_path() / include_file); +- if(fs::exists(test_file) && !fs::is_directory(test_file) && (p.branch_path().string() != "boost")) ++ fs::path test_file(m_boost_path / p.parent_path() / include_file); ++ if(fs::exists(test_file) && !fs::is_directory(test_file) && (p.parent_path().string() != "boost")) + { +- if(!m_dependencies.count(p.branch_path() / include_file)) ++ if(!m_dependencies.count(p.parent_path() / include_file)) + { +- m_dependencies[p.branch_path() / include_file] = p; +- add_pending_path(p.branch_path() / include_file); ++ m_dependencies[p.parent_path() / include_file] = p; ++ add_pending_path(p.parent_path() / include_file); + } + } + else if(fs::exists(m_boost_path / include_file)) +@@ -405,13 +405,13 @@ void bcp_implementation::add_file_dependencies(const fs::path& p, bool scanfile) + ++i; + continue; + } +- fs::path test_file(m_boost_path / p.branch_path() / include_file); +- if(fs::exists(test_file) && !fs::is_directory(test_file) && (p.branch_path().string() != "boost")) ++ fs::path test_file(m_boost_path / p.parent_path() / include_file); ++ if(fs::exists(test_file) && !fs::is_directory(test_file) && (p.parent_path().string() != "boost")) + { +- if(!m_dependencies.count(p.branch_path() / include_file)) ++ if(!m_dependencies.count(p.parent_path() / include_file)) + { +- m_dependencies[p.branch_path() / include_file] = p; +- add_pending_path(p.branch_path() / include_file); ++ m_dependencies[p.parent_path() / include_file] = p; ++ add_pending_path(p.parent_path() / include_file); + } + } + else if(fs::exists(m_boost_path / include_file)) +diff --git a/tools/bcp/bcp_imp.hpp b/tools/bcp/bcp_imp.hpp +index e515581..51c85ba 100644 +--- a/tools/bcp/bcp_imp.hpp ++++ b/tools/bcp/bcp_imp.hpp +@@ -14,6 +14,7 @@ + #include <set> + #include <map> + #include <queue> ++#include <string> + #include <boost/filesystem/path.hpp> + + namespace fs = boost::filesystem; +diff --git a/tools/bcp/copy_path.cpp b/tools/bcp/copy_path.cpp +index 4143c79..6b7a370 100644 +--- a/tools/bcp/copy_path.cpp ++++ b/tools/bcp/copy_path.cpp +@@ -49,18 +49,18 @@ void bcp_implementation::copy_path(const fs::path& p) + if(fs::exists(m_dest_path / p)) + { + std::cout << "Copying (and overwriting) file: " << p.string() << "\n"; +- fs::remove(m_dest_path / p); ++ fs::remove(m_dest_path / p); + } + else + std::cout << "Copying file: " << p.string() << "\n"; + // + // create the path to the new file if it doesn't already exist: + // +- create_path(p.branch_path()); ++ create_path(p.parent_path()); + // + // do text based copy if requested: + // +- if((p.leaf() == "Jamroot") && m_namespace_name.size()) ++ if((p.filename() == "Jamroot") && m_namespace_name.size()) + { + static std::vector<char> v1, v2; + v1.clear(); +@@ -240,7 +240,7 @@ void bcp_implementation::create_path(const fs::path& p) + if(!fs::exists(m_dest_path / p)) + { + // recurse then create the path: +- create_path(p.branch_path()); ++ create_path(p.parent_path()); + fs::create_directory(m_dest_path / p); + } + } +diff --git a/tools/bcp/file_types.cpp b/tools/bcp/file_types.cpp +index 297d304..69f6027 100644 +--- a/tools/bcp/file_types.cpp ++++ b/tools/bcp/file_types.cpp +@@ -52,7 +52,7 @@ bool bcp_implementation::is_binary_file(const fs::path& p) + "|" + "(Jamfile|makefile|configure)", + boost::regex::perl | boost::regex::icase); +- return !boost::regex_match(p.leaf().generic_string(), e); ++ return !boost::regex_match(p.filename().generic_string(), e); + + } + + diff --git a/dev-libs/boost/metadata.xml b/dev-libs/boost/metadata.xml index f787dd7a4b77..ba1a98dcc43b 100644 --- a/dev-libs/boost/metadata.xml +++ b/dev-libs/boost/metadata.xml @@ -15,11 +15,146 @@ <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="threads">Build multi-thread-compatible libraries instead of single-threaded only.</flag> + <flag name="stacktrace">Build the full Boost.Stacktrace dynamic library instead of relying on the header-only implementation</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> + <!-- for x in $(find /usr/include/boost -maxdepth 1 -type d | cut -d/ -f5 | sort -u) ; do echo -e "\t\t<remote-id type=\"github\">boostorg/${x}</remote-id>"; done --> + <remote-id type="github">boostorg/boost</remote-id> + <remote-id type="github">boostorg/accumulators</remote-id> + <remote-id type="github">boostorg/algorithm</remote-id> + <remote-id type="github">boostorg/align</remote-id> + <remote-id type="github">boostorg/any</remote-id> + <remote-id type="github">boostorg/archive</remote-id> + <remote-id type="github">boostorg/asio</remote-id> + <remote-id type="github">boostorg/assert</remote-id> + <remote-id type="github">boostorg/assign</remote-id> + <remote-id type="github">boostorg/atomic</remote-id> + <remote-id type="github">boostorg/beast</remote-id> + <remote-id type="github">boostorg/bimap</remote-id> + <remote-id type="github">boostorg/bind</remote-id> + <remote-id type="github">boostorg/callable_traits</remote-id> + <remote-id type="github">boostorg/chrono</remote-id> + <remote-id type="github">boostorg/circular_buffer</remote-id> + <remote-id type="github">boostorg/compatibility</remote-id> + <remote-id type="github">boostorg/compute</remote-id> + <remote-id type="github">boostorg/concept</remote-id> + <remote-id type="github">boostorg/concept_check</remote-id> + <remote-id type="github">boostorg/config</remote-id> + <remote-id type="github">boostorg/container</remote-id> + <remote-id type="github">boostorg/container_hash</remote-id> + <remote-id type="github">boostorg/context</remote-id> + <remote-id type="github">boostorg/contract</remote-id> + <remote-id type="github">boostorg/convert</remote-id> + <remote-id type="github">boostorg/core</remote-id> + <remote-id type="github">boostorg/coroutine</remote-id> + <remote-id type="github">boostorg/coroutine2</remote-id> + <remote-id type="github">boostorg/date_time</remote-id> + <remote-id type="github">boostorg/describe</remote-id> + <remote-id type="github">boostorg/detail</remote-id> + <remote-id type="github">boostorg/dll</remote-id> + <remote-id type="github">boostorg/dynamic_bitset</remote-id> + <remote-id type="github">boostorg/endian</remote-id> + <remote-id type="github">boostorg/exception</remote-id> + <remote-id type="github">boostorg/fiber</remote-id> + <remote-id type="github">boostorg/filesystem</remote-id> + <remote-id type="github">boostorg/flyweight</remote-id> + <remote-id type="github">boostorg/format</remote-id> + <remote-id type="github">boostorg/function</remote-id> + <remote-id type="github">boostorg/functional</remote-id> + <remote-id type="github">boostorg/function_types</remote-id> + <remote-id type="github">boostorg/fusion</remote-id> + <remote-id type="github">boostorg/geometry</remote-id> + <remote-id type="github">boostorg/gil</remote-id> + <remote-id type="github">boostorg/graph</remote-id> + <remote-id type="github">boostorg/hana</remote-id> + <remote-id type="github">boostorg/heap</remote-id> + <remote-id type="github">boostorg/histogram</remote-id> + <remote-id type="github">boostorg/hof</remote-id> + <remote-id type="github">boostorg/icl</remote-id> + <remote-id type="github">boostorg/integer</remote-id> + <remote-id type="github">boostorg/interprocess</remote-id> + <remote-id type="github">boostorg/intrusive</remote-id> + <remote-id type="github">boostorg/io</remote-id> + <remote-id type="github">boostorg/iostreams</remote-id> + <remote-id type="github">boostorg/iterator</remote-id> + <remote-id type="github">boostorg/json</remote-id> + <remote-id type="github">boostorg/lambda</remote-id> + <remote-id type="github">boostorg/lambda2</remote-id> + <remote-id type="github">boostorg/leaf</remote-id> + <remote-id type="github">boostorg/lexical_cast</remote-id> + <remote-id type="github">boostorg/locale</remote-id> + <remote-id type="github">boostorg/local_function</remote-id> + <remote-id type="github">boostorg/lockfree</remote-id> + <remote-id type="github">boostorg/log</remote-id> + <remote-id type="github">boostorg/logic</remote-id> + <remote-id type="github">boostorg/math</remote-id> + <remote-id type="github">boostorg/metaparse</remote-id> + <remote-id type="github">boostorg/move</remote-id> + <remote-id type="github">boostorg/mp11</remote-id> + <remote-id type="github">boostorg/mpi</remote-id> + <remote-id type="github">boostorg/mpl</remote-id> + <remote-id type="github">boostorg/msm</remote-id> + <remote-id type="github">boostorg/multi_array</remote-id> + <remote-id type="github">boostorg/multi_index</remote-id> + <remote-id type="github">boostorg/multiprecision</remote-id> + <remote-id type="github">boostorg/nowide</remote-id> + <remote-id type="github">boostorg/numeric</remote-id> + <remote-id type="github">boostorg/optional</remote-id> + <remote-id type="github">boostorg/outcome</remote-id> + <remote-id type="github">boostorg/parameter</remote-id> + <remote-id type="github">boostorg/pending</remote-id> + <remote-id type="github">boostorg/pfr</remote-id> + <remote-id type="github">boostorg/phoenix</remote-id> + <remote-id type="github">boostorg/poly_collection</remote-id> + <remote-id type="github">boostorg/polygon</remote-id> + <remote-id type="github">boostorg/pool</remote-id> + <remote-id type="github">boostorg/predef</remote-id> + <remote-id type="github">boostorg/preprocessor</remote-id> + <remote-id type="github">boostorg/process</remote-id> + <remote-id type="github">boostorg/program_options</remote-id> + <remote-id type="github">boostorg/property_map</remote-id> + <remote-id type="github">boostorg/property_tree</remote-id> + <remote-id type="github">boostorg/proto</remote-id> + <remote-id type="github">boostorg/ptr_container</remote-id> + <remote-id type="github">boostorg/python</remote-id> + <remote-id type="github">boostorg/qvm</remote-id> + <remote-id type="github">boostorg/random</remote-id> + <remote-id type="github">boostorg/range</remote-id> + <remote-id type="github">boostorg/ratio</remote-id> + <remote-id type="github">boostorg/regex</remote-id> + <remote-id type="github">boostorg/safe_numerics</remote-id> + <remote-id type="github">boostorg/serialization</remote-id> + <remote-id type="github">boostorg/signals2</remote-id> + <remote-id type="github">boostorg/smart_ptr</remote-id> + <remote-id type="github">boostorg/sort</remote-id> + <remote-id type="github">boostorg/spirit</remote-id> + <remote-id type="github">boostorg/stacktrace</remote-id> + <remote-id type="github">boostorg/statechart</remote-id> + <remote-id type="github">boostorg/static_string</remote-id> + <remote-id type="github">boostorg/stl_interfaces</remote-id> + <remote-id type="github">boostorg/system</remote-id> + <remote-id type="github">boostorg/test</remote-id> + <remote-id type="github">boostorg/thread</remote-id> + <remote-id type="github">boostorg/timer</remote-id> + <remote-id type="github">boostorg/tti</remote-id> + <remote-id type="github">boostorg/tuple</remote-id> + <remote-id type="github">boostorg/type_erasure</remote-id> + <remote-id type="github">boostorg/type_index</remote-id> + <remote-id type="github">boostorg/typeof</remote-id> + <remote-id type="github">boostorg/type_traits</remote-id> + <remote-id type="github">boostorg/units</remote-id> + <remote-id type="github">boostorg/unordered</remote-id> + <remote-id type="github">boostorg/utility</remote-id> + <remote-id type="github">boostorg/uuid</remote-id> + <remote-id type="github">boostorg/variant</remote-id> + <remote-id type="github">boostorg/variant2</remote-id> + <remote-id type="github">boostorg/vmd</remote-id> + <remote-id type="github">boostorg/wave</remote-id> + <remote-id type="github">boostorg/winapi</remote-id> + <remote-id type="github">boostorg/xpressive</remote-id> + <remote-id type="github">boostorg/yap</remote-id> <remote-id type="sourceforge">boost</remote-id> </upstream> </pkgmetadata> |