Boost logo

Boost :

Subject: Re: [boost] Builds from boost/status fail early?
From: James E. King III (jking_at_[hidden])
Date: 2018-10-27 21:05:55


On Sat, Oct 27, 2018 at 4:53 PM Steven Watanabe via Boost <
boost_at_[hidden]> wrote:

> AMDG
>
> On 10/27/2018 11:07 AM, James E. King III via Boost wrote:
> > Using develop from this morning (tried various combinations of these
> three
> > options...):
> >
> > boost_at_d48d3305d4b4:/boost/status$ ../b2 toolset=clang variant=release
> > cxxstd=03
> > ...
> > /boost/tools/build/src/build/feature.jam:491: in validate-value-string
> from
> > module feature
> > error: "shared:" is not a known value of feature <link>
> > error: legal values: "shared" "static"
>
> This looks like a conditional gone wrong, but
> I can't reproduce the problem.
>
> Steps to track this down:
> - run the b2 debugger: b2 -dconsole
> - set a breakpoint at errors.error: break errors.error
> - Start the program: run toolset=clang variant=release cxxstd=03
> - Find out which target is the source of the error:
> backtrace
> print [ object(typed-target)@47912.location ]
> (substitute the actual object name that appears on the stack)
>
> > <snip>
> > /boost/tools/build/src/build/targets.jam:1313: in
> > class_at_basic-target.generate from module object(typed-target)@47912
> > /boost/tools/build/src/build/targets.jam:812: in generate-really from
> > module object(main-target)@70272
> > <snip>
> >
>
> In Christ,
> Steven Watanabe
>
>
I find it both amazing and scary that Boost.Build has an interactive
debugger.
In any case, if you use the docker container in the pull request in
boostorg/boost
you would probably be able to reproduce this because it pulls in
dependencies
of many of the repositories. For example the docker container is using
Python 3.6.

(might I suggest aliasing "bt" for "backtrace" in the Boost.Build debugger?)

```
(b2db) backtrace
#0 in errors.error ( "shared:" is not a known value of feature <link> :
legal values: "shared" "static" ) at
/boost/tools/build/src/kernel/errors.jam:149
#1 in validate-value-string ( <link> shared: ) at
/boost/tools/build/src/build/feature.jam:491
#2 in expand-subfeatures-aux ( <link> : shared: : ) at
/boost/tools/build/src/build/feature.jam:365
#3 in expand-subfeatures ( <link>shared: <python.interpreter>python3.6
<deduced-address-model>64 <deduced-architecture>x86 ) at
/boost/tools/build/src/build/feature.jam:422
#4 in feature.expand ( <link>shared: <python.interpreter>python3.6
<deduced-address-model>64 <deduced-architecture>x86 ) at
/boost/tools/build/src/build/feature.jam:871
#5 in evaluate-requirements ( object(property-set)@260675 :
object(property-set)@73308 ) at
/boost/tools/build/src/build/targets.jam:1103
#6 in common-properties2 ( object(property-set)@73308
object(property-set)@260675 ) at
/boost/tools/build/src/build/targets.jam:1121
#7 in targets.common-properties ( object(property-set)@73308
object(property-set)@47911 ) at
/boost/tools/build/src/build/targets.jam:1017
#8 in class_at_basic-target.generate ( object(property-set)@73308 ) at
/boost/tools/build/src/build/targets.jam:1313
#9 in generate-really ( object(property-set)@73308 ) at
/boost/tools/build/src/build/targets.jam:812
#10 in class_at_main-target.generate ( object(property-set)@73156 ) at
/boost/tools/build/src/build/targets.jam:784
#11 in class_at_project-target.generate ( object(property-set)@73156 ) at
/boost/tools/build/src/build/targets.jam:273
#12 in class_at_project-target.generate ( object(property-set)@73156 ) at
/boost/tools/build/src/build/targets.jam:273
#13 in load ( build-system : : /boost/tools/build/src
/usr/share/boost-build /boost/tools/build/src/kernel
/boost/tools/build/src/util /boost/tools/build/src/build
/boost/tools/build/src/tools /boost/tools/build/src/contrib
/boost/tools/build/src ) at /boost/tools/build/src/build-system.jam:797
#14 in import ( build-system ) at
/boost/tools/build/src/kernel/modules.jam:295
#15 in boost-build ( tools/build/src ) at
/boost/tools/build/src/kernel/bootstrap.jam:139
#16 in module scope at /boost/boost-build.jam:17
```

so:
```
(b2db) print [ object(typed-target)@73156.location ]
(builtin):1: in errors.error
ERROR: rule "object(typed-target)@73156.location" unknown in module
"errors".
/boost/tools/build/src/build/feature.jam:491: in validate-value-string
/boost/tools/build/src/build/feature.jam:365: in expand-subfeatures-aux
/boost/tools/build/src/build/feature.jam:422: in expand-subfeatures
/boost/tools/build/src/build/feature.jam:871: in feature.expand
/boost/tools/build/src/build/targets.jam:1103: in evaluate-requirements
/boost/tools/build/src/build/targets.jam:1121: in common-properties2
/boost/tools/build/src/build/targets.jam:1017: in targets.common-properties
/boost/tools/build/src/build/targets.jam:1313: in
class_at_basic-target.generate
/boost/tools/build/src/build/targets.jam:812: in generate-really
/boost/tools/build/src/build/targets.jam:784: in class_at_main-target.generate
/boost/tools/build/src/build/targets.jam:273: in
class_at_project-target.generate
/boost/tools/build/src/build/targets.jam:273: in
class_at_project-target.generate
/boost/tools/build/src/build-system.jam:797: in load
/boost/tools/build/src/kernel/modules.jam:295: in import
/boost/tools/build/src/kernel/bootstrap.jam:139: in boost-build
/boost/boost-build.jam:17: in module scope

<<< many blank lines >>>
```

The user.config.jam placed into the docker container has:
```
#
# Copyright (C) 2018 James E. King III
#
# Use, modification, and distribution are subject to the
# Boost Software License, Version 1.0. (See accompanying file
# LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#

# Help bjam find clang++-6.0 for "clang"
# (see: https://github.com/boostorg/build/issues/306)
using clang : 6.0 : /usr/bin/clang++-6.0 ;
using gcc : 7.3 : /usr/bin/g++-7 ;

# For building documentation
# This is what setup_boostbook.sh would do
using boostbook
  : /opt/docbook-xsl-1.75.2
  : /opt/docbook-dtd-4.2
  ;
using xsltproc : /usr/bin/xsltproc ;
using doxygen : /usr/bin/doxygen ;
using fop : /opt/fop-0.94/fop : : /usr/bin/java ;

# Python 3.6 dev kit is installed
using python : 3.6 ;
```

Complete build output:
```
boost_at_d48d3305d4b4:/boost/status$ ../b2 toolset=clang variant=release
cxxstd=03
../libs/contract/test/Jamfile.v2:417: Unescaped special character in
argument <define>BOOST_CONTRACT_ON_MISSING_CHECK_DECL="{ throw err(); }"
../libs/multiprecision/test/Jamfile.v2:58: Unescaped special character in
argument <toolset>msvc:<cxxflags>/fp:precise
../libs/statechart/test/Jamfile.v2:40: Unescaped special character in
argument <link>shared:
../libs/statechart/test/Jamfile.v2:105: Unescaped special character in
argument <link>shared:$(dll)
Performing configuration checks

    - default address-model : 64-bit (cached)
    - default architecture : x86 (cached)
    - symlinks supported : yes (cached)
    - BOOST_COMP_GNUC >= 4.3.0 : no
    - has_icu builds : no
    - lockfree boost::atomic_flag : yes
    - Boost.Config Feature Check: cxx11_constexpr : no
    - Boost.Config Feature Check: cxx11_decltype : no
    - Boost.Config Feature Check: cxx11_hdr_tuple : no
    - Boost.Config Feature Check: cxx11_template_aliases : no
    - Boost.Config Feature Check: cxx11_variadic_templates : no
    - OpenCL : no
    - C++11 mutex : no
    - Boost.Config Feature Check: cxx11_auto_declarations : no
    - Boost.Config Feature Check: cxx11_defaulted_functions : no
    - Boost.Config Feature Check: cxx11_final : no
    - Boost.Config Feature Check: cxx11_hdr_mutex : no
    - Boost.Config Feature Check: cxx11_lambdas : no
    - Boost.Config Feature Check: cxx11_noexcept : no
    - Boost.Config Feature Check: cxx11_nullptr : no
    - Boost.Config Feature Check: cxx11_rvalue_references : no
    - Boost.Config Feature Check: cxx11_thread_local : no
warning: non-free usage requirements <threading>multi ignored
warning: in main-target mpi at /home/boost/user-config.jam:23
warning: non-free usage requirements <threading>multi ignored
warning: in main-target boost_mpi at ../libs/mpi/build/Jamfile.v2:119
    - iconv (libc) : yes
    - icu : no
    - icu (lib64) : no
    - native-atomic-int32-supported : yes
    - native-syslog-supported : yes
    - pthread-supports-robust-mutexes : yes
    - compiler-supports-ssse3 : yes
    - compiler-supports-avx2 : yes
    - Boost.Config Feature Check: cxx14_constexpr : no
    - BOOST_COMP_GNUC >= 4.7.4 : no
    - Boost.Config Feature Check: cxx14_decltype_auto : no
    - Boost.Config Feature Check: cxx14_generic_lambdas : no
    - Boost.Config Feature Check: cxx14_return_type_deduction : no
    - Boost.Config Feature Check: cxx11_constexpr : no
    - Boost.Config Feature Check: cxx11_decltype : no
    - Boost.Config Feature Check: cxx11_hdr_tuple : no
    - Boost.Config Feature Check: cxx11_template_aliases : no
    - Boost.Config Feature Check: cxx11_variadic_templates : no
    - OpenCL : no
    - has_atomic_lib builds : yes
    - has_pthread_lib builds : yes
    - has_rt_lib builds : yes
    - Clang implicit fallthrough : yes
    - Boost.Config Feature Check: int128 : yes
    - Boost.Config Feature Check: cxx11_user_defined_literals : no
    - Boost.Config Feature Check: cxx11_hdr_thread : no
    - Boost.Config Feature Check: cxx11_variadic_macros : yes
    - Boost.Config Feature Check: cxx11_hdr_array : no
    - libjpeg : yes
    - zlib : yes
    - libpng : yes
    - libtiff : yes
    - Boost.Config Feature Check: unistd_h : yes
    - Boost.Config Feature Check: unistd_h : yes
    - Checking for gmpxx.h : yes
    - bzip2 : yes
    - lzma : yes
    - zstd : yes
    - GCC libquadmath and __float128 support : no
    - Boost.Config Feature Check: cxx11_smart_ptr : no
    - Boost.Config Feature Check: cxx11_unified_initialization_syntax : no
    - Boost.Config Feature Check: sfinae_expr : yes
    - Boost.Config Feature Check: cxx11_range_based_for : no
    - libfftw3 : no
    - __float128 : no
    - gcc visibility : yes
    - long double support : yes
    - Intel _Quad datatype support : no
    - has_ntl_rr builds : no
    - has_mpfr_class builds : no
    - has_mpreal builds : no
    - has_e_float builds : no
    - Boost.Config Feature Check: cxx11_hdr_atomic : no
    - Boost.Config Feature Check: cxx11_hdr_future : no
    - Boost.Config Feature Check: cxx11_hdr_chrono : no
    - Boost.Config Feature Check: cxx11_hdr_random : no
    - Boost.Config Feature Check: cxx11_allocator : no
    - 128-bit floatmax_t : no
    - Boost.Config Feature Check: cxx11_numeric_limits : no
    - Boost.Config Feature Check: cxx11_explicit_conversion_operators : no
    - Boost.Config Feature Check: cxx11_function_template_default_args : no
    - BOOST_MULTI_INDEX_KEY_SUPPORTED defined : no
    - has_gmp builds : yes
    - has_mpfr builds : no
    - has_tommath builds : no
    - has_mpfi builds : no
    - has_float128 builds : no
    - has_intel_quad builds : no
    - has_mpc builds : no
    - has_eigen builds : no
    - has_gmp builds : yes
    - has_mpfr builds : no
error: No best alternative for ../libs/parameter/test/compose_fail_0
    next alternative: required properties: (empty)
        matched
    next alternative: required properties: (empty)
        matched
error: No best alternative for ../libs/parameter/test/compose_fail_0
    next alternative: required properties: (empty)
        matched
    next alternative: required properties: (empty)
        matched
error: No best alternative for ../libs/parameter/test/compose_fail_0
    next alternative: required properties: (empty)
        matched
    next alternative: required properties: (empty)
        matched
error: No best alternative for ../libs/parameter/test/compose_fail_0
    next alternative: required properties: (empty)
        matched
    next alternative: required properties: (empty)
        matched
    - Boost.Config Feature Check: cxx11_hdr_unordered_map : no
    - Boost.Config Feature Check: cxx11_hdr_unordered_set : no
    - Boost.Config Feature Check: cxx11_noexcept : no
WARNING: Unable to construct ../libs/predef/test/info_as_objcpp of type RUN
with these properties: <abi>sysv <address-model>64 <architecture>x86
<asynch-exceptions>off <bc_hdr>lib <bc_no>all_yes <binary-format>elf
<context-impl>fcontext <cxxstd-dialect>iso <cxxstd>03 <debug-symbols>off
<deduced-address-model>64 <deduced-architecture>x86
<define>BOOST_ALL_NO_LIB=1 <define>NDEBUG
<dependency>object(file-target)@88019 <doxygen.doxproc.index>no
<doxygen.processor>xsltproc <exception-handling>on <extern-c-nothrow>off
<format>html <hardcode-dll-paths>true <host-os>linux
<implicit-dependency>object(notfile-target)@76261 <include>..
<include>/boost/libs/predef/include <inlining>full
<install-dependencies>off <link>shared <local-visibility>hidden
<location-prefix>info_as_objcpp.test <optimization>speed <os>LINUX <pch>on
<preserve-test-targets>on <profiling>off <python-debugging>off
<python.interpreter>python2.7 <python>2.7
<relevant>define:<relevant>toolset <relevant>link:<relevant>toolset
<relevant>python.interpreter:<relevant>python
<relevant>python.interpreter:<relevant>target-os <relevant>toolset <rtti>on
<runtime-debugging>off <runtime-link>shared <stdlib>native <strip>off
<suppress-import-lib>false <symlink-location>project-relative
<tag>@Jamfile</boost>%Jamfile</boost>.tag <target-os>linux
<test-info>always_show_run_output <testing.execute>on <threadapi>pthread
<threading>single <toolset-clang:platform>linux <toolset-clang:version>6.0
<toolset>clang <user-interface>console <variant>release <vectorize>off
<visibility>hidden <warnings-as-errors>off <warnings>on
<xsl:param>boost.defaults=Boost
WARNING: Considered these as possible generators:
WARNING: testing.expect-success with source types { RUN_OUTPUT } and
requirements { }
WARNING: Unable to construct ../libs/predef/test/info_as_objc of type RUN
with these properties: <abi>sysv <address-model>64 <architecture>x86
<asynch-exceptions>off <bc_hdr>lib <bc_no>all_yes <binary-format>elf
<context-impl>fcontext <cxxstd-dialect>iso <cxxstd>03 <debug-symbols>off
<deduced-address-model>64 <deduced-architecture>x86
<define>BOOST_ALL_NO_LIB=1 <define>NDEBUG
<dependency>object(file-target)@88019 <doxygen.doxproc.index>no
<doxygen.processor>xsltproc <exception-handling>on <extern-c-nothrow>off
<format>html <hardcode-dll-paths>true <host-os>linux
<implicit-dependency>object(notfile-target)@76261 <include>..
<include>/boost/libs/predef/include <inlining>full
<install-dependencies>off <link>shared <local-visibility>hidden
<location-prefix>info_as_objc.test <optimization>speed <os>LINUX <pch>on
<preserve-test-targets>on <profiling>off <python-debugging>off
<python.interpreter>python2.7 <python>2.7
<relevant>define:<relevant>toolset <relevant>link:<relevant>toolset
<relevant>python.interpreter:<relevant>python
<relevant>python.interpreter:<relevant>target-os <relevant>toolset <rtti>on
<runtime-debugging>off <runtime-link>shared <stdlib>native <strip>off
<suppress-import-lib>false <symlink-location>project-relative
<tag>@Jamfile</boost>%Jamfile</boost>.tag <target-os>linux
<test-info>always_show_run_output <testing.execute>on <threadapi>pthread
<threading>single <toolset-clang:platform>linux <toolset-clang:version>6.0
<toolset>clang <user-interface>console <variant>release <vectorize>off
<visibility>hidden <warnings-as-errors>off <warnings>on
<xsl:param>boost.defaults=Boost
WARNING: Considered these as possible generators:
WARNING: testing.expect-success with source types { RUN_OUTPUT } and
requirements { }
    - BOOST_OS_MACOS : no
    - BOOST_COMP_CLANG > 0.0.0 : yes
    - BOOST_OS_LINUX == 0 : no
WARNING: Unable to construct ../libs/predef/test/info_as_objcpp of type RUN
with these properties: <abi>sysv <address-model>64 <architecture>x86
<asynch-exceptions>off <bc_hdr>lib <bc_no>all_yes <binary-format>elf
<context-impl>fcontext <cxxstd-dialect>iso <cxxstd>03 <debug-symbols>off
<deduced-address-model>64 <deduced-architecture>x86
<define>BOOST_ALL_NO_LIB=1 <define>NDEBUG
<dependency>object(file-target)@88019 <doxygen.doxproc.index>no
<doxygen.processor>xsltproc <exception-handling>on <extern-c-nothrow>off
<format>html <hardcode-dll-paths>true <host-os>linux
<implicit-dependency>object(notfile-target)@76261 <include>..
<include>/boost/libs/predef/include <inlining>full
<install-dependencies>off <link>shared <local-visibility>hidden
<location-prefix>info_as_objcpp.test <optimization>speed <os>LINUX <pch>on
<preserve-test-targets>on <profiling>off <python-debugging>off
<python.interpreter>python2.7 <python>2.7
<relevant>define:<relevant>toolset <relevant>link:<relevant>toolset
<relevant>python.interpreter:<relevant>python
<relevant>python.interpreter:<relevant>target-os <relevant>toolset <rtti>on
<runtime-debugging>off <runtime-link>shared <stdlib>native <strip>off
<suppress-import-lib>false <symlink-location>project-relative
<tag>@Jamfile</boost>%Jamfile</boost>.tag <target-os>linux
<test-info>always_show_run_output <testing.execute>on <threadapi>pthread
<threading>single <toolset-clang:platform>linux <toolset-clang:version>6.0
<toolset>clang <user-interface>console <variant>release <vectorize>off
<visibility>hidden <warnings-as-errors>off <warnings>on
<xsl:param>boost.defaults=Boost
WARNING: Considered these as possible generators:
WARNING: testing.expect-success with source types { RUN_OUTPUT } and
requirements { }
WARNING: Unable to construct ../libs/predef/test/info_as_objc of type RUN
with these properties: <abi>sysv <address-model>64 <architecture>x86
<asynch-exceptions>off <bc_hdr>lib <bc_no>all_yes <binary-format>elf
<context-impl>fcontext <cxxstd-dialect>iso <cxxstd>03 <debug-symbols>off
<deduced-address-model>64 <deduced-architecture>x86
<define>BOOST_ALL_NO_LIB=1 <define>NDEBUG
<dependency>object(file-target)@88019 <doxygen.doxproc.index>no
<doxygen.processor>xsltproc <exception-handling>on <extern-c-nothrow>off
<format>html <hardcode-dll-paths>true <host-os>linux
<implicit-dependency>object(notfile-target)@76261 <include>..
<include>/boost/libs/predef/include <inlining>full
<install-dependencies>off <link>shared <local-visibility>hidden
<location-prefix>info_as_objc.test <optimization>speed <os>LINUX <pch>on
<preserve-test-targets>on <profiling>off <python-debugging>off
<python.interpreter>python2.7 <python>2.7
<relevant>define:<relevant>toolset <relevant>link:<relevant>toolset
<relevant>python.interpreter:<relevant>python
<relevant>python.interpreter:<relevant>target-os <relevant>toolset <rtti>on
<runtime-debugging>off <runtime-link>shared <stdlib>native <strip>off
<suppress-import-lib>false <symlink-location>project-relative
<tag>@Jamfile</boost>%Jamfile</boost>.tag <target-os>linux
<test-info>always_show_run_output <testing.execute>on <threadapi>pthread
<threading>single <toolset-clang:platform>linux <toolset-clang:version>6.0
<toolset>clang <user-interface>console <variant>release <vectorize>off
<visibility>hidden <warnings-as-errors>off <warnings>on
<xsl:param>boost.defaults=Boost
WARNING: Considered these as possible generators:
WARNING: testing.expect-success with source types { RUN_OUTPUT } and
requirements { }
    - zlib : yes (cached)
    - bzip2 : yes (cached)
    - lzma : yes (cached)
    - zstd : yes (cached)
    - zlib : yes
    - bzip2 : yes
    - lzma : yes
    - zstd : yes
    - Boost.Config Feature Check: auto_ptr : yes
    - Boost.Config Feature Check: cxx14_constexpr : no
    - Boost.Config Feature Check: cxx11_lambdas : no
    - Boost.Config Feature Check: std_wstreambuf : yes
    - Boost.Config Feature Check: cxx11_hdr_forward_list : no
    - Boost.Config Feature Check: hash : yes
    - Boost.Config Feature Check: slist : yes
    - Boost.Config Feature Check: cxx14_decltype_auto : no
    - Boost.Config Feature Check: cxx14_generic_lambdas : no
    - Boost.Config Feature Check: cxx14_return_type_deduction : no
    - libbacktrace builds : no
    - libbacktrace builds : no
    - addr2line builds : yes
    - addr2line builds : yes
    - WinDbg builds : no
    - WinDbg builds : no
    - WinDbgCached builds : no
    - WinDbgCached builds : no
/boost/tools/build/src/build/feature.jam:491: in validate-value-string from
module feature
error: "shared:" is not a known value of feature <link>
error: legal values: "shared" "static"
/boost/tools/build/src/build/feature.jam:365: in expand-subfeatures-aux
from module feature
/boost/tools/build/src/build/feature.jam:422: in expand-subfeatures from
module feature
/boost/tools/build/src/build/feature.jam:871: in feature.expand from module
feature
/boost/tools/build/src/build/targets.jam:1103: in evaluate-requirements
from module targets
/boost/tools/build/src/build/targets.jam:1121: in common-properties2 from
module targets
/boost/tools/build/src/build/targets.jam:1017: in targets.common-properties
from module targets
/boost/tools/build/src/build/targets.jam:1313: in
class_at_basic-target.generate from module object(typed-target)@48543
/boost/tools/build/src/build/targets.jam:812: in generate-really from
module object(main-target)@71025
/boost/tools/build/src/build/targets.jam:784: in class_at_main-target.generate
from module object(main-target)@71025
/boost/tools/build/src/build/targets.jam:273: in
class_at_project-target.generate from module object(project-target)@47938
/boost/tools/build/src/build/targets.jam:273: in
class_at_project-target.generate from module object(project-target)@4593
/boost/tools/build/src/build-system.jam:797: in load from module
build-system
/boost/tools/build/src/kernel/modules.jam:295: in import from module modules
/boost/tools/build/src/kernel/bootstrap.jam:139: in boost-build from module
/boost/boost-build.jam:17: in module scope from module
```

Thanks,

- Jim


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk