Skip to content
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

cmake: Fix AddBoostIfNeeded module #312

Merged
merged 1 commit into from
Aug 13, 2024
Merged

Conversation

hebasto
Copy link
Owner

@hebasto hebasto commented Aug 7, 2024

Cross-posted from bitcoin#30454 (comment):

Pretty sure there are two separate bugs here:

  • The first is that BOOST_NO_CXX98_FUNCTION_BASE isn't removed from CMAKE_REQUIRED_DEFINITIONS after this check, which means it's incorrectly reused for the check below.

  • The second is that when -DWERROR=ON is used, -Werror isn't being passed to the check for the Boost Test header (which also hides the first bug).

This PR addresses the first part (see the commit message for more details).

The second one remains unaddressed for the following reasons:

  1. -DWERROR=ON (or --enable-debug in Autotools) was never used to control passing the -Werror flag to checks of any type.
  2. In both build systems—Autotools and CMake—we do not use -Werror in check for header availability. It is not clear why unit_test.hpp should be an exception.

Please correct me if my understanding is wrong.

@hebasto hebasto added the bug Something isn't working label Aug 7, 2024
@fanquake
Copy link

fanquake commented Aug 7, 2024

(see the commit message for more details).

We have to pass it if accepted; otherwise, the test header check may
fail on some systems, such as macOS arm64 + Homebrew's boost@1.76.

Can you elaborate. Why does it fail (what failure?) on some systems?

@hebasto
Copy link
Owner Author

hebasto commented Aug 7, 2024

We have to pass it if accepted; otherwise, the test header check may
fail on some systems, such as macOS arm64 + Homebrew's boost@1.76.

Can you elaborate. Why does it fail (what failure?) on some systems?

Here is an excerpt from build/CMakeFiles/CMakeConfigureLog.yaml:

  -
    kind: "try_compile-v1"
    backtrace:
      - "/opt/homebrew/Cellar/cmake/3.30.2/share/cmake/Modules/CheckIncludeFileCXX.cmake:89 (try_compile)"
      - "cmake/module/AddBoostIfNeeded.cmake:70 (check_include_file_cxx)"
      - "CMakeLists.txt:406 (add_boost_if_needed)"
    checks:
      - "Looking for C++ include boost/test/included/unit_test.hpp"
    directories:
      source: "/Users/runner/work/bitcoin/bitcoin/build/CMakeFiles/CMakeScratch/TryCompile-HFA5St"
      binary: "/Users/runner/work/bitcoin/bitcoin/build/CMakeFiles/CMakeScratch/TryCompile-HFA5St"
    cmakeVariables:
      CMAKE_CXX_COMPILE_OBJECT: "<CMAKE_CXX_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT> -c <SOURCE>  "
      CMAKE_CXX_FLAGS: ""
      CMAKE_CXX_FLAGS_RELWITHDEBINFO: "-O2 -g"
      CMAKE_CXX_LINK_EXECUTABLE: "<CMAKE_CXX_COMPILER> <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES> "
      CMAKE_CXX_LINK_NO_PIE_SUPPORTED: ""
      CMAKE_EXE_LINKER_FLAGS: ""
      CMAKE_MODULE_PATH: "/Users/runner/work/bitcoin/bitcoin/cmake/module"
      CMAKE_OSX_ARCHITECTURES: ""
      CMAKE_OSX_DEPLOYMENT_TARGET: ""
      CMAKE_OSX_SYSROOT: "/Applications/Xcode_15.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk"
      CMAKE_POSITION_INDEPENDENT_CODE: "ON"
    buildResult:
      variable: "HAVE_BOOST_INCLUDED_UNIT_TEST_H"
      cached: true
      stdout: |
        Change Dir: '/Users/runner/work/bitcoin/bitcoin/build/CMakeFiles/CMakeScratch/TryCompile-HFA5St'
        
        Run Build Command(s): /opt/homebrew/Cellar/cmake/3.30.2/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_2e48b/fast
        /Applications/Xcode_15.2.app/Contents/Developer/usr/bin/make  -f CMakeFiles/cmTC_2e48b.dir/build.make CMakeFiles/cmTC_2e48b.dir/build
        Building CXX object CMakeFiles/cmTC_2e48b.dir/CheckIncludeFile.cxx.o
        /Applications/Xcode_15.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -DBOOST_TEST_NO_MAIN -I/opt/homebrew/opt/boost@1.76/include -O2 -g -std=c++20 -arch arm64 -isysroot /Applications/Xcode_15.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk -fPIC -MD -MT CMakeFiles/cmTC_2e48b.dir/CheckIncludeFile.cxx.o -MF CMakeFiles/cmTC_2e48b.dir/CheckIncludeFile.cxx.o.d -o CMakeFiles/cmTC_2e48b.dir/CheckIncludeFile.cxx.o -c /Users/runner/work/bitcoin/bitcoin/build/CMakeFiles/CMakeScratch/TryCompile-HFA5St/CheckIncludeFile.cxx
        In file included from /Users/runner/work/bitcoin/bitcoin/build/CMakeFiles/CMakeScratch/TryCompile-HFA5St/CheckIncludeFile.cxx:1:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/included/unit_test.hpp:18:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/impl/compiler_log_formatter.ipp:19:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/output/compiler_log_formatter.hpp:19:
        /opt/homebrew/opt/boost@1.76/include/boost/test/utils/setcolor.hpp:92:31: warning: 'sprintf' is deprecated: This function is provided for compatibility reasons only.  Due to security concerns inherent in the design of sprintf(3), it is highly recommended that you use snprintf(3) instead. [-Wdeprecated-declarations]
                m_command_size = std::sprintf( m_control_command, "%c[%c;3%c;4%cm",
                                      ^
        /Applications/Xcode_15.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/stdio.h:180:1: note: 'sprintf' has been explicitly marked deprecated here
        __deprecated_msg("This function is provided for compatibility reasons only.  Due to security concerns inherent in the design of sprintf(3), it is highly recommended that you use snprintf(3) instead.")
        ^
        /Applications/Xcode_15.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/sys/cdefs.h:215:48: note: expanded from macro '__deprecated_msg'
                #define __deprecated_msg(_msg) __attribute__((__deprecated__(_msg)))
                                                              ^
        In file included from /Users/runner/work/bitcoin/bitcoin/build/CMakeFiles/CMakeScratch/TryCompile-HFA5St/CheckIncludeFile.cxx:1:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/included/unit_test.hpp:18:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/impl/compiler_log_formatter.ipp:19:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/output/compiler_log_formatter.hpp:19:
        /opt/homebrew/opt/boost@1.76/include/boost/test/utils/setcolor.hpp:103:31: warning: 'sprintf' is deprecated: This function is provided for compatibility reasons only.  Due to security concerns inherent in the design of sprintf(3), it is highly recommended that you use snprintf(3) instead. [-Wdeprecated-declarations]
                m_command_size = std::sprintf(m_control_command, "%c[%c;3%c;4%cm",
                                      ^
        /Applications/Xcode_15.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/stdio.h:180:1: note: 'sprintf' has been explicitly marked deprecated here
        __deprecated_msg("This function is provided for compatibility reasons only.  Due to security concerns inherent in the design of sprintf(3), it is highly recommended that you use snprintf(3) instead.")
        ^
        /Applications/Xcode_15.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/sys/cdefs.h:215:48: note: expanded from macro '__deprecated_msg'
                #define __deprecated_msg(_msg) __attribute__((__deprecated__(_msg)))
                                                              ^
        In file included from /Users/runner/work/bitcoin/bitcoin/build/CMakeFiles/CMakeScratch/TryCompile-HFA5St/CheckIncludeFile.cxx:1:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/included/unit_test.hpp:18:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/impl/compiler_log_formatter.ipp:22:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/execution_monitor.hpp:28:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function0.hpp:11:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/maybe_include.hpp:15:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:13:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/prologue.hpp:17:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_base.hpp:21:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/type_index.hpp:29:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/type_index/stl_type_index.hpp:47:
        /opt/homebrew/opt/boost@1.76/include/boost/container_hash/hash.hpp:131:33: error: no template named 'unary_function' in namespace 'std'; did you mean '__unary_function'?
                struct hash_base : std::unary_function<T, std::size_t> {};
                                   ~~~~~^~~~~~~~~~~~~~
                                        __unary_function
        /Applications/Xcode_15.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/c++/v1/__functional/unary_function.h:46:1: note: '__unary_function' declared here
        using __unary_function = __unary_function_keep_layout_base<_Arg, _Result>;
        ^
        In file included from /Users/runner/work/bitcoin/bitcoin/build/CMakeFiles/CMakeScratch/TryCompile-HFA5St/CheckIncludeFile.cxx:1:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/included/unit_test.hpp:18:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/impl/compiler_log_formatter.ipp:22:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/execution_monitor.hpp:28:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function0.hpp:11:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/maybe_include.hpp:15:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:13:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/prologue.hpp:17:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_base.hpp:22:
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/has_trivial_copy.hpp:34:4: warning: builtin __has_trivial_copy is deprecated; use __is_trivially_copyable instead [-Wdeprecated-builtins]
           BOOST_HAS_TRIVIAL_COPY(T) BOOST_TT_TRIVIAL_CONSTRUCT_FIX
           ^
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/intrinsics.hpp:190:41: note: expanded from macro 'BOOST_HAS_TRIVIAL_COPY'
        #     define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T) && !is_reference<T>::value)
                                                ^
        In file included from /Users/runner/work/bitcoin/bitcoin/build/CMakeFiles/CMakeScratch/TryCompile-HFA5St/CheckIncludeFile.cxx:1:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/included/unit_test.hpp:18:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/impl/compiler_log_formatter.ipp:22:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/execution_monitor.hpp:28:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function0.hpp:11:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/maybe_include.hpp:15:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:13:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/prologue.hpp:17:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_base.hpp:23:
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/has_trivial_destructor.hpp:30:86: warning: builtin __has_trivial_destructor is deprecated; use __is_trivially_destructible instead [-Wdeprecated-builtins]
        template <typename T> struct has_trivial_destructor : public integral_constant<bool, BOOST_HAS_TRIVIAL_DESTRUCTOR(T)>{};
                                                                                             ^
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/intrinsics.hpp:196:47: note: expanded from macro 'BOOST_HAS_TRIVIAL_DESTRUCTOR'
        #     define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T)  && is_destructible<T>::value)
                                                      ^
        In file included from /Users/runner/work/bitcoin/bitcoin/build/CMakeFiles/CMakeScratch/TryCompile-HFA5St/CheckIncludeFile.cxx:1:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/included/unit_test.hpp:18:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/impl/compiler_log_formatter.ipp:22:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/execution_monitor.hpp:28:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function0.hpp:11:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/maybe_include.hpp:15:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:13:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/prologue.hpp:17:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_base.hpp:22:
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/has_trivial_copy.hpp:34:4: warning: builtin __has_trivial_copy is deprecated; use __is_trivially_copyable instead [-Wdeprecated-builtins]
           BOOST_HAS_TRIVIAL_COPY(T) BOOST_TT_TRIVIAL_CONSTRUCT_FIX
           ^
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/intrinsics.hpp:190:41: note: expanded from macro 'BOOST_HAS_TRIVIAL_COPY'
        #     define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T) && !is_reference<T>::value)
                                                ^
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/has_trivial_copy.hpp:57:65: note: in instantiation of template class 'boost::has_trivial_copy<boost::_bi::bind_t<void, boost::_mfi::mf0<void, boost::unit_test::test_unit_fixture>, boost::_bi::list1<boost::_bi::value<boost::shared_ptr<boost::unit_test::test_unit_fixture>>>>>' requested here
        template <class T> struct has_trivial_copy_constructor : public has_trivial_copy<T>{};
                                                                        ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:945:20: note: in instantiation of template class 'boost::has_trivial_copy_constructor<boost::_bi::bind_t<void, boost::_mfi::mf0<void, boost::unit_test::test_unit_fixture>, boost::_bi::list1<boost::_bi::value<boost::shared_ptr<boost::unit_test::test_unit_fixture>>>>>' requested here
                if (boost::has_trivial_copy_constructor<Functor>::value &&
                           ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:720:13: note: in instantiation of function template specialization 'boost::function0<void>::assign_to<boost::_bi::bind_t<void, boost::_mfi::mf0<void, boost::unit_test::test_unit_fixture>, boost::_bi::list1<boost::_bi::value<boost::shared_ptr<boost::unit_test::test_unit_fixture>>>>>' requested here
              this->assign_to(f);
                    ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:1086:5: note: in instantiation of function template specialization 'boost::function0<void>::function0<boost::_bi::bind_t<void, boost::_mfi::mf0<void, boost::unit_test::test_unit_fixture>, boost::_bi::list1<boost::_bi::value<boost::shared_ptr<boost::unit_test::test_unit_fixture>>>>>' requested here
            base_type(f)
            ^
        /opt/homebrew/opt/boost@1.76/include/boost/test/impl/framework.ipp:707:63: note: in instantiation of function template specialization 'boost::function<void ()>::function<boost::_bi::bind_t<void, boost::_mfi::mf0<void, boost::unit_test::test_unit_fixture>, boost::_bi::list1<boost::_bi::value<boost::shared_ptr<boost::unit_test::test_unit_fixture>>>>>' requested here
                    result = unit_test_monitor.execute_and_translate( boost::bind( &test_unit_fixture::setup, F ) );
                                                                      ^
        In file included from /Users/runner/work/bitcoin/bitcoin/build/CMakeFiles/CMakeScratch/TryCompile-HFA5St/CheckIncludeFile.cxx:1:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/included/unit_test.hpp:18:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/impl/compiler_log_formatter.ipp:22:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/execution_monitor.hpp:28:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function0.hpp:11:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/maybe_include.hpp:15:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:13:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/prologue.hpp:17:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_base.hpp:23:
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/has_trivial_destructor.hpp:30:86: warning: builtin __has_trivial_destructor is deprecated; use __is_trivially_destructible instead [-Wdeprecated-builtins]
        template <typename T> struct has_trivial_destructor : public integral_constant<bool, BOOST_HAS_TRIVIAL_DESTRUCTOR(T)>{};
                                                                                             ^
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/intrinsics.hpp:196:47: note: expanded from macro 'BOOST_HAS_TRIVIAL_DESTRUCTOR'
        #     define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T)  && is_destructible<T>::value)
                                                      ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:946:20: note: in instantiation of template class 'boost::has_trivial_destructor<boost::_bi::bind_t<void, boost::_mfi::mf0<void, boost::unit_test::test_unit_fixture>, boost::_bi::list1<boost::_bi::value<boost::shared_ptr<boost::unit_test::test_unit_fixture>>>>>' requested here
                    boost::has_trivial_destructor<Functor>::value &&
                           ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:720:13: note: in instantiation of function template specialization 'boost::function0<void>::assign_to<boost::_bi::bind_t<void, boost::_mfi::mf0<void, boost::unit_test::test_unit_fixture>, boost::_bi::list1<boost::_bi::value<boost::shared_ptr<boost::unit_test::test_unit_fixture>>>>>' requested here
              this->assign_to(f);
                    ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:1086:5: note: in instantiation of function template specialization 'boost::function0<void>::function0<boost::_bi::bind_t<void, boost::_mfi::mf0<void, boost::unit_test::test_unit_fixture>, boost::_bi::list1<boost::_bi::value<boost::shared_ptr<boost::unit_test::test_unit_fixture>>>>>' requested here
            base_type(f)
            ^
        /opt/homebrew/opt/boost@1.76/include/boost/test/impl/framework.ipp:707:63: note: in instantiation of function template specialization 'boost::function<void ()>::function<boost::_bi::bind_t<void, boost::_mfi::mf0<void, boost::unit_test::test_unit_fixture>, boost::_bi::list1<boost::_bi::value<boost::shared_ptr<boost::unit_test::test_unit_fixture>>>>>' requested here
                    result = unit_test_monitor.execute_and_translate( boost::bind( &test_unit_fixture::setup, F ) );
                                                                      ^
        In file included from /Users/runner/work/bitcoin/bitcoin/build/CMakeFiles/CMakeScratch/TryCompile-HFA5St/CheckIncludeFile.cxx:1:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/included/unit_test.hpp:18:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/impl/compiler_log_formatter.ipp:22:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/execution_monitor.hpp:28:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function0.hpp:11:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/maybe_include.hpp:15:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:13:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/prologue.hpp:17:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_base.hpp:22:
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/has_trivial_copy.hpp:34:4: warning: builtin __has_trivial_copy is deprecated; use __is_trivially_copyable instead [-Wdeprecated-builtins]
           BOOST_HAS_TRIVIAL_COPY(T) BOOST_TT_TRIVIAL_CONSTRUCT_FIX
           ^
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/intrinsics.hpp:190:41: note: expanded from macro 'BOOST_HAS_TRIVIAL_COPY'
        #     define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T) && !is_reference<T>::value)
                                                ^
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/has_trivial_copy.hpp:57:65: note: in instantiation of template class 'boost::has_trivial_copy<boost::_bi::bind_t<void, boost::_mfi::mf1<void, boost::unit_test::unit_test_log_t, std::ostream &>, boost::_bi::list2<boost::_bi::value<boost::unit_test::unit_test_log_t *>, boost::reference_wrapper<std::ostream>>>>' requested here
        template <class T> struct has_trivial_copy_constructor : public has_trivial_copy<T>{};
                                                                        ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:945:20: note: in instantiation of template class 'boost::has_trivial_copy_constructor<boost::_bi::bind_t<void, boost::_mfi::mf1<void, boost::unit_test::unit_test_log_t, std::ostream &>, boost::_bi::list2<boost::_bi::value<boost::unit_test::unit_test_log_t *>, boost::reference_wrapper<std::ostream>>>>' requested here
                if (boost::has_trivial_copy_constructor<Functor>::value &&
                           ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:720:13: note: in instantiation of function template specialization 'boost::function0<void>::assign_to<boost::_bi::bind_t<void, boost::_mfi::mf1<void, boost::unit_test::unit_test_log_t, std::ostream &>, boost::_bi::list2<boost::_bi::value<boost::unit_test::unit_test_log_t *>, boost::reference_wrapper<std::ostream>>>>' requested here
              this->assign_to(f);
                    ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:1086:5: note: in instantiation of function template specialization 'boost::function0<void>::function0<boost::_bi::bind_t<void, boost::_mfi::mf1<void, boost::unit_test::unit_test_log_t, std::ostream &>, boost::_bi::list2<boost::_bi::value<boost::unit_test::unit_test_log_t *>, boost::reference_wrapper<std::ostream>>>>' requested here
            base_type(f)
            ^
        /opt/homebrew/opt/boost@1.76/include/boost/test/impl/framework.ipp:986:58: note: in instantiation of function template specialization 'boost::function<void ()>::function<boost::_bi::bind_t<void, boost::_mfi::mf1<void, boost::unit_test::unit_test_log_t, std::ostream &>, boost::_bi::list2<boost::_bi::value<boost::unit_test::unit_test_log_t *>, boost::reference_wrapper<std::ostream>>>>' requested here
                        boost::function< void () > log_cleaner = boost::bind( &unit_test_log_t::set_stream,
                                                                 ^
        In file included from /Users/runner/work/bitcoin/bitcoin/build/CMakeFiles/CMakeScratch/TryCompile-HFA5St/CheckIncludeFile.cxx:1:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/included/unit_test.hpp:18:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/impl/compiler_log_formatter.ipp:22:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/execution_monitor.hpp:28:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function0.hpp:11:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/maybe_include.hpp:15:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:13:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/prologue.hpp:17:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_base.hpp:23:
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/has_trivial_destructor.hpp:30:86: warning: builtin __has_trivial_destructor is deprecated; use __is_trivially_destructible instead [-Wdeprecated-builtins]
        template <typename T> struct has_trivial_destructor : public integral_constant<bool, BOOST_HAS_TRIVIAL_DESTRUCTOR(T)>{};
                                                                                             ^
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/intrinsics.hpp:196:47: note: expanded from macro 'BOOST_HAS_TRIVIAL_DESTRUCTOR'
        #     define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T)  && is_destructible<T>::value)
                                                      ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:946:20: note: in instantiation of template class 'boost::has_trivial_destructor<boost::_bi::bind_t<void, boost::_mfi::mf1<void, boost::unit_test::unit_test_log_t, std::ostream &>, boost::_bi::list2<boost::_bi::value<boost::unit_test::unit_test_log_t *>, boost::reference_wrapper<std::ostream>>>>' requested here
                    boost::has_trivial_destructor<Functor>::value &&
                           ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:720:13: note: in instantiation of function template specialization 'boost::function0<void>::assign_to<boost::_bi::bind_t<void, boost::_mfi::mf1<void, boost::unit_test::unit_test_log_t, std::ostream &>, boost::_bi::list2<boost::_bi::value<boost::unit_test::unit_test_log_t *>, boost::reference_wrapper<std::ostream>>>>' requested here
              this->assign_to(f);
                    ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:1086:5: note: in instantiation of function template specialization 'boost::function0<void>::function0<boost::_bi::bind_t<void, boost::_mfi::mf1<void, boost::unit_test::unit_test_log_t, std::ostream &>, boost::_bi::list2<boost::_bi::value<boost::unit_test::unit_test_log_t *>, boost::reference_wrapper<std::ostream>>>>' requested here
            base_type(f)
            ^
        /opt/homebrew/opt/boost@1.76/include/boost/test/impl/framework.ipp:986:58: note: in instantiation of function template specialization 'boost::function<void ()>::function<boost::_bi::bind_t<void, boost::_mfi::mf1<void, boost::unit_test::unit_test_log_t, std::ostream &>, boost::_bi::list2<boost::_bi::value<boost::unit_test::unit_test_log_t *>, boost::reference_wrapper<std::ostream>>>>' requested here
                        boost::function< void () > log_cleaner = boost::bind( &unit_test_log_t::set_stream,
                                                                 ^
        In file included from /Users/runner/work/bitcoin/bitcoin/build/CMakeFiles/CMakeScratch/TryCompile-HFA5St/CheckIncludeFile.cxx:1:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/included/unit_test.hpp:18:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/impl/compiler_log_formatter.ipp:22:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/execution_monitor.hpp:28:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function0.hpp:11:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/maybe_include.hpp:15:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:13:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/prologue.hpp:17:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_base.hpp:22:
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/has_trivial_copy.hpp:34:4: warning: builtin __has_trivial_copy is deprecated; use __is_trivially_copyable instead [-Wdeprecated-builtins]
           BOOST_HAS_TRIVIAL_COPY(T) BOOST_TT_TRIVIAL_CONSTRUCT_FIX
           ^
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/intrinsics.hpp:190:41: note: expanded from macro 'BOOST_HAS_TRIVIAL_COPY'
        #     define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T) && !is_reference<T>::value)
                                                ^
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/has_trivial_copy.hpp:57:65: note: in instantiation of template class 'boost::has_trivial_copy<boost::_bi::bind_t<void, boost::_mfi::mf2<void, boost::unit_test::unit_test_log_t, boost::unit_test::output_format, std::ostream &>, boost::_bi::list3<boost::_bi::value<boost::unit_test::unit_test_log_t *>, boost::_bi::value<boost::unit_test::output_format>, boost::reference_wrapper<std::ostream>>>>' requested here
        template <class T> struct has_trivial_copy_constructor : public has_trivial_copy<T>{};
                                                                        ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:945:20: note: in instantiation of template class 'boost::has_trivial_copy_constructor<boost::_bi::bind_t<void, boost::_mfi::mf2<void, boost::unit_test::unit_test_log_t, boost::unit_test::output_format, std::ostream &>, boost::_bi::list3<boost::_bi::value<boost::unit_test::unit_test_log_t *>, boost::_bi::value<boost::unit_test::output_format>, boost::reference_wrapper<std::ostream>>>>' requested here
                if (boost::has_trivial_copy_constructor<Functor>::value &&
                           ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:720:13: note: in instantiation of function template specialization 'boost::function0<void>::assign_to<boost::_bi::bind_t<void, boost::_mfi::mf2<void, boost::unit_test::unit_test_log_t, boost::unit_test::output_format, std::ostream &>, boost::_bi::list3<boost::_bi::value<boost::unit_test::unit_test_log_t *>, boost::_bi::value<boost::unit_test::output_format>, boost::reference_wrapper<std::ostream>>>>' requested here
              this->assign_to(f);
                    ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:1086:5: note: in instantiation of function template specialization 'boost::function0<void>::function0<boost::_bi::bind_t<void, boost::_mfi::mf2<void, boost::unit_test::unit_test_log_t, boost::unit_test::output_format, std::ostream &>, boost::_bi::list3<boost::_bi::value<boost::unit_test::unit_test_log_t *>, boost::_bi::value<boost::unit_test::output_format>, boost::reference_wrapper<std::ostream>>>>' requested here
            base_type(f)
            ^
        /opt/homebrew/opt/boost@1.76/include/boost/test/impl/framework.ipp:1119:62: note: in instantiation of function template specialization 'boost::function<void ()>::function<boost::_bi::bind_t<void, boost::_mfi::mf2<void, boost::unit_test::unit_test_log_t, boost::unit_test::output_format, std::ostream &>, boost::_bi::list3<boost::_bi::value<boost::unit_test::unit_test_log_t *>, boost::_bi::value<boost::unit_test::output_format>, boost::reference_wrapper<std::ostream>>>>' requested here
                            boost::function< void () > log_cleaner = boost::bind( &unit_test_log_t::set_stream,
                                                                     ^
        In file included from /Users/runner/work/bitcoin/bitcoin/build/CMakeFiles/CMakeScratch/TryCompile-HFA5St/CheckIncludeFile.cxx:1:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/included/unit_test.hpp:18:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/impl/compiler_log_formatter.ipp:22:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/execution_monitor.hpp:28:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function0.hpp:11:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/maybe_include.hpp:15:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:13:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/prologue.hpp:17:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_base.hpp:23:
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/has_trivial_destructor.hpp:30:86: warning: builtin __has_trivial_destructor is deprecated; use __is_trivially_destructible instead [-Wdeprecated-builtins]
        template <typename T> struct has_trivial_destructor : public integral_constant<bool, BOOST_HAS_TRIVIAL_DESTRUCTOR(T)>{};
                                                                                             ^
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/intrinsics.hpp:196:47: note: expanded from macro 'BOOST_HAS_TRIVIAL_DESTRUCTOR'
        #     define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T)  && is_destructible<T>::value)
                                                      ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:946:20: note: in instantiation of template class 'boost::has_trivial_destructor<boost::_bi::bind_t<void, boost::_mfi::mf2<void, boost::unit_test::unit_test_log_t, boost::unit_test::output_format, std::ostream &>, boost::_bi::list3<boost::_bi::value<boost::unit_test::unit_test_log_t *>, boost::_bi::value<boost::unit_test::output_format>, boost::reference_wrapper<std::ostream>>>>' requested here
                    boost::has_trivial_destructor<Functor>::value &&
                           ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:720:13: note: in instantiation of function template specialization 'boost::function0<void>::assign_to<boost::_bi::bind_t<void, boost::_mfi::mf2<void, boost::unit_test::unit_test_log_t, boost::unit_test::output_format, std::ostream &>, boost::_bi::list3<boost::_bi::value<boost::unit_test::unit_test_log_t *>, boost::_bi::value<boost::unit_test::output_format>, boost::reference_wrapper<std::ostream>>>>' requested here
              this->assign_to(f);
                    ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:1086:5: note: in instantiation of function template specialization 'boost::function0<void>::function0<boost::_bi::bind_t<void, boost::_mfi::mf2<void, boost::unit_test::unit_test_log_t, boost::unit_test::output_format, std::ostream &>, boost::_bi::list3<boost::_bi::value<boost::unit_test::unit_test_log_t *>, boost::_bi::value<boost::unit_test::output_format>, boost::reference_wrapper<std::ostream>>>>' requested here
            base_type(f)
            ^
        /opt/homebrew/opt/boost@1.76/include/boost/test/impl/framework.ipp:1119:62: note: in instantiation of function template specialization 'boost::function<void ()>::function<boost::_bi::bind_t<void, boost::_mfi::mf2<void, boost::unit_test::unit_test_log_t, boost::unit_test::output_format, std::ostream &>, boost::_bi::list3<boost::_bi::value<boost::unit_test::unit_test_log_t *>, boost::_bi::value<boost::unit_test::output_format>, boost::reference_wrapper<std::ostream>>>>' requested here
                            boost::function< void () > log_cleaner = boost::bind( &unit_test_log_t::set_stream,
                                                                     ^
        In file included from /Users/runner/work/bitcoin/bitcoin/build/CMakeFiles/CMakeScratch/TryCompile-HFA5St/CheckIncludeFile.cxx:1:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/included/unit_test.hpp:18:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/impl/compiler_log_formatter.ipp:22:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/execution_monitor.hpp:28:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function0.hpp:11:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/maybe_include.hpp:15:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:13:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/prologue.hpp:17:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_base.hpp:22:
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/has_trivial_copy.hpp:34:4: warning: builtin __has_trivial_copy is deprecated; use __is_trivially_copyable instead [-Wdeprecated-builtins]
           BOOST_HAS_TRIVIAL_COPY(T) BOOST_TT_TRIVIAL_CONSTRUCT_FIX
           ^
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/intrinsics.hpp:190:41: note: expanded from macro 'BOOST_HAS_TRIVIAL_COPY'
        #     define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T) && !is_reference<T>::value)
                                                ^
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/has_trivial_copy.hpp:57:65: note: in instantiation of template class 'boost::has_trivial_copy<boost::_bi::bind_t<void, void (*)(std::ostream &), boost::_bi::list1<boost::reference_wrapper<std::ostream>>>>' requested here
        template <class T> struct has_trivial_copy_constructor : public has_trivial_copy<T>{};
                                                                        ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:945:20: note: in instantiation of template class 'boost::has_trivial_copy_constructor<boost::_bi::bind_t<void, void (*)(std::ostream &), boost::_bi::list1<boost::reference_wrapper<std::ostream>>>>' requested here
                if (boost::has_trivial_copy_constructor<Functor>::value &&
                           ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:720:13: note: in instantiation of function template specialization 'boost::function0<void>::assign_to<boost::_bi::bind_t<void, void (*)(std::ostream &), boost::_bi::list1<boost::reference_wrapper<std::ostream>>>>' requested here
              this->assign_to(f);
                    ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:1086:5: note: in instantiation of function template specialization 'boost::function0<void>::function0<boost::_bi::bind_t<void, void (*)(std::ostream &), boost::_bi::list1<boost::reference_wrapper<std::ostream>>>>' requested here
            base_type(f)
            ^
        /opt/homebrew/opt/boost@1.76/include/boost/test/impl/framework.ipp:1177:53: note: in instantiation of function template specialization 'boost::function<void ()>::function<boost::_bi::bind_t<void, void (*)(std::ostream &), boost::_bi::list1<boost::reference_wrapper<std::ostream>>>>' requested here
                boost::function< void () > report_cleaner = boost::bind( &results_reporter::set_stream,
                                                            ^
        In file included from /Users/runner/work/bitcoin/bitcoin/build/CMakeFiles/CMakeScratch/TryCompile-HFA5St/CheckIncludeFile.cxx:1:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/included/unit_test.hpp:18:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/impl/compiler_log_formatter.ipp:22:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/execution_monitor.hpp:28:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function0.hpp:11:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/maybe_include.hpp:15:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:13:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/prologue.hpp:17:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_base.hpp:23:
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/has_trivial_destructor.hpp:30:86: warning: builtin __has_trivial_destructor is deprecated; use __is_trivially_destructible instead [-Wdeprecated-builtins]
        template <typename T> struct has_trivial_destructor : public integral_constant<bool, BOOST_HAS_TRIVIAL_DESTRUCTOR(T)>{};
                                                                                             ^
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/intrinsics.hpp:196:47: note: expanded from macro 'BOOST_HAS_TRIVIAL_DESTRUCTOR'
        #     define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T)  && is_destructible<T>::value)
                                                      ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:946:20: note: in instantiation of template class 'boost::has_trivial_destructor<boost::_bi::bind_t<void, void (*)(std::ostream &), boost::_bi::list1<boost::reference_wrapper<std::ostream>>>>' requested here
                    boost::has_trivial_destructor<Functor>::value &&
                           ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:720:13: note: in instantiation of function template specialization 'boost::function0<void>::assign_to<boost::_bi::bind_t<void, void (*)(std::ostream &), boost::_bi::list1<boost::reference_wrapper<std::ostream>>>>' requested here
              this->assign_to(f);
                    ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:1086:5: note: in instantiation of function template specialization 'boost::function0<void>::function0<boost::_bi::bind_t<void, void (*)(std::ostream &), boost::_bi::list1<boost::reference_wrapper<std::ostream>>>>' requested here
            base_type(f)
            ^
        /opt/homebrew/opt/boost@1.76/include/boost/test/impl/framework.ipp:1177:53: note: in instantiation of function template specialization 'boost::function<void ()>::function<boost::_bi::bind_t<void, void (*)(std::ostream &), boost::_bi::list1<boost::reference_wrapper<std::ostream>>>>' requested here
                boost::function< void () > report_cleaner = boost::bind( &results_reporter::set_stream,
                                                            ^
        In file included from /Users/runner/work/bitcoin/bitcoin/build/CMakeFiles/CMakeScratch/TryCompile-HFA5St/CheckIncludeFile.cxx:1:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/included/unit_test.hpp:18:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/impl/compiler_log_formatter.ipp:22:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/execution_monitor.hpp:28:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function0.hpp:11:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/maybe_include.hpp:15:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:13:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/prologue.hpp:17:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_base.hpp:22:
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/has_trivial_copy.hpp:34:4: warning: builtin __has_trivial_copy is deprecated; use __is_trivially_copyable instead [-Wdeprecated-builtins]
           BOOST_HAS_TRIVIAL_COPY(T) BOOST_TT_TRIVIAL_CONSTRUCT_FIX
           ^
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/intrinsics.hpp:190:41: note: expanded from macro 'BOOST_HAS_TRIVIAL_COPY'
        #     define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T) && !is_reference<T>::value)
                                                ^
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/has_trivial_copy.hpp:57:65: note: in instantiation of template class 'boost::has_trivial_copy<boost::_bi::bind_t<void, void (*)(boost::unit_test::test_suite *(*)(int, char **)), boost::_bi::list1<boost::_bi::value<boost::unit_test::test_suite *(*)(int, char **)>>>>' requested here
        template <class T> struct has_trivial_copy_constructor : public has_trivial_copy<T>{};
                                                                        ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:945:20: note: in instantiation of template class 'boost::has_trivial_copy_constructor<boost::_bi::bind_t<void, void (*)(boost::unit_test::test_suite *(*)(int, char **)), boost::_bi::list1<boost::_bi::value<boost::unit_test::test_suite *(*)(int, char **)>>>>' requested here
                if (boost::has_trivial_copy_constructor<Functor>::value &&
                           ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:720:13: note: in instantiation of function template specialization 'boost::function0<void>::assign_to<boost::_bi::bind_t<void, void (*)(boost::unit_test::test_suite *(*)(int, char **)), boost::_bi::list1<boost::_bi::value<boost::unit_test::test_suite *(*)(int, char **)>>>>' requested here
              this->assign_to(f);
                    ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:1086:5: note: in instantiation of function template specialization 'boost::function0<void>::function0<boost::_bi::bind_t<void, void (*)(boost::unit_test::test_suite *(*)(int, char **)), boost::_bi::list1<boost::_bi::value<boost::unit_test::test_suite *(*)(int, char **)>>>>' requested here
            base_type(f)
            ^
        /opt/homebrew/opt/boost@1.76/include/boost/test/impl/framework.ipp:1208:42: note: in instantiation of function template specialization 'boost::function<void ()>::function<boost::_bi::bind_t<void, void (*)(boost::unit_test::test_suite *(*)(int, char **)), boost::_bi::list1<boost::_bi::value<boost::unit_test::test_suite *(*)(int, char **)>>>>' requested here
                s_frk_state().m_aux_em.vexecute( boost::bind( &impl::invoke_init_func, init_func ) );
                                                 ^
        In file included from /Users/runner/work/bitcoin/bitcoin/build/CMakeFiles/CMakeScratch/TryCompile-HFA5St/CheckIncludeFile.cxx:1:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/included/unit_test.hpp:18:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/impl/compiler_log_formatter.ipp:22:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/execution_monitor.hpp:28:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function0.hpp:11:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/maybe_include.hpp:15:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:13:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/prologue.hpp:17:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_base.hpp:23:
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/has_trivial_destructor.hpp:30:86: warning: builtin __has_trivial_destructor is deprecated; use __is_trivially_destructible instead [-Wdeprecated-builtins]
        template <typename T> struct has_trivial_destructor : public integral_constant<bool, BOOST_HAS_TRIVIAL_DESTRUCTOR(T)>{};
                                                                                             ^
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/intrinsics.hpp:196:47: note: expanded from macro 'BOOST_HAS_TRIVIAL_DESTRUCTOR'
        #     define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T)  && is_destructible<T>::value)
                                                      ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:946:20: note: in instantiation of template class 'boost::has_trivial_destructor<boost::_bi::bind_t<void, void (*)(boost::unit_test::test_suite *(*)(int, char **)), boost::_bi::list1<boost::_bi::value<boost::unit_test::test_suite *(*)(int, char **)>>>>' requested here
                    boost::has_trivial_destructor<Functor>::value &&
                           ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:720:13: note: in instantiation of function template specialization 'boost::function0<void>::assign_to<boost::_bi::bind_t<void, void (*)(boost::unit_test::test_suite *(*)(int, char **)), boost::_bi::list1<boost::_bi::value<boost::unit_test::test_suite *(*)(int, char **)>>>>' requested here
              this->assign_to(f);
                    ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:1086:5: note: in instantiation of function template specialization 'boost::function0<void>::function0<boost::_bi::bind_t<void, void (*)(boost::unit_test::test_suite *(*)(int, char **)), boost::_bi::list1<boost::_bi::value<boost::unit_test::test_suite *(*)(int, char **)>>>>' requested here
            base_type(f)
            ^
        /opt/homebrew/opt/boost@1.76/include/boost/test/impl/framework.ipp:1208:42: note: in instantiation of function template specialization 'boost::function<void ()>::function<boost::_bi::bind_t<void, void (*)(boost::unit_test::test_suite *(*)(int, char **)), boost::_bi::list1<boost::_bi::value<boost::unit_test::test_suite *(*)(int, char **)>>>>' requested here
                s_frk_state().m_aux_em.vexecute( boost::bind( &impl::invoke_init_func, init_func ) );
                                                 ^
        In file included from /Users/runner/work/bitcoin/bitcoin/build/CMakeFiles/CMakeScratch/TryCompile-HFA5St/CheckIncludeFile.cxx:1:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/included/unit_test.hpp:18:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/impl/compiler_log_formatter.ipp:22:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/execution_monitor.hpp:28:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function0.hpp:11:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/maybe_include.hpp:15:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:13:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/prologue.hpp:17:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_base.hpp:22:
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/has_trivial_copy.hpp:34:4: warning: builtin __has_trivial_copy is deprecated; use __is_trivially_copyable instead [-Wdeprecated-builtins]
           BOOST_HAS_TRIVIAL_COPY(T) BOOST_TT_TRIVIAL_CONSTRUCT_FIX
           ^
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/intrinsics.hpp:190:41: note: expanded from macro 'BOOST_HAS_TRIVIAL_COPY'
        #     define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T) && !is_reference<T>::value)
                                                ^
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/has_trivial_copy.hpp:57:65: note: in instantiation of template class 'boost::has_trivial_copy<boost::_bi::bind_t<void, boost::_mfi::mf2<void, boost::unit_test::test_observer, unsigned long, unsigned long>, boost::_bi::list3<boost::_bi::value<boost::unit_test::test_observer *>, boost::_bi::value<boost::unit_test::test_case_counter::readonly_property43>, boost::_bi::value<unsigned long>>>>' requested here
        template <class T> struct has_trivial_copy_constructor : public has_trivial_copy<T>{};
                                                                        ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:945:20: note: in instantiation of template class 'boost::has_trivial_copy_constructor<boost::_bi::bind_t<void, boost::_mfi::mf2<void, boost::unit_test::test_observer, unsigned long, unsigned long>, boost::_bi::list3<boost::_bi::value<boost::unit_test::test_observer *>, boost::_bi::value<boost::unit_test::test_case_counter::readonly_property43>, boost::_bi::value<unsigned long>>>>' requested here
                if (boost::has_trivial_copy_constructor<Functor>::value &&
                           ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:720:13: note: in instantiation of function template specialization 'boost::function0<void>::assign_to<boost::_bi::bind_t<void, boost::_mfi::mf2<void, boost::unit_test::test_observer, unsigned long, unsigned long>, boost::_bi::list3<boost::_bi::value<boost::unit_test::test_observer *>, boost::_bi::value<boost::unit_test::test_case_counter::readonly_property43>, boost::_bi::value<unsigned long>>>>' requested here
              this->assign_to(f);
                    ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:1086:5: note: in instantiation of function template specialization 'boost::function0<void>::function0<boost::_bi::bind_t<void, boost::_mfi::mf2<void, boost::unit_test::test_observer, unsigned long, unsigned long>, boost::_bi::list3<boost::_bi::value<boost::unit_test::test_observer *>, boost::_bi::value<boost::unit_test::test_case_counter::readonly_property43>, boost::_bi::value<unsigned long>>>>' requested here
            base_type(f)
            ^
        /opt/homebrew/opt/boost@1.76/include/boost/test/impl/framework.ipp:1666:100: note: in instantiation of function template specialization 'boost::function<void ()>::function<boost::_bi::bind_t<void, boost::_mfi::mf2<void, boost::unit_test::test_observer, unsigned long, unsigned long>, boost::_bi::list3<boost::_bi::value<boost::unit_test::test_observer *>, boost::_bi::value<boost::unit_test::test_case_counter::readonly_property43>, boost::_bi::value<unsigned long>>>>' requested here
                        unit_test_monitor_t::error_level result = unit_test_monitor.execute_and_translate( boost::bind( &test_observer::test_start, to, tcc.p_count, id ) );
                                                                                                           ^
        In file included from /Users/runner/work/bitcoin/bitcoin/build/CMakeFiles/CMakeScratch/TryCompile-HFA5St/CheckIncludeFile.cxx:1:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/included/unit_test.hpp:18:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/impl/compiler_log_formatter.ipp:22:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/execution_monitor.hpp:28:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function0.hpp:11:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/maybe_include.hpp:15:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:13:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/prologue.hpp:17:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_base.hpp:23:
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/has_trivial_destructor.hpp:30:86: warning: builtin __has_trivial_destructor is deprecated; use __is_trivially_destructible instead [-Wdeprecated-builtins]
        template <typename T> struct has_trivial_destructor : public integral_constant<bool, BOOST_HAS_TRIVIAL_DESTRUCTOR(T)>{};
                                                                                             ^
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/intrinsics.hpp:196:47: note: expanded from macro 'BOOST_HAS_TRIVIAL_DESTRUCTOR'
        #     define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T)  && is_destructible<T>::value)
                                                      ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:946:20: note: in instantiation of template class 'boost::has_trivial_destructor<boost::_bi::bind_t<void, boost::_mfi::mf2<void, boost::unit_test::test_observer, unsigned long, unsigned long>, boost::_bi::list3<boost::_bi::value<boost::unit_test::test_observer *>, boost::_bi::value<boost::unit_test::test_case_counter::readonly_property43>, boost::_bi::value<unsigned long>>>>' requested here
                    boost::has_trivial_destructor<Functor>::value &&
                           ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:720:13: note: in instantiation of function template specialization 'boost::function0<void>::assign_to<boost::_bi::bind_t<void, boost::_mfi::mf2<void, boost::unit_test::test_observer, unsigned long, unsigned long>, boost::_bi::list3<boost::_bi::value<boost::unit_test::test_observer *>, boost::_bi::value<boost::unit_test::test_case_counter::readonly_property43>, boost::_bi::value<unsigned long>>>>' requested here
              this->assign_to(f);
                    ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:1086:5: note: in instantiation of function template specialization 'boost::function0<void>::function0<boost::_bi::bind_t<void, boost::_mfi::mf2<void, boost::unit_test::test_observer, unsigned long, unsigned long>, boost::_bi::list3<boost::_bi::value<boost::unit_test::test_observer *>, boost::_bi::value<boost::unit_test::test_case_counter::readonly_property43>, boost::_bi::value<unsigned long>>>>' requested here
            base_type(f)
            ^
        /opt/homebrew/opt/boost@1.76/include/boost/test/impl/framework.ipp:1666:100: note: in instantiation of function template specialization 'boost::function<void ()>::function<boost::_bi::bind_t<void, boost::_mfi::mf2<void, boost::unit_test::test_observer, unsigned long, unsigned long>, boost::_bi::list3<boost::_bi::value<boost::unit_test::test_observer *>, boost::_bi::value<boost::unit_test::test_case_counter::readonly_property43>, boost::_bi::value<unsigned long>>>>' requested here
                        unit_test_monitor_t::error_level result = unit_test_monitor.execute_and_translate( boost::bind( &test_observer::test_start, to, tcc.p_count, id ) );
                                                                                                           ^
        In file included from /Users/runner/work/bitcoin/bitcoin/build/CMakeFiles/CMakeScratch/TryCompile-HFA5St/CheckIncludeFile.cxx:1:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/included/unit_test.hpp:18:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/impl/compiler_log_formatter.ipp:22:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/execution_monitor.hpp:28:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function0.hpp:11:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/maybe_include.hpp:15:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:13:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/prologue.hpp:17:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_base.hpp:22:
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/has_trivial_copy.hpp:34:4: warning: builtin __has_trivial_copy is deprecated; use __is_trivially_copyable instead [-Wdeprecated-builtins]
           BOOST_HAS_TRIVIAL_COPY(T) BOOST_TT_TRIVIAL_CONSTRUCT_FIX
           ^
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/intrinsics.hpp:190:41: note: expanded from macro 'BOOST_HAS_TRIVIAL_COPY'
        #     define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T) && !is_reference<T>::value)
                                                ^
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/has_trivial_copy.hpp:57:65: note: in instantiation of template class 'boost::has_trivial_copy<boost::detail::forward>' requested here
        template <class T> struct has_trivial_copy_constructor : public has_trivial_copy<T>{};
                                                                        ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:945:20: note: in instantiation of template class 'boost::has_trivial_copy_constructor<boost::detail::forward>' requested here
                if (boost::has_trivial_copy_constructor<Functor>::value &&
                           ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:720:13: note: in instantiation of function template specialization 'boost::function0<int>::assign_to<boost::detail::forward>' requested here
              this->assign_to(f);
                    ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:1086:5: note: in instantiation of function template specialization 'boost::function0<int>::function0<boost::detail::forward>' requested here
            base_type(f)
            ^
        /opt/homebrew/opt/boost@1.76/include/boost/test/impl/execution_monitor.ipp:1397:14: note: in instantiation of function template specialization 'boost::function<int ()>::function<boost::detail::forward>' requested here
            execute( detail::forward( F ) );
                     ^
        In file included from /Users/runner/work/bitcoin/bitcoin/build/CMakeFiles/CMakeScratch/TryCompile-HFA5St/CheckIncludeFile.cxx:1:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/included/unit_test.hpp:18:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/impl/compiler_log_formatter.ipp:22:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/execution_monitor.hpp:28:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function0.hpp:11:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/maybe_include.hpp:15:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:13:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/prologue.hpp:17:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_base.hpp:23:
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/has_trivial_destructor.hpp:30:86: warning: builtin __has_trivial_destructor is deprecated; use __is_trivially_destructible instead [-Wdeprecated-builtins]
        template <typename T> struct has_trivial_destructor : public integral_constant<bool, BOOST_HAS_TRIVIAL_DESTRUCTOR(T)>{};
                                                                                             ^
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/intrinsics.hpp:196:47: note: expanded from macro 'BOOST_HAS_TRIVIAL_DESTRUCTOR'
        #     define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T)  && is_destructible<T>::value)
                                                      ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:946:20: note: in instantiation of template class 'boost::has_trivial_destructor<boost::detail::forward>' requested here
                    boost::has_trivial_destructor<Functor>::value &&
                           ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:720:13: note: in instantiation of function template specialization 'boost::function0<int>::assign_to<boost::detail::forward>' requested here
              this->assign_to(f);
                    ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:1086:5: note: in instantiation of function template specialization 'boost::function0<int>::function0<boost::detail::forward>' requested here
            base_type(f)
            ^
        /opt/homebrew/opt/boost@1.76/include/boost/test/impl/execution_monitor.ipp:1397:14: note: in instantiation of function template specialization 'boost::function<int ()>::function<boost::detail::forward>' requested here
            execute( detail::forward( F ) );
                     ^
        In file included from /Users/runner/work/bitcoin/bitcoin/build/CMakeFiles/CMakeScratch/TryCompile-HFA5St/CheckIncludeFile.cxx:1:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/included/unit_test.hpp:18:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/impl/compiler_log_formatter.ipp:22:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/execution_monitor.hpp:28:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function0.hpp:11:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/maybe_include.hpp:15:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:13:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/prologue.hpp:17:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_base.hpp:22:
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/has_trivial_copy.hpp:34:4: warning: builtin __has_trivial_copy is deprecated; use __is_trivially_copyable instead [-Wdeprecated-builtins]
           BOOST_HAS_TRIVIAL_COPY(T) BOOST_TT_TRIVIAL_CONSTRUCT_FIX
           ^
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/intrinsics.hpp:190:41: note: expanded from macro 'BOOST_HAS_TRIVIAL_COPY'
        #     define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T) && !is_reference<T>::value)
                                                ^
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/has_trivial_copy.hpp:57:65: note: in instantiation of template class 'boost::has_trivial_copy<(lambda at /opt/homebrew/opt/boost@1.76/include/boost/test/impl/unit_test_parameters.ipp:133:24)>' requested here
        template <class T> struct has_trivial_copy_constructor : public has_trivial_copy<T>{};
                                                                        ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:945:20: note: in instantiation of template class 'boost::has_trivial_copy_constructor<(lambda at /opt/homebrew/opt/boost@1.76/include/boost/test/impl/unit_test_parameters.ipp:133:24)>' requested here
                if (boost::has_trivial_copy_constructor<Functor>::value &&
                           ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:720:13: note: in instantiation of function template specialization 'boost::function1<void, boost::unit_test::basic_cstring<const char>>::assign_to<(lambda at /opt/homebrew/opt/boost@1.76/include/boost/test/impl/unit_test_parameters.ipp:133:24)>' requested here
              this->assign_to(f);
                    ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:1086:5: note: in instantiation of function template specialization 'boost::function1<void, boost::unit_test::basic_cstring<const char>>::function1<(lambda at /opt/homebrew/opt/boost@1.76/include/boost/test/impl/unit_test_parameters.ipp:133:24)>' requested here
            base_type(f)
            ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:1139:5: note: in instantiation of function template specialization 'boost::function<void (boost::unit_test::basic_cstring<const char>)>::function<(lambda at /opt/homebrew/opt/boost@1.76/include/boost/test/impl/unit_test_parameters.ipp:133:24)>' requested here
            self_type(f).swap(*this);
            ^
        /opt/homebrew/opt/boost@1.76/include/boost/test/utils/assign_op.hpp:30:7: note: (skipping 1 context in backtrace; use -ftemplate-backtrace-limit=0 to see all)
            t = s;
              ^
        /opt/homebrew/opt/boost@1.76/include/boost/test/utils/named_params.hpp:346:5: note: in instantiation of function template specialization 'boost::unit_test::assign_op<boost::function<void (boost::unit_test::basic_cstring<const char>)>, (lambda at /opt/homebrew/opt/boost@1.76/include/boost/test/impl/unit_test_parameters.ipp:133:24)>' requested here
            assign_op( target, p[k], static_cast<int>(0) );
            ^
        /opt/homebrew/opt/boost@1.76/include/boost/test/utils/named_params.hpp:357:5: note: in instantiation of function template specialization 'boost::nfp::opt_assign<boost::function<void (boost::unit_test::basic_cstring<const char>)>, boost::nfp::named_parameter_combine<boost::nfp::named_parameter<const (lambda at /opt/homebrew/opt/boost@1.76/include/boost/test/impl/unit_test_parameters.ipp:133:24), boost::runtime::(anonymous namespace)::callback_t>, boost::nfp::named_parameter_combine<boost::nfp::named_parameter<const boost::unit_test::basic_cstring<const char>, boost::runtime::(anonymous namespace)::env_var_t>, boost::nfp::named_parameter<const boost::unit_test::basic_cstring<const char>, boost::runtime::(anonymous namespace)::description_t>>>, boost::nfp::keyword<boost::runtime::(anonymous namespace)::callback_t>>' requested here
            opt_assign( default_val, p, k );
            ^
        /opt/homebrew/opt/boost@1.76/include/boost/test/utils/runtime/parameter.hpp:145:24: note: in instantiation of function template specialization 'boost::nfp::opt_get<boost::function<void (boost::unit_test::basic_cstring<const char>)>, boost::nfp::named_parameter_combine<boost::nfp::named_parameter<const (lambda at /opt/homebrew/opt/boost@1.76/include/boost/test/impl/unit_test_parameters.ipp:133:24), boost::runtime::(anonymous namespace)::callback_t>, boost::nfp::named_parameter_combine<boost::nfp::named_parameter<const boost::unit_test::basic_cstring<const char>, boost::runtime::(anonymous namespace)::env_var_t>, boost::nfp::named_parameter<const boost::unit_test::basic_cstring<const char>, boost::runtime::(anonymous namespace)::description_t>>>, boost::nfp::keyword<boost::runtime::(anonymous namespace)::callback_t>>' requested here
            , p_callback( nfp::opt_get( m, callback, callback_type() ) )
                               ^
        /opt/homebrew/opt/boost@1.76/include/boost/test/utils/runtime/parameter.hpp:312:7: note: in instantiation of function template specialization 'boost::runtime::basic_param::basic_param<boost::nfp::named_parameter_combine<boost::nfp::named_parameter<const (lambda at /opt/homebrew/opt/boost@1.76/include/boost/test/impl/unit_test_parameters.ipp:133:24), boost::runtime::(anonymous namespace)::callback_t>, boost::nfp::named_parameter_combine<boost::nfp::named_parameter<const boost::unit_test::basic_cstring<const char>, boost::runtime::(anonymous namespace)::env_var_t>, boost::nfp::named_parameter<const boost::unit_test::basic_cstring<const char>, boost::runtime::(anonymous namespace)::description_t>>>>' requested here
            : basic_param( name, a != runtime::REQUIRED_PARAM, a == runtime::REPEATABLE_PARAM, m )
              ^
        /opt/homebrew/opt/boost@1.76/include/boost/test/impl/unit_test_parameters.ipp:128:32: note: in instantiation of function template specialization 'boost::runtime::parameter<std::string>::parameter<boost::nfp::named_parameter_combine<boost::nfp::named_parameter<const (lambda at /opt/homebrew/opt/boost@1.76/include/boost/test/impl/unit_test_parameters.ipp:133:24), boost::runtime::(anonymous namespace)::callback_t>, boost::nfp::named_parameter_combine<boost::nfp::named_parameter<const boost::unit_test::basic_cstring<const char>, boost::runtime::(anonymous namespace)::env_var_t>, boost::nfp::named_parameter<const boost::unit_test::basic_cstring<const char>, boost::runtime::(anonymous namespace)::description_t>>>>' requested here
            rt::parameter<std::string> break_exec_path( btrt_break_exec_path, (
                                       ^
        In file included from /Users/runner/work/bitcoin/bitcoin/build/CMakeFiles/CMakeScratch/TryCompile-HFA5St/CheckIncludeFile.cxx:1:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/included/unit_test.hpp:18:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/impl/compiler_log_formatter.ipp:22:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/test/execution_monitor.hpp:28:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function0.hpp:11:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/maybe_include.hpp:15:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:13:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/detail/prologue.hpp:17:
        In file included from /opt/homebrew/opt/boost@1.76/include/boost/function/function_base.hpp:23:
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/has_trivial_destructor.hpp:30:86: warning: builtin __has_trivial_destructor is deprecated; use __is_trivially_destructible instead [-Wdeprecated-builtins]
        template <typename T> struct has_trivial_destructor : public integral_constant<bool, BOOST_HAS_TRIVIAL_DESTRUCTOR(T)>{};
                                                                                             ^
        /opt/homebrew/opt/boost@1.76/include/boost/type_traits/intrinsics.hpp:196:47: note: expanded from macro 'BOOST_HAS_TRIVIAL_DESTRUCTOR'
        #     define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T)  && is_destructible<T>::value)
                                                      ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:946:20: note: in instantiation of template class 'boost::has_trivial_destructor<(lambda at /opt/homebrew/opt/boost@1.76/include/boost/test/impl/unit_test_parameters.ipp:133:24)>' requested here
                    boost::has_trivial_destructor<Functor>::value &&
                           ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:720:13: note: in instantiation of function template specialization 'boost::function1<void, boost::unit_test::basic_cstring<const char>>::assign_to<(lambda at /opt/homebrew/opt/boost@1.76/include/boost/test/impl/unit_test_parameters.ipp:133:24)>' requested here
              this->assign_to(f);
                    ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:1086:5: note: in instantiation of function template specialization 'boost::function1<void, boost::unit_test::basic_cstring<const char>>::function1<(lambda at /opt/homebrew/opt/boost@1.76/include/boost/test/impl/unit_test_parameters.ipp:133:24)>' requested here
            base_type(f)
            ^
        /opt/homebrew/opt/boost@1.76/include/boost/function/function_template.hpp:1139:5: note: in instantiation of function template specialization 'boost::function<void (boost::unit_test::basic_cstring<const char>)>::function<(lambda at /opt/homebrew/opt/boost@1.76/include/boost/test/impl/unit_test_parameters.ipp:133:24)>' requested here
            self_type(f).swap(*this);
            ^
        /opt/homebrew/opt/boost@1.76/include/boost/test/utils/assign_op.hpp:30:7: note: in instantiation of function template specialization 'boost::function<void (boost::unit_test::basic_cstring<const char>)>::operator=<(lambda at /opt/homebrew/opt/boost@1.76/include/boost/test/impl/unit_test_parameters.ipp:133:24)>' requested here
            t = s;
              ^
        /opt/homebrew/opt/boost@1.76/include/boost/test/utils/named_params.hpp:346:5: note: in instantiation of function template specialization 'boost::unit_test::assign_op<boost::function<void (boost::unit_test::basic_cstring<const char>)>, (lambda at /opt/homebrew/opt/boost@1.76/include/boost/test/impl/unit_test_parameters.ipp:133:24)>' requested here
            assign_op( target, p[k], static_cast<int>(0) );
            ^
        /opt/homebrew/opt/boost@1.76/include/boost/test/utils/named_params.hpp:357:5: note: in instantiation of function template specialization 'boost::nfp::opt_assign<boost::function<void (boost::unit_test::basic_cstring<const char>)>, boost::nfp::named_parameter_combine<boost::nfp::named_parameter<const (lambda at /opt/homebrew/opt/boost@1.76/include/boost/test/impl/unit_test_parameters.ipp:133:24), boost::runtime::(anonymous namespace)::callback_t>, boost::nfp::named_parameter_combine<boost::nfp::named_parameter<const boost::unit_test::basic_cstring<const char>, boost::runtime::(anonymous namespace)::env_var_t>, boost::nfp::named_parameter<const boost::unit_test::basic_cstring<const char>, boost::runtime::(anonymous namespace)::description_t>>>, boost::nfp::keyword<boost::runtime::(anonymous namespace)::callback_t>>' requested here
            opt_assign( default_val, p, k );
            ^
        /opt/homebrew/opt/boost@1.76/include/boost/test/utils/runtime/parameter.hpp:145:24: note: in instantiation of function template specialization 'boost::nfp::opt_get<boost::function<void (boost::unit_test::basic_cstring<const char>)>, boost::nfp::named_parameter_combine<boost::nfp::named_parameter<const (lambda at /opt/homebrew/opt/boost@1.76/include/boost/test/impl/unit_test_parameters.ipp:133:24), boost::runtime::(anonymous namespace)::callback_t>, boost::nfp::named_parameter_combine<boost::nfp::named_parameter<const boost::unit_test::basic_cstring<const char>, boost::runtime::(anonymous namespace)::env_var_t>, boost::nfp::named_parameter<const boost::unit_test::basic_cstring<const char>, boost::runtime::(anonymous namespace)::description_t>>>, boost::nfp::keyword<boost::runtime::(anonymous namespace)::callback_t>>' requested here
            , p_callback( nfp::opt_get( m, callback, callback_type() ) )
                               ^
        /opt/homebrew/opt/boost@1.76/include/boost/test/utils/runtime/parameter.hpp:312:7: note: in instantiation of function template specialization 'boost::runtime::basic_param::basic_param<boost::nfp::named_parameter_combine<boost::nfp::named_parameter<const (lambda at /opt/homebrew/opt/boost@1.76/include/boost/test/impl/unit_test_parameters.ipp:133:24), boost::runtime::(anonymous namespace)::callback_t>, boost::nfp::named_parameter_combine<boost::nfp::named_parameter<const boost::unit_test::basic_cstring<const char>, boost::runtime::(anonymous namespace)::env_var_t>, boost::nfp::named_parameter<const boost::unit_test::basic_cstring<const char>, boost::runtime::(anonymous namespace)::description_t>>>>' requested here
            : basic_param( name, a != runtime::REQUIRED_PARAM, a == runtime::REPEATABLE_PARAM, m )
              ^
        /opt/homebrew/opt/boost@1.76/include/boost/test/impl/unit_test_parameters.ipp:128:32: note: in instantiation of function template specialization 'boost::runtime::parameter<std::string>::parameter<boost::nfp::named_parameter_combine<boost::nfp::named_parameter<const (lambda at /opt/homebrew/opt/boost@1.76/include/boost/test/impl/unit_test_parameters.ipp:133:24), boost::runtime::(anonymous namespace)::callback_t>, boost::nfp::named_parameter_combine<boost::nfp::named_parameter<const boost::unit_test::basic_cstring<const char>, boost::runtime::(anonymous namespace)::env_var_t>, boost::nfp::named_parameter<const boost::unit_test::basic_cstring<const char>, boost::runtime::(anonymous namespace)::description_t>>>>' requested here
            rt::parameter<std::string> break_exec_path( btrt_break_exec_path, (
                                       ^
        20 warnings and 1 error generated.
        make[1]: *** [CMakeFiles/cmTC_2e48b.dir/CheckIncludeFile.cxx.o] Error 1
        make: *** [cmTC_2e48b/fast] Error 2
        
      exitCode: 2

Pass `-DBOOST_NO_CXX98_FUNCTION_BASE` to the header check only when
applicable.

We have to pass it if accepted; otherwise, the test header check may
fail on some systems, such as macOS arm64 + Homebrew's boost@1.76.
@hebasto
Copy link
Owner Author

hebasto commented Aug 10, 2024

Rebased.

Copy link

@TheCharlatan TheCharlatan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't get what is actually broken and was not able to reproduce this on x86 macos and boost 1.84, but the patch makes sense to me outside of fixing an actual build failure.

@fanquake
Copy link

@TheCharlatan if you do a build with cmake-staging (ad73445) on macOS with CXXFLAGS="-Werror", the build should fail:

-- Found Boost: /opt/homebrew/include (found suitable version "1.85.0", minimum required is "1.73.0")
-- Performing Test NO_DIAGNOSTICS_BOOST_NO_CXX98_FUNCTION_BASE
-- Performing Test NO_DIAGNOSTICS_BOOST_NO_CXX98_FUNCTION_BASE - Failed
-- Looking for C++ include boost/test/included/unit_test.hpp
-- Looking for C++ include boost/test/included/unit_test.hpp - not found
CMake Error at cmake/module/AddBoostIfNeeded.cmake:72 (message):
  Building test_bitcoin executable requested but
  boost/test/included/unit_test.hpp header not available.
Call Stack (most recent call first):
  CMakeLists.txt:410 (add_boost_if_needed)

@TheCharlatan
Copy link

@TheCharlatan if you do a build with cmake-staging (ad73445) on macOS with CXXFLAGS="-Werror", the build should fail:

Ah, thanks, I see the failure now on macos and it passing with this patch.

@hebasto hebasto merged commit 7c23041 into cmake-staging Aug 13, 2024
40 checks passed
@vasild
Copy link

vasild commented Aug 13, 2024

Warnings from system headers are suppressed by both clang and gcc. That is, /usr/include is treated as given to -isystem, not -I. However in the above logs, Boost is installed in /opt/homebrew/opt/boost@1.76/include/. I doubt the compilers are aware or treat that as a system include directory.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants