boost icon indicating copy to clipboard operation
boost copied to clipboard

./bootstrap.sh --show-libraries output broken in 1.89.0

Open heinemml opened this issue 4 months ago • 5 comments

The output of ./bootstrap.sh --show-libraries changed with boost 1.89.0. I didn't find any info in the release notes that header only libraries are now also listed. Is this a feature? can they now be selected separately?

But also all the detected compiler features are listed. I assume this is an error?

❯ ./bootstrap.sh --show-libraries                                                                                                                                                        ─╯
Building B2 engine..                                                                                                                                                                        
###
###
### Using 'gcc' toolset.
###
###

g++ (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


###
###

> g++ -x c++ -std=c++11 -pthread -O2 -s -DNDEBUG bindjam.cpp builtins.cpp class.cpp command.cpp compile.cpp constants.cpp cwd.cpp debug.cpp debugger.cpp events.cpp execcmd.cpp execnt.cpp execunix.cpp filent.cpp filesys.cpp fileunix.cpp frames.cpp function.cpp glob.cpp hash.cpp hcache.cpp hdrmacro.cpp headers.cpp jam_strings.cpp jam.cpp jamgram.cpp lists.cpp make.cpp make1.cpp md5.cpp mem.cpp modules.cpp native.cpp output.cpp parse.cpp pathnt.cpp pathsys.cpp pathunix.cpp regexp.cpp rules.cpp scan.cpp search.cpp startup.cpp tasks.cpp timestamp.cpp value.cpp variable.cpp w32_getreg.cpp mod_args.cpp mod_command_db.cpp mod_db.cpp mod_jam_builtin.cpp mod_jam_class.cpp mod_jam_errors.cpp mod_jam_modules.cpp mod_order.cpp mod_path.cpp mod_property_set.cpp mod_regex.cpp mod_sequence.cpp mod_set.cpp mod_string.cpp mod_summary.cpp mod_sysinfo.cpp mod_version.cpp -o b2

The following Boost libraries have portions that require a separate build
and installation step. Any library not listed here can be used by including
the headers only.

The Boost libraries requiring separate building and installation are:
    - default address-model    : 64-bit [1]
    - default architecture     : x86 [1]
    - std_wstreambuf builds    : yes [2]
    - std_wstreambuf           : yes [2]
    - BOOST_COMP_GNUC >= 4.3.0 : yes [2]
    - BOOST_COMP_GNUC >= 4.3.0 : yes [3]
    - cxx11_constexpr          : yes [2]
    - cxx11_variadic_templates : yes [2]
    - cxx11_rvalue_references  : yes [2]
    - cxx11_hdr_thread         : yes [2]
    - cxx11_hdr_mutex          : yes [2]
    - cxx11_hdr_regex          : yes [2]
    - has std::atomic_ref      : no [2]
    - has -Wl,--no-undefined   : yes [2]
    - has statx                : yes [2]
    - cxx11_scoped_enums       : yes [2]
    - cxx11_noexcept           : yes [2]
    - cxx11_nullptr            : yes [2]
    - cxx11_defaulted_functions : yes [2]
    - cxx11_defaulted_moves    : yes [2]
    - cxx11_deleted_functions  : yes [2]
    - cxx11_function_template_default_args : yes [2]
    - cxx11_unified_initialization_syntax : yes [2]
    - cxx11_final              : yes [2]
    - cxx11_override           : yes [2]
    - has init_priority attribute : yes [2]
    - has stat::st_blksize     : yes [2]
    - has stat::st_mtim        : yes [2]
    - has stat::st_mtimensec   : no [2]
    - has stat::st_mtimespec   : no [2]
    - has stat::st_birthtim    : no [2]
    - has stat::st_birthtimensec : no [2]
    - has stat::st_birthtimespec : no [2]
    - has fdopendir(O_NOFOLLOW) : yes [2]
    - has dirent::d_type       : yes [2]
    - has POSIX *at APIs       : yes [2]
    - has fallocate            : yes [2]
    - has pthread_cond_clockwait : yes [2]
    - compiler supports SSE2   : yes [2]
    - compiler supports SSE4.1 : yes [2]
    - cxx11_decltype           : yes [2]
    - cxx11_decltype_n3276     : yes [2]
    - cxx11_template_aliases   : yes [2]
    - cxx11_static_assert      : yes [2]
    - cxx11_hdr_ratio          : yes [2]
    - cxx11_hdr_chrono         : yes [2]
    - has unions with non-trivial members : yes [2]
    - has <type_traits> sufficient for Boost.Atomic : yes [2]
    - exceptions               : yes [2]
    - sfinae_expr              : yes [2]
    - has <type_traits> sufficient for Boost.Scope : yes [2]
    - has_icu builds           : yes [2]
    - lockfree boost::atomic_flag : yes [2]
    - cxx11_char16_t           : yes [2]
    - cxx11_char32_t           : yes [2]
    - cxx11_hdr_tuple          : yes [2]
    - boost.stacktrace.addr2line : yes [2]
    - cxx11_rvalue_references  : yes [3]
    - boost.stacktrace.backtrace : yes [2]
    - boost.stacktrace.basic   : no [2]
    - boost.stacktrace.from_exception : yes
    - boost.stacktrace.from_exception : yes
    - boost.stacktrace.windbg  : no [2]
    - boost.stacktrace.windbg  : no [4]
    - boost.stacktrace.windbg_cached : no [2]
    - boost.stacktrace.windbg_cached : no [4]
    - cxx11_auto_declarations  : yes [2]
    - cxx11_lambdas            : yes [2]
    - cxx11_hdr_initializer_list : yes [2]
    - cxx11_numeric_limits     : yes [2]
    - cxx11_hdr_array          : yes [2]
    - cxx11_hdr_type_traits    : yes [2]
    - cxx11_explicit_conversion_operators : yes [2]
    - BOOST_ARCH_WORD_BITS == 0.0.16 : no [5]    
    - BOOST_ARCH_WORD_BITS == 0.0.32 : no [5]
    - BOOST_ARCH_WORD_BITS == 0.0.64 : yes [5]
    - BOOST_ARCH_X86           : yes [5]
    - BOOST_ARCH_IA64          : no [5]
    - BOOST_ARCH_SPARC         : no [5]
    - BOOST_ARCH_LOONGARCH     : no [5]
    - BOOST_ARCH_MIPS          : no [5]
    - BOOST_ARCH_PARISC        : no [5]
    - BOOST_ARCH_ARM           : no [5]
    - BOOST_ARCH_RISCV         : no [5]
    - BOOST_ARCH_PPC           : no [5]
    - BOOST_ARCH_SYS390        : no [5]
    - has std::atomic_ref      : no [5]
    - has -Wl,--no-undefined   : yes [5]
    - has statx                : yes [5]
    - cxx11_rvalue_references  : yes [5]
    - cxx11_scoped_enums       : yes [5]
    - cxx11_noexcept           : yes [5]
    - cxx11_nullptr            : yes [5]
    - cxx11_defaulted_functions : yes [5]
    - cxx11_defaulted_moves    : yes [5]
    - cxx11_deleted_functions  : yes [5]
    - cxx11_function_template_default_args : yes [5]
    - cxx11_unified_initialization_syntax : yes [5]
    - cxx11_final              : yes [5]
    - cxx11_override           : yes [5]
    - has init_priority attribute : yes [5]
    - has stat::st_blksize     : yes [5]
    - has stat::st_mtim        : yes [5]
    - has stat::st_mtimensec   : no [5]
    - has stat::st_mtimespec   : no [5]
    - has stat::st_birthtim    : no [5]
    - has stat::st_birthtimensec : no [5]
    - has stat::st_birthtimespec : no [5]
    - has fdopendir(O_NOFOLLOW) : yes [5]
    - has dirent::d_type       : yes [5]
    - has POSIX *at APIs       : yes [5]
    - has fallocate            : yes [5]
    - has pthread_cond_clockwait : yes [5]
    - compiler supports SSE2   : yes [5]
    - compiler supports SSE4.1 : yes [5]
    - cxx11_constexpr          : yes [5]
    - cxx11_decltype           : yes [5]
    - cxx11_decltype_n3276     : yes [5]
    - cxx11_template_aliases   : yes [5]
    - cxx11_static_assert      : yes [5]
    - cxx11_hdr_ratio          : yes [5]
    - cxx11_hdr_chrono         : yes [5]
    - has unions with non-trivial members : yes [5]
    - has <type_traits> sufficient for Boost.Atomic : yes [5]
    - exceptions               : yes [5]
    - sfinae_expr              : yes [5]
    - cxx11_variadic_templates : yes [5]
    - has <type_traits> sufficient for Boost.Scope : yes [5]
    - cxx11_auto_declarations  : yes [6]
    - cxx11_char16_t           : yes [6]
    - cxx11_char32_t           : yes [6]
    - cxx11_constexpr          : yes [6]
    - cxx11_decltype           : yes [6]
    - cxx11_defaulted_functions : yes [6]
    - cxx11_noexcept           : yes [6]
    - cxx11_nullptr            : yes [6]
    - cxx11_override           : yes [6]
    - cxx11_rvalue_references  : yes [6]
    - cxx11_static_assert      : yes [6]
    - cxx11_template_aliases   : yes [6]
    - cxx11_variadic_templates : yes [6]
    - Has Large File Support   : yes [6]
    - Has attribute init_priority : yes [6]
    - sfinae_expr              : yes [6]
    - cxx11_lambdas            : yes [6]
    - cxx11_unified_initialization_syntax : yes [6]
    - cxx11_hdr_tuple          : yes [6]
    - cxx11_hdr_initializer_list : yes [6]
    - cxx11_numeric_limits     : yes [6]
    - cxx11_hdr_array          : yes [6]
    - cxx11_hdr_type_traits    : yes [6]
    - cxx11_explicit_conversion_operators : yes [6]
    - gcc visibility           : yes [6]
    - cxx11_hdr_chrono         : yes [6]
    - cxx11_thread_local       : yes [6]
    - cxx11_hdr_atomic         : yes [6]
    - cxx11_allocator          : yes [6]
    - cxx14_constexpr          : yes [6]
    - cxx14_decltype_auto      : yes [6]
    - cxx14_generic_lambdas    : yes [6]
    - cxx14_return_type_deduction : yes [6]
    - cxx14_variable_templates : yes [6]
    - cxx14_type_traits        : yes [6]
    - long double support      : yes [6]
    - BOOST_ARCH_WORD_BITS == 0.0.16 : no [7]
    - BOOST_ARCH_WORD_BITS == 0.0.32 : no [7]
    - BOOST_ARCH_WORD_BITS == 0.0.64 : yes [7]
    - BOOST_ARCH_X86           : yes [7]
    - BOOST_ARCH_IA64          : no [7]
    - BOOST_ARCH_SPARC         : no [7]        
    - BOOST_ARCH_LOONGARCH     : no [7]
    - BOOST_ARCH_MIPS          : no [7]
    - BOOST_ARCH_PARISC        : no [7]
    - BOOST_ARCH_ARM           : no [7]
    - BOOST_ARCH_RISCV         : no [7]
    - BOOST_ARCH_PPC           : no [7]
    - BOOST_ARCH_SYS390        : no [7]
    - compiler supports SSSE3  : yes [6]
    - compiler supports AVX2   : yes [6]
    - has pthread_cond_clockwait : yes [7]
    - compiler supports SSE2   : yes [7]
    - compiler supports SSE4.1 : yes [7]
    - cxx11_constexpr          : yes [7]
    - cxx11_noexcept           : yes [7]
    - cxx11_nullptr            : yes [7]
    - cxx11_decltype           : yes [7]
    - cxx11_decltype_n3276     : yes [7]
    - cxx11_template_aliases   : yes [7]
    - cxx11_static_assert      : yes [7]
    - cxx11_rvalue_references  : yes [7]
    - cxx11_scoped_enums       : yes [7]
    - cxx11_defaulted_functions : yes [7]
    - cxx11_deleted_functions  : yes [7]
    - cxx11_hdr_ratio          : yes [7]
    - cxx11_hdr_chrono         : yes [7]
    - has unions with non-trivial members : yes [7]
    - has <type_traits> sufficient for Boost.Atomic : yes [7]
    - native atomic int32 supported : yes [6]
    - native syslog supported  : yes [6]
    - pthread supports robust mutexes : yes [6]
    - BOOST_ARCH_WORD_BITS == 0.0.16 : no [6]
    - BOOST_ARCH_WORD_BITS == 0.0.32 : no [6]
    - BOOST_ARCH_WORD_BITS == 0.0.64 : yes [6]
    - BOOST_ARCH_X86           : yes [6]
    - BOOST_ARCH_IA64          : no [6]
    - BOOST_ARCH_SPARC         : no [6]
    - BOOST_ARCH_LOONGARCH     : no [6]
    - BOOST_ARCH_MIPS          : no [6]
    - BOOST_ARCH_PARISC        : no [6]
    - BOOST_ARCH_ARM           : no [6]
    - BOOST_ARCH_RISCV         : no [6]
    - BOOST_ARCH_PPC           : no [6]
    - BOOST_ARCH_SYS390        : no [6]
    - has_icu builds           : yes [7]
    - Boost.Regex is header-only : yes [6]
    - has pthread_cond_clockwait : yes [6]
    - compiler supports SSE2   : yes [6]
    - compiler supports SSE4.1 : yes [6]
    - cxx11_decltype_n3276     : yes [6]
    - cxx11_scoped_enums       : yes [6]
    - cxx11_deleted_functions  : yes [6]
    - cxx11_hdr_ratio          : yes [6]
    - has unions with non-trivial members : yes [6]
    - has <type_traits> sufficient for Boost.Atomic : yes [6]
    - has std::atomic_ref      : no [6]
    - has -Wl,--no-undefined   : yes [6]
    - has statx                : yes [6]
    - cxx11_defaulted_moves    : yes [6]
    - cxx11_function_template_default_args : yes [6]
    - cxx11_final              : yes [6]
    - has init_priority attribute : yes [6]
    - has stat::st_blksize     : yes [6]
    - has stat::st_mtim        : yes [6]
    - has stat::st_mtimensec   : no [6]
    - has stat::st_mtimespec   : no [6]
    - has stat::st_birthtim    : no [6]
    - has stat::st_birthtimensec : no [6]
    - has stat::st_birthtimespec : no [6]
    - has fdopendir(O_NOFOLLOW) : yes [6]
    - has dirent::d_type       : yes [6]
    - has POSIX *at APIs       : yes [6]
    - has fallocate            : yes [6]
    - exceptions               : yes [6]
    - has <type_traits> sufficient for Boost.Scope : yes [6]
    - has_icu builds           : yes [6]
    - lockfree boost::atomic_flag : yes [6]
    - std_wstreambuf builds    : yes [6]
    - GCC libquadmath and __float128 support : yes [6]
    - icu                      : yes [6]
    - iconv (libc)             : yes [6]
    - cxx11_alignas            : yes [6]
    - zlib                     : yes [6]
    - bzip2                    : no [6]
    - lzma                     : no [6]
    - zstd                     : no [6]
    - has_lzma_cputhreads builds : no [9]
    - cxx20_hdr_concepts       : no [9]
    - cxx20_hdr_concepts       : no [10]
    - date_time                : building
    - exception                : building
    - graph                    : building
    - graph_parallel           : building
    - program_options          : building
    - serialization            : building
    - test                     : building
    - yap                      : building
    - winapi                   : building
    - wave                     : building
    - variant2                 : building
    - variant                  : building
    - uuid                     : building
    - utility                  : building
    - url                      : building
    - unordered                : building
    - typeof                   : building
    - type_traits              : building
    - type_index               : building
    - type_erasure             : building
    - tuple                    : building
    - tokenizer                : building
    - timer                    : building
    - throw_exception          : building
    - thread                   : building
    - system                   : building
    - stl_interfaces           : building
    - static_assert            : building
    - stacktrace               : building
    - spirit                   : building
    - sort                     : building
    - smart_ptr                : building
    - signals2                 : building
    - scope                    : building
    - regex                    : building
    - redis                    : building
    - rational                 : building
    - ratio                    : building
    - random                   : building
    - python                   : building
    - ptr_container            : building
    - property_tree            : building
    - property_map             : building
    - process                  : building
    - preprocessor             : building
    - predef                   : building
    - pool                     : building
    - poly_collection          : building
    - pfr                      : building
    - parser                   : building
    - parameter                : building
    - outcome                  : building
    - optional                 : building
    - nowide                   : building
    - mysql                    : building
    - multiprecision           : building
    - multi_index              : building
    - msm                      : building
    - mqtt5                    : building
    - mpl                      : building
    - mpi                      : building
    - mp11                     : building
    - move                     : building
    - metaparse                : building
    - math                     : building
    - logic                    : building
    - log                      : building
    - lockfree                 : building
    - locale                   : building
    - lexical_cast             : building
    - lambda2                  : building
    - lambda                   : building
    - json                     : building
    - iterator                 : building
    - iostreams                : building
    - intrusive                : building
    - interprocess             : building
    - integer                  : building
    - histogram                : building
    - heap                     : building
    - headers                  : building
    - hash2                    : building
    - hana                     : building
    - geometry                 : building
    - function_types           : building
    - function                 : building
    - format                   : building
    - flyweight                : building
    - filesystem               : building
    - fiber                    : building
    - endian                   : building
    - dynamic_bitset           : building
    - dll                      : building
    - detail                   : building
    - describe                 : building
    - crc                      : building
    - coroutine2               : building
    - coroutine                : building
    - core                     : building
    - conversion               : building
    - contract                 : building
    - context                  : building
    - container_hash           : building
    - container                : building
    - config                   : building
    - concept_check            : building
    - compat                   : building
    - cobalt                   : building
    - chrono                   : building
    - charconv                 : building
    - bloom                    : building
    - bind                     : building
    - bimap                    : building
    - beast                    : building
    - atomic                   : building
    - assign                   : building
    - assert                   : building
    - asio                     : building
    - array                    : building
    - any                      : building
    - accumulators             : building

For comparison the output with boost 1.88.0:

❯ ./bootstrap.sh --show-libraries                                                                                                                                                       
Building B2 engine..

###
###
### Using 'gcc' toolset.
###
###

g++ (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


###
###

> g++ -x c++ -std=c++11 -pthread -O2 -s -DNDEBUG bindjam.cpp builtins.cpp class.cpp command.cpp compile.cpp constants.cpp cwd.cpp debug.cpp debugger.cpp events.cpp execcmd.cpp execnt.cpp e
xecunix.cpp filent.cpp filesys.cpp fileunix.cpp frames.cpp function.cpp glob.cpp hash.cpp hcache.cpp hdrmacro.cpp headers.cpp jam_strings.cpp jam.cpp jamgram.cpp lists.cpp make.cpp make1.c
pp md5.cpp mem.cpp modules.cpp native.cpp option.cpp output.cpp parse.cpp pathnt.cpp pathsys.cpp pathunix.cpp regexp.cpp rules.cpp scan.cpp search.cpp startup.cpp tasks.cpp timestamp.cpp v
alue.cpp variable.cpp w32_getreg.cpp mod_command_db.cpp mod_db.cpp mod_jam_builtin.cpp mod_jam_class.cpp mod_jam_errors.cpp mod_jam_modules.cpp mod_order.cpp mod_path.cpp mod_property_set.
cpp mod_regex.cpp mod_sequence.cpp mod_set.cpp mod_string.cpp mod_summary.cpp mod_sysinfo.cpp mod_version.cpp -o b2
tools/build/src/engine/b2

The following Boost libraries have portions that require a separate build
and installation step. Any library not listed here can be used by including
the headers only.

The Boost libraries requiring separate building and installation are:
    - contract
    - date_time
    - exception
    - graph
    - graph_parallel
    - headers
    - log
    - nowide
    - program_options
    - regex
    - serialization
    - test
    - thread
    - type_erasure
    - yap
    - winapi
    - wave
    - variant2
    - variant
    - uuid
    - url
    - unordered
    - type_index
    - tuple
    - tokenizer
    - timer
    - throw_exception
    - system
    - stl_interfaces
    - stacktrace
    - spirit
    - sort
    - smart_ptr
    - signals2
    - scope
    - redis
    - rational
    - ratio
    - random
    - python
    - ptr_container
    - property_map
    - process
    - predef
    - pool
    - poly_collection
    - pfr
    - parameter
    - outcome
    - optional
    - mysql
    - multi_index
    - msm
    - mqtt5
    - mpl
    - mpi
    - mp11
    - move
    - math
    - logic
    - lockfree
    - locale
    - lexical_cast
    - lambda2
    - json
    - iterator
    - iostreams
    - intrusive
    - interprocess
    - integer
    - heap
    - hana
    - geometry
    - function_types
    - function
    - format
    - flyweight
    - filesystem
    - fiber
    - endian
    - dynamic_bitset
    - dll
    - detail
    - describe
    - crc
    - coroutine2
    - coroutine
    - core
    - conversion
    - context
    - container_hash
    - container
    - concept_check
    - compat
    - cobalt
    - chrono
    - charconv
    - bind
    - bimap
    - beast
    - atomic
    - assign
    - assert
    - asio
    - array
    - any

heinemml avatar Sep 02 '25 13:09 heinemml

We also encountered same issue. Its not only about output. --show-libraries now builds all libraries instead of just listing them. I think this is a bug.

airmax123 avatar Nov 04 '25 08:11 airmax123

btw. since 1.87.0 the output already also shows the header-only libraries which doesn't match the description ("The Boost libraries requiring separate building and installation are:").

The "already configure anything" started happening with 1.89.0

heinemml avatar Nov 17 '25 09:11 heinemml

Several of the problems mentioned here will be fixed in bfgroup/b2#475. The remaining one—that header-only libraries are listed as "require building"— requires a change in this project.

grisumbras avatar Nov 25 '25 14:11 grisumbras

I assume you mean https://github.com/bfgroup/b2/pull/475. The one you linkes is for vcpkg.

heinemml avatar Nov 25 '25 17:11 heinemml

Sorry, bad copy-paste

grisumbras avatar Nov 25 '25 17:11 grisumbras