From e610a294fcf2f1691a9c958885e93f690bf0675e Mon Sep 17 00:00:00 2001 From: Schrijvers Luc Date: Sat, 16 Sep 2023 05:38:21 +0000 Subject: [PATCH] boost183, add new version (#9289) --- dev-libs/boost/boost1.83-1.83.0.recipe | 241 +++++++++ .../boost/patches/boost1.83-1.83.0.patchset | 508 ++++++++++++++++++ 2 files changed, 749 insertions(+) create mode 100644 dev-libs/boost/boost1.83-1.83.0.recipe create mode 100644 dev-libs/boost/patches/boost1.83-1.83.0.patchset diff --git a/dev-libs/boost/boost1.83-1.83.0.recipe b/dev-libs/boost/boost1.83-1.83.0.recipe new file mode 100644 index 000000000..4c6c00ef8 --- /dev/null +++ b/dev-libs/boost/boost1.83-1.83.0.recipe @@ -0,0 +1,241 @@ +SUMMARY="A set of libraries for the C++ programming language" +DESCRIPTION="Boost is a set of libraries for the C++ programming language \ +that provide support for tasks and structures such as linear algebra, \ +pseudorandom number generation, multithreading, image processing, regular \ +expressions, and unit testing. It contains over eighty individual libraries." +HOMEPAGE="https://www.boost.org/" +SOURCE_URI="https://boostorg.jfrog.io/artifactory/main/release/$portVersion/source/boost_${portVersion//./_}.tar.bz2" +CHECKSUM_SHA256="6478edfe2f3305127cffe8caf73ea0176c53769f4bf1585be237eb30798c3b8e" +REVISION="1" +LICENSE="Boost v1.0" +COPYRIGHT="1993-2002 Christopher Seiwald and Perforce Software, Inc. + 1998-2018 Beman Dawes + 2001 David Turner + 2001-2004 David Abrahams + 2002-2019 Rene Rivera + 2003-2015 Vladimir Prus" +SOURCE_DIR="boost_${portVersion//./_}" +PATCHES="boost1.83-$portVersion.patchset" + +ARCHITECTURES="all !x86_gcc2" +SECONDARY_ARCHITECTURES="x86" + +libVersion="$portVersion compat >= 1.83.0" + +PROVIDES=" + boost1.83$secondaryArchSuffix = $portVersion + lib:libboost_atomic$secondaryArchSuffix = $libVersion + lib:libboost_chrono$secondaryArchSuffix = $libVersion + lib:libboost_container$secondaryArchSuffix = $libVersion + lib:libboost_context$secondaryArchSuffix = $libVersion + lib:libboost_contract$secondaryArchSuffix = $libVersion + lib:libboost_coroutine$secondaryArchSuffix = $libVersion + lib:libboost_date_time$secondaryArchSuffix = $libVersion + lib:libboost_fiber$secondaryArchSuffix = $libVersion + lib:libboost_filesystem$secondaryArchSuffix = $libVersion + lib:libboost_graph$secondaryArchSuffix = $libVersion + lib:libboost_iostreams$secondaryArchSuffix = $libVersion + lib:libboost_json$secondaryArchSuffix = $libVersion + lib:libboost_locale$secondaryArchSuffix = $libVersion + lib:libboost_log_setup$secondaryArchSuffix = $libVersion + lib:libboost_log$secondaryArchSuffix = $libVersion + lib:libboost_math_c99$secondaryArchSuffix = $libVersion + lib:libboost_math_c99f$secondaryArchSuffix = $libVersion + lib:libboost_math_tr1$secondaryArchSuffix = $libVersion + lib:libboost_math_tr1f$secondaryArchSuffix = $libVersion + lib:libboost_nowide$secondaryArchSuffix = $libVersion + lib:libboost_prg_exec_monitor$secondaryArchSuffix = $libVersion + lib:libboost_program_options$secondaryArchSuffix = $libVersion + lib:libboost_random$secondaryArchSuffix = $libVersion + lib:libboost_regex$secondaryArchSuffix = $libVersion + lib:libboost_serialization$secondaryArchSuffix = $libVersion + lib:libboost_stacktrace_basic$secondaryArchSuffix = $libVersion + lib:libboost_stacktrace_noop$secondaryArchSuffix = $libVersion + lib:libboost_system$secondaryArchSuffix = $libVersion + lib:libboost_thread$secondaryArchSuffix = $libVersion + lib:libboost_timer$secondaryArchSuffix = $libVersion + lib:libboost_type_erasure$secondaryArchSuffix = $libVersion + lib:libboost_unit_test_framework$secondaryArchSuffix = $libVersion + lib:libboost_url$secondaryArchSuffix = $libVersion + lib:libboost_wave$secondaryArchSuffix = $libVersion + lib:libboost_wserialization$secondaryArchSuffix = $libVersion + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libbz2$secondaryArchSuffix + lib:libiconv$secondaryArchSuffix + lib:libicudata$secondaryArchSuffix + lib:libicui18n$secondaryArchSuffix + lib:libicuuc$secondaryArchSuffix + lib:liblzma$secondaryArchSuffix + lib:libz$secondaryArchSuffix + lib:libzstd$secondaryArchSuffix + " + +# List of devel entries matching an actual library (for use in prepareInstalledDevelLibs) +# Boost also provides header-only libraries (because templates) +devel_libs=" + devel:libboost_atomic$secondaryArchSuffix = $libVersion + devel:libboost_chrono$secondaryArchSuffix = $libVersion + devel:libboost_container$secondaryArchSuffix = $libVersion + devel:libboost_context$secondaryArchSuffix = $libVersion + devel:libboost_contract$secondaryArchSuffix = $libVersion + devel:libboost_coroutine$secondaryArchSuffix = $libVersion + devel:libboost_date_time$secondaryArchSuffix = $libVersion + devel:libboost_exception$secondaryArchSuffix = $libVersion + devel:libboost_fiber$secondaryArchSuffix = $libVersion + devel:libboost_filesystem$secondaryArchSuffix = $libVersion + devel:libboost_graph$secondaryArchSuffix = $libVersion + devel:libboost_iostreams$secondaryArchSuffix = $libVersion + devel:libboost_json$secondaryArchSuffix = $libVersion + devel:libboost_locale$secondaryArchSuffix = $libVersion + devel:libboost_log_setup$secondaryArchSuffix = $libVersion + devel:libboost_log$secondaryArchSuffix = $libVersion + devel:libboost_nowide$secondaryArchSuffix = $libVersion + devel:libboost_prg_exec_monitor$secondaryArchSuffix = $libVersion + devel:libboost_program_options$secondaryArchSuffix = $libVersion + devel:libboost_random$secondaryArchSuffix = $libVersion + devel:libboost_regex$secondaryArchSuffix = $libVersion + devel:libboost_serialization$secondaryArchSuffix = $libVersion + devel:libboost_stacktrace_basic$secondaryArchSuffix = $libVersion + devel:libboost_stacktrace_noop$secondaryArchSuffix = $libVersion + devel:libboost_system$secondaryArchSuffix = $libVersion + devel:libboost_test_exec_monitor$secondaryArchSuffix = $libVersion + devel:libboost_thread$secondaryArchSuffix = $libVersion + devel:libboost_timer$secondaryArchSuffix = $libVersion + devel:libboost_type_erasure$secondaryArchSuffix = $libVersion + devel:libboost_unit_test_framework$secondaryArchSuffix = $libVersion + devel:libboost_url$secondaryArchSuffix = $libVersion + devel:libboost_wave$secondaryArchSuffix = $libVersion + devel:libboost_wserialization$secondaryArchSuffix = $libVersion + " + +PROVIDES_devel=" + boost1.83${secondaryArchSuffix}_devel = $portVersion + $devel_libs + devel:libboost_config$secondaryArchSuffix = $libVersion + " +REQUIRES_devel=" + boost1.83$secondaryArchSuffix == $portVersion base + " +CONFLICTS_devel=" + boost169${secondaryArchSuffix}_devel + boost170${secondaryArchSuffix}_devel + " + +PROVIDES_docs=" + boost1.83${secondaryArchSuffix}_docs + " +REQUIRES_docs=" + boost1.83${secondaryArchSuffix}_devel == $portVersion base + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libbz2$secondaryArchSuffix + devel:libiconv$secondaryArchSuffix + devel:libicudata$secondaryArchSuffix >= 73 + devel:libicui18n$secondaryArchSuffix >= 73 + devel:libicuuc$secondaryArchSuffix >= 73 + devel:liblzma$secondaryArchSuffix + devel:libz$secondaryArchSuffix + devel:libzstd$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + cmd:addr2line$secondaryArchSuffix + cmd:find + cmd:gcc$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:sed + cmd:which + " + +defineDebugInfoPackage boost1.83$secondaryArchSuffix \ + "$libDir"/libboost_atomic.so.$portVersion \ + "$libDir"/libboost_chrono.so.$portVersion \ + "$libDir"/libboost_container.so.$portVersion \ + "$libDir"/libboost_context.so.$portVersion \ + "$libDir"/libboost_contract.so.$portVersion \ + "$libDir"/libboost_coroutine.so.$portVersion \ + "$libDir"/libboost_date_time.so.$portVersion \ + "$libDir"/libboost_fiber.so.$portVersion \ + "$libDir"/libboost_filesystem.so.$portVersion \ + "$libDir"/libboost_graph.so.$portVersion \ + "$libDir"/libboost_iostreams.so.$portVersion \ + "$libDir"/libboost_json.so.$portVersion \ + "$libDir"/libboost_locale.so.$portVersion \ + "$libDir"/libboost_log_setup.so.$portVersion \ + "$libDir"/libboost_log.so.$portVersion \ + "$libDir"/libboost_nowide.so.$portVersion \ + "$libDir"/libboost_prg_exec_monitor.so.$portVersion \ + "$libDir"/libboost_program_options.so.$portVersion \ + "$libDir"/libboost_random.so.$portVersion \ + "$libDir"/libboost_regex.so.$portVersion \ + "$libDir"/libboost_serialization.so.$portVersion \ + "$libDir"/libboost_stacktrace_basic.so.$portVersion \ + "$libDir"/libboost_stacktrace_noop.so.$portVersion \ + "$libDir"/libboost_system.so.$portVersion \ + "$libDir"/libboost_thread.so.$portVersion \ + "$libDir"/libboost_timer.so.$portVersion \ + "$libDir"/libboost_type_erasure.so.$portVersion \ + "$libDir"/libboost_unit_test_framework.so.$portVersion \ + "$libDir"/libboost_url.so.$portVersion \ + "$libDir"/libboost_wave.so.$portVersion \ + "$libDir"/libboost_wserialization.so.$portVersion + +BUILD() +{ + ./bootstrap.sh \ + --with-icu \ + --prefix=$prefix \ + --exec-prefix=$binDir \ + --libdir=$libDir \ + --includedir=$includeDir +} + + +INSTALL() +{ + ./b2 -q $jobArgs \ + --without-graph_parallel \ + --without-mpi \ + --without-python \ + --enable-parallel-mark \ + --enable-threads=posix \ + --enable-thread-local-alloc \ + toolset=gcc \ + pch=off \ + inlining=on \ + threading=multi \ + variant=release \ + link=shared \ + runtime-link=shared \ + install + + # install documentation + mkdir -p $developDocDir + cp -r doc/html/* $developDocDir + + prepareInstalledDevelLibs `echo "$devel_libs" | sed -n \ + -e "s/devel:\(.*\)$secondaryArchSuffix =.*/\1/p"` + + # Correct boost cmake static files + # https://github.com/boostorg/boost_install/issues/49 + for i in $(find $libDir/cmake -name "libboost_*-variant-static.cmake"); do + echo "Replacing LIBDIR in $i"; + sed -i "s%\${_BOOST_LIBDIR}%$prefix/$relativeDevelopLibDir%g" $i; + done; + + packageEntries docs \ + $developDocDir + + packageEntries devel \ + $developDir \ + $libDir/cmake +} + +TEST() +{ + cd status + ../b2 $jobArgs +} diff --git a/dev-libs/boost/patches/boost1.83-1.83.0.patchset b/dev-libs/boost/patches/boost1.83-1.83.0.patchset new file mode 100644 index 000000000..6b462caa8 --- /dev/null +++ b/dev-libs/boost/patches/boost1.83-1.83.0.patchset @@ -0,0 +1,508 @@ +From 97dabf9341b465511d4683c485adab2b5805a7fa Mon Sep 17 00:00:00 2001 +From: Adrien Destugues +Date: Sat, 6 Aug 2016 22:27:19 +0200 +Subject: Import changes from 1.55.0: buildtools + + +diff --git a/tools/build/src/engine/jam.h b/tools/build/src/engine/jam.h +index e1b76cb..4e2003e 100644 +--- a/tools/build/src/engine/jam.h ++++ b/tools/build/src/engine/jam.h +@@ -163,6 +163,11 @@ + #define OS_BEOS + #define NO_VFORK + #endif ++#ifdef __HAIKU__ ++ #define unix ++ #define OSMINOR "OS=HAIKU" ++ #define OS_HAIKU ++#endif + #ifdef __bsdi__ + #define OSMINOR "OS=BSDI" + #define OS_BSDI +-- +2.37.3 + + +From 23b0197a83705097236b96dc0568f9db26536e80 Mon Sep 17 00:00:00 2001 +From: Adrien Destugues +Date: Sat, 6 Aug 2016 22:27:41 +0200 +Subject: Import changes from 1.55.0: sourcecode + + +diff --git a/boost/thread/detail/platform.hpp b/boost/thread/detail/platform.hpp +index 172a601..c706e40 100644 +--- a/boost/thread/detail/platform.hpp ++++ b/boost/thread/detail/platform.hpp +@@ -34,7 +34,7 @@ + #if ! defined BOOST_THREAD_WIN32 + # define BOOST_THREAD_WIN32 + #endif +-#elif defined(__BEOS__) ++#elif defined(__BEOS__) || defined(__HAIKU__) + # define BOOST_THREAD_BEOS + #elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) + # define BOOST_THREAD_MACOS +-- +2.37.3 + + +From cbc578bb780bf4ac4f099d419b94756e1fff963f Mon Sep 17 00:00:00 2001 +From: Begasus +Date: Thu, 24 Aug 2023 15:59:20 +0200 +Subject: Fix macro seeing , as args on gcc8 + + +diff --git a/boost/json/impl/array.hpp b/boost/json/impl/array.hpp +index b5e75ff..393568c 100644 +--- a/boost/json/impl/array.hpp ++++ b/boost/json/impl/array.hpp +@@ -142,9 +142,9 @@ array( + std::move(sp), + iter_cat{}) + { +- BOOST_STATIC_ASSERT( ++ BOOST_STATIC_ASSERT(( + std::is_constructible::value); ++ decltype(*first)>::value)); + } + + //---------------------------------------------------------- +@@ -161,9 +161,9 @@ insert( + InputIt first, InputIt last) -> + iterator + { +- BOOST_STATIC_ASSERT( ++ BOOST_STATIC_ASSERT(( + std::is_constructible::value); ++ decltype(*first)>::value)); + return insert(pos, first, last, + iter_cat{}); + } +diff --git a/boost/json/storage_ptr.hpp b/boost/json/storage_ptr.hpp +index 085498b..9f886bd 100644 +--- a/boost/json/storage_ptr.hpp ++++ b/boost/json/storage_ptr.hpp +@@ -493,9 +493,9 @@ make_shared_resource(Args&&... args) + { + // If this generates an error, it means that + // `T` is not a memory resource. +- BOOST_STATIC_ASSERT( ++ BOOST_STATIC_ASSERT(( + std::is_base_of< +- memory_resource, U>::value); ++ memory_resource, U>::value)); + return storage_ptr(new + detail::shared_resource_impl( + std::forward(args)...)); +diff --git a/boost/json/value_from.hpp b/boost/json/value_from.hpp +index 2166987..3c5ebae 100644 +--- a/boost/json/value_from.hpp ++++ b/boost/json/value_from.hpp +@@ -84,8 +84,8 @@ value_from( + value& jv) + { + using bare_T = detail::remove_cvref; +- BOOST_STATIC_ASSERT(detail::conversion_round_trips< +- Context, bare_T, detail::value_from_conversion>::value); ++ BOOST_STATIC_ASSERT((detail::conversion_round_trips< ++ Context, bare_T, detail::value_from_conversion>::value)); + using cat = detail::value_from_category; + detail::value_from_impl( cat(), jv, std::forward(t), ctx ); + } +diff --git a/boost/json/value_to.hpp b/boost/json/value_to.hpp +index 8787193..4c5215e 100644 +--- a/boost/json/value_to.hpp ++++ b/boost/json/value_to.hpp +@@ -90,8 +90,8 @@ value_to( value const& jv, Context const& ctx ) + { + BOOST_STATIC_ASSERT(! std::is_reference::value); + using bare_T = detail::remove_cvref; +- BOOST_STATIC_ASSERT(detail::conversion_round_trips< +- Context, bare_T, detail::value_to_conversion>::value); ++ BOOST_STATIC_ASSERT((detail::conversion_round_trips< ++ Context, bare_T, detail::value_to_conversion>::value)); + using cat = detail::value_to_category; + return detail::value_to_impl( cat(), value_to_tag(), jv, ctx ); + } +@@ -224,8 +224,8 @@ try_value_to( value const& jv, Context const& ctx ) + { + BOOST_STATIC_ASSERT(! std::is_reference::value); + using bare_T = detail::remove_cvref; +- BOOST_STATIC_ASSERT(detail::conversion_round_trips< +- Context, bare_T, detail::value_to_conversion>::value); ++ BOOST_STATIC_ASSERT((detail::conversion_round_trips< ++ Context, bare_T, detail::value_to_conversion>::value)); + using cat = detail::value_to_category; + return detail::value_to_impl( + cat(), try_value_to_tag(), jv, ctx ); +diff --git a/boost/url/detail/any_params_iter.hpp b/boost/url/detail/any_params_iter.hpp +index 0adeec2..0ae1995 100644 +--- a/boost/url/detail/any_params_iter.hpp ++++ b/boost/url/detail/any_params_iter.hpp +@@ -172,11 +172,11 @@ struct params_iter + : any_params_iter + , private params_iter_base + { +- BOOST_STATIC_ASSERT( ++ BOOST_STATIC_ASSERT(( + std::is_convertible< + typename std::iterator_traits< + FwdIt>::reference, +- param_view>::value); ++ param_view>::value)); + + params_iter( + FwdIt first, +@@ -281,11 +281,11 @@ struct params_encoded_iter + : any_params_iter + , private params_encoded_iter_base + { +- BOOST_STATIC_ASSERT( ++ BOOST_STATIC_ASSERT(( + std::is_convertible< + typename std::iterator_traits< + FwdIt>::reference, +- param_view>::value); ++ param_view>::value)); + + params_encoded_iter( + FwdIt first, +diff --git a/boost/url/detail/any_segments_iter.hpp b/boost/url/detail/any_segments_iter.hpp +index 25cc808..2cd9545 100644 +--- a/boost/url/detail/any_segments_iter.hpp ++++ b/boost/url/detail/any_segments_iter.hpp +@@ -120,11 +120,11 @@ struct segments_iter + : any_segments_iter + , segments_iter_base + { +- BOOST_STATIC_ASSERT( ++ BOOST_STATIC_ASSERT(( + std::is_convertible< + typename std::iterator_traits< + FwdIt>::reference, +- core::string_view>::value); ++ core::string_view>::value)); + + segments_iter( + FwdIt first, +@@ -234,11 +234,11 @@ struct segments_encoded_iter + : public any_segments_iter + , public segments_encoded_iter_base + { +- BOOST_STATIC_ASSERT( ++ BOOST_STATIC_ASSERT(( + std::is_convertible< + typename std::iterator_traits< + FwdIt>::reference, +- core::string_view>::value); ++ core::string_view>::value)); + + segments_encoded_iter( + FwdIt first, +-- +2.37.3 + + +From 778a508ca1e2a59866d2daa1a0d4dc4cc979c3fd Mon Sep 17 00:00:00 2001 +From: Begasus +Date: Fri, 25 Aug 2023 10:15:17 +0200 +Subject: Add auto_index binary to tools + + +diff --git a/tools/Jamfile.v2 b/tools/Jamfile.v2 +index e1391c7..a580eb1 100644 +--- a/tools/Jamfile.v2 ++++ b/tools/Jamfile.v2 +@@ -18,6 +18,7 @@ project + ; + + TOOLS = ++ auto_index/build//auto_index + bcp//bcp + inspect/build//inspect + quickbook//quickbook +-- +2.37.3 + + +From 0ab4c028cec023e08a0d6a27b0630ec4c8ade94f Mon Sep 17 00:00:00 2001 +From: Jerome Duval +Date: Sat, 14 Oct 2017 11:47:09 +0200 +Subject: Haiku needs bsd and _BSD_SOURCE. + + +diff --git a/tools/build/src/engine/build.sh b/tools/build/src/engine/build.sh +index b2036f4..64c2cf0 100755 +--- a/tools/build/src/engine/build.sh ++++ b/tools/build/src/engine/build.sh +@@ -325,6 +325,22 @@ case "${B2_TOOLSET}" in + CXX_VERSION_OPT=${CXX_VERSION_OPT:---version} + B2_CXXFLAGS_RELEASE="-O2 -s" + B2_CXXFLAGS_DEBUG="-O0 -g" ++ ++ CXX=${CXX:=g++} ++ # Check whether it's MinGW GCC, which has Windows headers and none of POSIX ones. ++ machine=$(${CXX} -dumpmachine 2>/dev/null) ++ if [ $? -ne 0 ]; then ++ echo "B2_TOOLSET is gcc, but the 'gcc' command cannot be executed." ++ echo "Make sure 'gcc' is in PATH, or use a different toolset." ++ exit 1 ++ fi ++ case $machine in ++ *haiku*) ++ B2_CXX="${CXX} -x c++ -std=c++17" ++ B2_CXXFLAGS_RELEASE="-O2 -s -D_DEFAULT_SOURCE -lbsd" ++ B2_CXXFLAGS_DEBUG="-O0 -g" ++ ;; ++ esac + ;; + + intel-*) +-- +2.37.3 + + +From aa75860664811c0b1b55c40b822ae483b6117193 Mon Sep 17 00:00:00 2001 +From: Begasus +Date: Sun, 27 Aug 2023 19:13:24 +0200 +Subject: Fix missing functions to build libboost_locale + + +diff --git a/boost/config/platform/haiku.hpp b/boost/config/platform/haiku.hpp +index 04244c5..e22ac4f 100644 +--- a/boost/config/platform/haiku.hpp ++++ b/boost/config/platform/haiku.hpp +@@ -16,11 +16,6 @@ + # define BOOST_HAS_THREADS + #endif + +-#define BOOST_NO_CXX11_HDR_TYPE_TRAITS +-#define BOOST_NO_CXX11_ATOMIC_SMART_PTR +-#define BOOST_NO_CXX11_STATIC_ASSERT +-#define BOOST_NO_CXX11_VARIADIC_MACROS +- + // + // thread API's not auto detected: + // +-- +2.37.3 + + +From 96f306b42e35cca96d0042ab2c3d9dd5b41bd0ab Mon Sep 17 00:00:00 2001 +From: Begasus +Date: Mon, 28 Aug 2023 18:08:06 +0200 +Subject: Fix building the tests + + +diff --git a/libs/uuid/test/Jamfile.v2 b/libs/uuid/test/Jamfile.v2 +index c74658d..926e0f7 100644 +--- a/libs/uuid/test/Jamfile.v2 ++++ b/libs/uuid/test/Jamfile.v2 +@@ -65,12 +65,12 @@ rule test_all + all_rules += [ compile compile/decl_header.cpp : + "BOOST_UUID_TEST_HEADER=uuid.hpp" + "BOOST_UUID_NO_TYPE_TRAITS" +- ../include/boost/uuid/uuid.hpp : ++ $(BOOST_ROOT)/boost/uuid/uuid.hpp : + compile_uuid_no_type_traits ] ; + all_rules += [ compile compile/decl_header.cpp : + "BOOST_UUID_TEST_HEADER=uuid.hpp" + "BOOST_UUID_NO_SIMD" +- ../include/boost/uuid/uuid.hpp : ++ $(BOOST_ROOT)/boost/uuid/uuid.hpp : + compile_uuid_no_simd ] ; + + # ECHO All rules: $(all_rules) ; +-- +2.37.3 + + +From 058e489f6190684c910330e722119f4ab59e5b42 Mon Sep 17 00:00:00 2001 +From: Begasus +Date: Tue, 12 Sep 2023 20:18:37 +0200 +Subject: Haiku currently doesn't have cfsetspeed + + +diff --git a/boost/asio/impl/serial_port_base.ipp b/boost/asio/impl/serial_port_base.ipp +index 4e786d4..fa1f973 100644 +--- a/boost/asio/impl/serial_port_base.ipp ++++ b/boost/asio/impl/serial_port_base.ipp +@@ -114,7 +114,8 @@ BOOST_ASIO_SYNC_OP_VOID serial_port_base::baud_rate::store( + ec = boost::asio::error::invalid_argument; + BOOST_ASIO_SYNC_OP_VOID_RETURN(ec); + } +-# if defined(_BSD_SOURCE) || defined(_DEFAULT_SOURCE) ++# if defined(_BSD_SOURCE) || defined(_DEFAULT_SOURCE) && !defined(__HAIKU__) ++// TODO re-enable this for Haiku once cfsetspeed is implemented (#18220) + ::cfsetspeed(&storage, baud); + # else + ::cfsetispeed(&storage, baud); +-- +2.37.3 + + +From 77378ebfb9042c8718081a4b9680f8cb2274f30c Mon Sep 17 00:00:00 2001 +From: Peter Dimov +Date: Sun, 3 Sep 2023 17:55:50 +0300 +Subject: Support fn.contains(f) where f is a function. Fixes #46. + + +diff --git a/boost/function/function_base.hpp b/boost/function/function_base.hpp +index 5693e11..00c7ce8 100644 +--- a/boost/function/function_base.hpp ++++ b/boost/function/function_base.hpp +@@ -25,6 +25,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -652,7 +653,8 @@ public: + } + + template +- bool contains(const F& f) const ++ typename boost::enable_if_< !boost::is_function::value, bool >::type ++ contains(const F& f) const + { + if (const F* fp = this->template target()) + { +@@ -662,6 +664,19 @@ public: + } + } + ++ template ++ typename boost::enable_if_< boost::is_function::value, bool >::type ++ contains(Fn& f) const ++ { ++ typedef Fn* F; ++ if (const F* fp = this->template target()) ++ { ++ return function_equal(*fp, &f); ++ } else { ++ return false; ++ } ++ } ++ + #if defined(__GNUC__) && __GNUC__ == 3 && __GNUC_MINOR__ <= 3 + // GCC 3.3 and newer cannot copy with the global operator==, due to + // problems with instantiation of function return types before it +diff --git a/libs/function/test/Jamfile.v2 b/libs/function/test/Jamfile.v2 +index 15d401e..7be87a1 100644 +--- a/libs/function/test/Jamfile.v2 ++++ b/libs/function/test/Jamfile.v2 +@@ -90,3 +90,6 @@ run fn_eq_bind_test.cpp ; + # /usr/include/c++/4.4/bits/shared_ptr.h:146: error: cannot use typeid with -fno-rtti + run contains_test.cpp : : : off gcc-4.4,0x:no : contains_test_no_rtti ; + run contains2_test.cpp : : : off gcc-4.4,0x:no : contains2_test_no_rtti ; ++ ++run contains3_test.cpp ; ++run contains3_test.cpp : : : off gcc-4.4,0x:no : contains3_test_no_rtti ; +diff --git a/libs/function/test/contains3_test.cpp b/libs/function/test/contains3_test.cpp +new file mode 100644 +index 0000000..e6130bb +--- /dev/null ++++ b/libs/function/test/contains3_test.cpp +@@ -0,0 +1,33 @@ ++// Copyright 2023 Peter Dimov ++// Distributed under the Boost Software License, Version 1.0. ++// https://www.boost.org/LICENSE_1_0.txt ++ ++#include ++#include ++ ++static int f() ++{ ++ return 1; ++} ++ ++static int g() ++{ ++ return 2; ++} ++ ++int main() ++{ ++ { ++ boost::function fn; ++ BOOST_TEST( !fn.contains( f ) ); ++ BOOST_TEST( !fn.contains( g ) ); ++ } ++ ++ { ++ boost::function fn( f ); ++ BOOST_TEST( fn.contains( f ) ); ++ BOOST_TEST( !fn.contains( g ) ); ++ } ++ ++ return boost::report_errors(); ++} +-- +2.37.3 + + +From 8c2bf25b8987a3c82ce4a3bd1ba9e405afd1f8c6 Mon Sep 17 00:00:00 2001 +From: Conrad Poelman +Date: Mon, 3 Aug 2020 18:35:35 -0400 +Subject: Remove deprecated inheritance from std::iterator + + +diff --git a/boost/numeric/ublas/detail/iterator.hpp b/boost/numeric/ublas/detail/iterator.hpp +index 1723a30..3f5cae8 100644 +--- a/boost/numeric/ublas/detail/iterator.hpp ++++ b/boost/numeric/ublas/detail/iterator.hpp +@@ -107,8 +107,12 @@ namespace boost { namespace numeric { namespace ublas { + * via the post increment operator. + */ + template +- struct forward_iterator_base: +- public std::iterator { ++ struct forward_iterator_base { ++ typedef IC iterator_category; ++ typedef T value_type; ++ typedef std::ptrdiff_t difference_type; ++ typedef T* pointer; ++ typedef T& reference; + typedef I derived_iterator_type; + typedef T derived_value_type; + +@@ -145,9 +149,13 @@ namespace boost { namespace numeric { namespace ublas { + * via the post increment and post decrement operator. + */ + template +- struct bidirectional_iterator_base: +- public std::iterator { +- typedef I derived_iterator_type; ++ struct forward_iterator_base { ++ typedef IC iterator_category; ++ typedef T value_type; ++ typedef std::ptrdiff_t difference_type; ++ typedef T* pointer; ++ typedef T& reference; ++ typedef I derived_iterator_type; + typedef T derived_value_type; + + // Arithmetic +@@ -200,8 +208,12 @@ namespace boost { namespace numeric { namespace ublas { + */ + template + // ISSUE the default for D seems rather dangerous as it can easily be (silently) incorrect +- struct random_access_iterator_base: +- public std::iterator { ++ struct forward_iterator_base { ++ typedef IC iterator_category; ++ typedef T value_type; ++ typedef std::ptrdiff_t difference_type; ++ typedef T* pointer; ++ typedef T& reference; + typedef I derived_iterator_type; + typedef T derived_value_type; + typedef D derived_difference_type; +-- +2.37.3 +