-
Notifications
You must be signed in to change notification settings - Fork 36.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
build: header-only Boost #24301
build: header-only Boost #24301
Conversation
Didn't know that boost unit test is also header-only. Concept ACK, I guess 🚀 |
Concept ACK. |
Does this bump the minimum req. boost version? |
Concept ACK, this is a nice cleanup to configure.ac. |
|
||
define $(package)_stage_cmds | ||
b2 -d0 -j4 --prefix=$($(package)_staging_prefix_dir) $($(package)_config_opts) toolset=$($(package)_toolset_$(host_os)) --no-cmake-config install | ||
mkdir -p $($(package)_staging_prefix_dir)/include && \ | ||
cp -r boost $($(package)_staging_prefix_dir)/include |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice.
9c0cf03
to
00a4757
Compare
Updated to fix the linter, added a commit to use Boost 1.78.0, and removed the Boost Unit Test macro.
I'll need to double check this. TSAN failure from previous change: ==================
WARNING: ThreadSanitizer: data race (pid=90566)
Read of size 4 at 0x7fcbd5a62f40 by thread T4 (mutexes: write M1909):
#0 std::__1::ios_base::flags() const /usr/lib/llvm-13/bin/../include/c++/v1/ios:461:12 (test_bitcoin+0x2192b8)
#1 std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) /usr/lib/llvm-13/bin/../include/c++/v1/ostream:720:40 (test_bitcoin+0x2192b8)
#2 std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::operator<<<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) /usr/lib/llvm-13/bin/../include/c++/v1/ostream:1041:12 (test_bitcoin+0x1d94d7)
#3 $_0::operator()(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const src/test/main.cpp:28:15 (test_bitcoin+0x1d94d7)
#4 decltype(static_cast<$_0&>(fp)(static_cast<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>(fp0))) std::__1::__invoke<$_0&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>($_0&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) /usr/lib/llvm-13/bin/../include/c++/v1/type_traits:3918:1 (test_bitcoin+0x1d94d7)
#5 void std::__1::__invoke_void_return_wrapper<void, true>::__call<$_0&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>($_0&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) /usr/lib/llvm-13/bin/../include/c++/v1/__functional/invoke.h:61:9 (test_bitcoin+0x1d94d7)
#6 std::__1::__function::__alloc_func<$_0, std::__1::allocator<$_0>, void (std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)>::operator()(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) /usr/lib/llvm-13/bin/../include/c++/v1/__functional/function.h:171:16 (test_bitcoin+0x1d94d7)
#7 std::__1::__function::__func<$_0, std::__1::allocator<$_0>, void (std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)>::operator()(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) /usr/lib/llvm-13/bin/../include/c++/v1/__functional/function.h:345:12 (test_bitcoin+0x1d94d7)
#8 std::__1::__function::__value_func<void (std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)>::operator()(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const /usr/lib/llvm-13/bin/../include/c++/v1/__functional/function.h:498:16 (test_bitcoin+0xe8104b)
#9 std::__1::function<void (std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)>::operator()(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const /usr/lib/llvm-13/bin/../include/c++/v1/__functional/function.h:1175:12 (test_bitcoin+0xe8104b)
#10 BCLog::Logger::LogPrintStr(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) src/logging.cpp:279:9 (test_bitcoin+0xe8104b)
#11 void LogPrintf_<char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, char const*, char const* const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) src/./logging.h:184:23 (test_bitcoin+0xd7ec50)
#12 CMainSignals::TransactionRemovedFromMempool(std::__1::shared_ptr<CTransaction const> const&, MemPoolRemovalReason, unsigned long)::$_7::operator()() const src/validationinterface.cpp:215:5 (test_bitcoin+0xd84022)
#13 decltype(static_cast<CMainSignals::TransactionRemovedFromMempool(std::__1::shared_ptr<CTransaction const> const&, MemPoolRemovalReason, unsigned long)::$_7&>(fp)()) std::__1::__invoke<CMainSignals::TransactionRemovedFromMempool(std::__1::shared_ptr<CTransaction const> const&, MemPoolRemovalReason, unsigned long)::$_7&>(CMainSignals::TransactionRemovedFromMempool(std::__1::shared_ptr<CTransaction const> const&, MemPoolRemovalReason, unsigned long)::$_7&) /usr/lib/llvm-13/bin/../include/c++/v1/type_traits:3918:1 (test_bitcoin+0xd84022)
#14 void std::__1::__invoke_void_return_wrapper<void, true>::__call<CMainSignals::TransactionRemovedFromMempool(std::__1::shared_ptr<CTransaction const> const&, MemPoolRemovalReason, unsigned long)::$_7&>(CMainSignals::TransactionRemovedFromMempool(std::__1::shared_ptr<CTransaction const> const&, MemPoolRemovalReason, unsigned long)::$_7&) /usr/lib/llvm-13/bin/../include/c++/v1/__functional/invoke.h:61:9 (test_bitcoin+0xd84022)
#15 std::__1::__function::__alloc_func<CMainSignals::TransactionRemovedFromMempool(std::__1::shared_ptr<CTransaction const> const&, MemPoolRemovalReason, unsigned long)::$_7, std::__1::allocator<CMainSignals::TransactionRemovedFromMempool(std::__1::shared_ptr<CTransaction const> const&, MemPoolRemovalReason, unsigned long)::$_7>, void ()>::operator()() /usr/lib/llvm-13/bin/../include/c++/v1/__functional/function.h:171:16 (test_bitcoin+0xd84022)
#16 std::__1::__function::__func<CMainSignals::TransactionRemovedFromMempool(std::__1::shared_ptr<CTransaction const> const&, MemPoolRemovalReason, unsigned long)::$_7, std::__1::allocator<CMainSignals::TransactionRemovedFromMempool(std::__1::shared_ptr<CTransaction const> const&, MemPoolRemovalReason, unsigned long)::$_7>, void ()>::operator()() /usr/lib/llvm-13/bin/../include/c++/v1/__functional/function.h:345:12 (test_bitcoin+0xd84022)
#17 std::__1::__function::__value_func<void ()>::operator()() const /usr/lib/llvm-13/bin/../include/c++/v1/__functional/function.h:498:16 (test_bitcoin+0xe2a2b1)
#18 std::__1::function<void ()>::operator()() const /usr/lib/llvm-13/bin/../include/c++/v1/__functional/function.h:1175:12 (test_bitcoin+0xe2a2b1)
#19 SingleThreadedSchedulerClient::ProcessQueue() src/scheduler.cpp:177:5 (test_bitcoin+0xe2a2b1)
#20 decltype(*(static_cast<SingleThreadedSchedulerClient*&>(fp0)).*fp()) std::__1::__invoke<void (SingleThreadedSchedulerClient::*&)(), SingleThreadedSchedulerClient*&, void>(void (SingleThreadedSchedulerClient::*&)(), SingleThreadedSchedulerClient*&) /usr/lib/llvm-13/bin/../include/c++/v1/type_traits:3859:1 (test_bitcoin+0xe2c7ea)
#21 std::__1::__bind_return<void (SingleThreadedSchedulerClient::*)(), std::__1::tuple<SingleThreadedSchedulerClient*>, std::__1::tuple<>, __is_valid_bind_return<void (SingleThreadedSchedulerClient::*)(), std::__1::tuple<SingleThreadedSchedulerClient*>, std::__1::tuple<> >::value>::type std::__1::__apply_functor<void (SingleThreadedSchedulerClient::*)(), std::__1::tuple<SingleThreadedSchedulerClient*>, 0ul, std::__1::tuple<> >(void (SingleThreadedSchedulerClient::*&)(), std::__1::tuple<SingleThreadedSchedulerClient*>&, std::__1::__tuple_indices<0ul>, std::__1::tuple<>&&) /usr/lib/llvm-13/bin/../include/c++/v1/__functional/bind.h:257:12 (test_bitcoin+0xe2c7ea)
#22 std::__1::__bind_return<void (SingleThreadedSchedulerClient::*)(), std::__1::tuple<SingleThreadedSchedulerClient*>, std::__1::tuple<>, __is_valid_bind_return<void (SingleThreadedSchedulerClient::*)(), std::__1::tuple<SingleThreadedSchedulerClient*>, std::__1::tuple<> >::value>::type std::__1::__bind<void (SingleThreadedSchedulerClient::*)(), SingleThreadedSchedulerClient*>::operator()<>() /usr/lib/llvm-13/bin/../include/c++/v1/__functional/bind.h:292:20 (test_bitcoin+0xe2c7ea)
#23 decltype(static_cast<std::__1::__bind<void (SingleThreadedSchedulerClient::*)(), SingleThreadedSchedulerClient*>&>(fp)()) std::__1::__invoke<std::__1::__bind<void (SingleThreadedSchedulerClient::*)(), SingleThreadedSchedulerClient*>&>(std::__1::__bind<void (SingleThreadedSchedulerClient::*)(), SingleThreadedSchedulerClient*>&) /usr/lib/llvm-13/bin/../include/c++/v1/type_traits:3918:1 (test_bitcoin+0xe2c7ea)
#24 void std::__1::__invoke_void_return_wrapper<void, true>::__call<std::__1::__bind<void (SingleThreadedSchedulerClient::*)(), SingleThreadedSchedulerClient*>&>(std::__1::__bind<void (SingleThreadedSchedulerClient::*)(), SingleThreadedSchedulerClient*>&) /usr/lib/llvm-13/bin/../include/c++/v1/__functional/invoke.h:61:9 (test_bitcoin+0xe2c7ea)
#25 std::__1::__function::__alloc_func<std::__1::__bind<void (SingleThreadedSchedulerClient::*)(), SingleThreadedSchedulerClient*>, std::__1::allocator<std::__1::__bind<void (SingleThreadedSchedulerClient::*)(), SingleThreadedSchedulerClient*> >, void ()>::operator()() /usr/lib/llvm-13/bin/../include/c++/v1/__functional/function.h:171:16 (test_bitcoin+0xe2c7ea)
#26 std::__1::__function::__func<std::__1::__bind<void (SingleThreadedSchedulerClient::*)(), SingleThreadedSchedulerClient*>, std::__1::allocator<std::__1::__bind<void (SingleThreadedSchedulerClient::*)(), SingleThreadedSchedulerClient*> >, void ()>::operator()() /usr/lib/llvm-13/bin/../include/c++/v1/__functional/function.h:345:12 (test_bitcoin+0xe2c7ea)
#27 std::__1::__function::__value_func<void ()>::operator()() const /usr/lib/llvm-13/bin/../include/c++/v1/__functional/function.h:498:16 (test_bitcoin+0xe292bc)
#28 std::__1::function<void ()>::operator()() const /usr/lib/llvm-13/bin/../include/c++/v1/__functional/function.h:1175:12 (test_bitcoin+0xe292bc)
#29 CScheduler::serviceQueue() src/scheduler.cpp:64:17 (test_bitcoin+0xe292bc)
#30 ChainTestingSetup::ChainTestingSetup(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<char const*, std::__1::allocator<char const*> > const&)::$_0::operator()() const src/test/util/setup_common.cpp:156:110 (test_bitcoin+0x9bdaa8)
#31 decltype(static_cast<ChainTestingSetup::ChainTestingSetup(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<char const*, std::__1::allocator<char const*> > const&)::$_0&>(fp)()) std::__1::__invoke<ChainTestingSetup::ChainTestingSetup(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<char const*, std::__1::allocator<char const*> > const&)::$_0&>(ChainTestingSetup::ChainTestingSetup(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<char const*, std::__1::allocator<char const*> > const&)::$_0&) /usr/lib/llvm-13/bin/../include/c++/v1/type_traits:3918:1 (test_bitcoin+0x9bdaa8)
#32 void std::__1::__invoke_void_return_wrapper<void, true>::__call<ChainTestingSetup::ChainTestingSetup(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<char const*, std::__1::allocator<char const*> > const&)::$_0&>(ChainTestingSetup::ChainTestingSetup(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<char const*, std::__1::allocator<char const*> > const&)::$_0&) /usr/lib/llvm-13/bin/../include/c++/v1/__functional/invoke.h:61:9 (test_bitcoin+0x9bdaa8)
#33 std::__1::__function::__alloc_func<ChainTestingSetup::ChainTestingSetup(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<char const*, std::__1::allocator<char const*> > const&)::$_0, std::__1::allocator<ChainTestingSetup::ChainTestingSetup(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<char const*, std::__1::allocator<char const*> > const&)::$_0>, void ()>::operator()() /usr/lib/llvm-13/bin/../include/c++/v1/__functional/function.h:171:16 (test_bitcoin+0x9bdaa8)
#34 std::__1::__function::__func<ChainTestingSetup::ChainTestingSetup(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<char const*, std::__1::allocator<char const*> > const&)::$_0, std::__1::allocator<ChainTestingSetup::ChainTestingSetup(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<char const*, std::__1::allocator<char const*> > const&)::$_0>, void ()>::operator()() /usr/lib/llvm-13/bin/../include/c++/v1/__functional/function.h:345:12 (test_bitcoin+0x9bdaa8)
#35 std::__1::__function::__value_func<void ()>::operator()() const /usr/lib/llvm-13/bin/../include/c++/v1/__functional/function.h:498:16 (test_bitcoin+0xebff6f)
#36 std::__1::function<void ()>::operator()() const /usr/lib/llvm-13/bin/../include/c++/v1/__functional/function.h:1175:12 (test_bitcoin+0xebff6f)
#37 util::TraceThread(char const*, std::__1::function<void ()>) src/util/thread.cpp:18:9 (test_bitcoin+0xebff6f)
#38 decltype(static_cast<void (*>(fp)(static_cast<char const*>(fp0), static_cast<ChainTestingSetup::ChainTestingSetup(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<char const*, std::__1::allocator<char const*> > const&)::$_0>(fp0))) std::__1::__invoke<void (*)(char const*, std::__1::function<void ()>), char const*, ChainTestingSetup::ChainTestingSetup(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<char const*, std::__1::allocator<char const*> > const&)::$_0>(void (*&&)(char const*, std::__1::function<void ()>), char const*&&, ChainTestingSetup::ChainTestingSetup(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<char const*, std::__1::allocator<char const*> > const&)::$_0&&) /usr/lib/llvm-13/bin/../include/c++/v1/type_traits:3918:1 (test_bitcoin+0x9bd6a1)
#39 void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (*)(char const*, std::__1::function<void ()>), char const*, ChainTestingSetup::ChainTestingSetup(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<char const*, std::__1::allocator<char const*> > const&)::$_0, 2ul, 3ul>(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (*)(char const*, std::__1::function<void ()>), char const*, ChainTestingSetup::ChainTestingSetup(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<char const*, std::__1::allocator<char const*> > const&)::$_0>&, std::__1::__tuple_indices<2ul, 3ul>) /usr/lib/llvm-13/bin/../include/c++/v1/thread:280:5 (test_bitcoin+0x9bd6a1)
#40 void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (*)(char const*, std::__1::function<void ()>), char const*, ChainTestingSetup::ChainTestingSetup(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<char const*, std::__1::allocator<char const*> > const&)::$_0> >(void*) /usr/lib/llvm-13/bin/../include/c++/v1/thread:291:5 (test_bitcoin+0x9bd6a1) |
Nice! Concept ACK. |
I haven't checked in detail, but this looks like a known bug. Maybe adjust the suppressions for now? |
00a4757
to
c83e659
Compare
Added a suppression, removed a suppression, pruned out |
c83e659
to
52bc718
Compare
Removed the Boost bump (no need to do that here, and it may have other issues), and have marked this as ready for review. The failure in the ARM CI looks unrelated. Updated the PR description as well. |
The docs were put up in 1.69: https://www.boost.org/doc/libs/1_69_0/libs/test/doc/html/boost_test/adv_scenarios/single_header_customizations/multiple_translation_units.html Our minimum is 1.64 Bionic has 1.65: https://packages.ubuntu.com/bionic/libboost-dev Bionic seems to pass with |
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. ConflictsReviewers, this pull request conflicts with the following ones:
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first. |
Thanks for taking a look. Guix build added to PR description. |
Concept ACK |
Concept ACK! |
52bc718
to
8a74edb
Compare
Something similar was initially suggested in bitcoin#24301. Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
Something similar was initially suggested in bitcoin#24301. Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
Something similar was initially suggested in bitcoin#24301. Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
Something similar was initially suggested in bitcoin#24301. Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
Something similar was initially suggested in bitcoin#24301. Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
Something similar was initially suggested in bitcoin#24301. Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
Something similar was initially suggested in bitcoin#24301. Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
Something similar was initially suggested in bitcoin#24301. Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
Something similar was initially suggested in bitcoin#24301. Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
Something similar was initially suggested in bitcoin#24301. Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
Something similar was initially suggested in bitcoin#24301. Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
Something similar was initially suggested in bitcoin#24301. Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
Something similar was initially suggested in bitcoin#24301. Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
Something similar was initially suggested in bitcoin#24301. Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
Something similar was initially suggested in bitcoin#24301. Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
Something similar was initially suggested in bitcoin#24301. Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
Something similar was initially suggested in bitcoin#24301. Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
Something similar was initially suggested in bitcoin#24301. Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
Something similar was initially suggested in bitcoin#24301. Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
…7301) * bitcoin-core: remove no-longer needed Boost CXXFLAGS Since bitcoin/bitcoin#24301 our Boost usage is header-only. * bitcoin-core: enable sqlite in our dependency builder
Something similar was initially suggested in bitcoin#24301. Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
Something similar was initially suggested in bitcoin#24301. Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
Something similar was initially suggested in bitcoin#24301.
Something similar was initially suggested in bitcoin#24301.
Something similar was initially suggested in bitcoin#24301.
Something similar was initially suggested in bitcoin#24301.
Something similar was initially suggested in bitcoin#24301.
Something similar was initially suggested in bitcoin#24301.
This PR converts our Boost usage to header only. We switch from using our last remaining Boost lib (unit test), to using it's header-only implementation (see https://www.boost.org/doc/libs/1_78_0/libs/test/doc/html/boost_test/adv_scenarios/single_header_customizations/multiple_translation_units.html).
Also related to #24291.
Guix build: