bfgroup / b2

B2 makes it easy to build C++ projects, everywhere.
https://www.bfgroup.xyz/b2/
Boost Software License 1.0
81 stars 230 forks source link

Building boost to web assembly fails #329

Open bruno-j-nicoletti opened 1 year ago

bruno-j-nicoletti commented 1 year ago

Make sure you completed the following tasks

Environment and version details

NA

Brief problem description

When attempting to build boost libraries via conan to webassembly, boost fails to build with the following message...

Error: ambiguity found when searching for best transformation
Trying to produce type 'SEARCHED_LIB' from: 
Generators that succeeded:
 -  searched-lib-generator
 -  emscripten.searched-lib-generator
First generator produced: 
 -  { %.no-action-z.SEARCHED_LIB }
Second generator produced: 
 -  { %.no-action-z.SEARCHED_LIB }

The issue can be fixed by patching the b2 jamfile src/tools/emscripten.jam that boost 1.83.0 depends on as follows....

9d8 < import generators ; 55,57d53 < generators.override builtin.lib-generator : emscripten.prebuilt ; < generators.override emscripten.searched-lib-generator : searched-lib-generator ; <

That patch can't be applied to src/tools/emscripten.jam as the file on the main branch has moved on.

Steps to reproduce the issue

With conan2 installed, and the following conanfile.py...

from conan import ConanFile

class BorkingBoostBuildConan(ConanFile):
    name = "BNS"
    version = "0.0.1"
    settings = "os", "compiler", "build_type", "arch"
    generators = "CMakeToolchain", "CMakeDeps"

    def requirements(self) :
        self.requires("boost/1.83.0")

The following file ./emsdkProfile

settings]
arch=wasm
compiler=clang
compiler.cppstd=23
compiler.libcxx=libc++
compiler.version=16
os=Emscripten
build_type=Debug

[tool_requires]
*: emsdk/3.1.44

[conf]
tools.build:cxxflags=["-fwasm-exceptions", "-pthread"]

[buildenv]
LDFLAGS="-fwasm-exceptions", "-pthread", "-s PROXY_TO_PTHREAD", "-sALLOW_MEMORY_GROWTH"

and the following file macosRelease

os=Macos
arch=x86_64
compiler=apple-clang
compiler.version=14
compiler.cppstd=17
compiler.libcxx=libc++

the command...

conan install --output-folder=build --build=missing -pr:b ./macosRelease -pr:h ./emsdkProfile ./conanfile.py -o boost/\*:with_stacktrace_backtrace=False

results in the following output...

======== Input profiles ========
Profile host:
[settings]
arch=wasm
build_type=Debug
compiler=clang
compiler.cppstd=23
compiler.libcxx=libc++
compiler.version=16
os=Emscripten
[options]
boost/*:with_stacktrace_backtrace=False
[tool_requires]
*: emsdk/3.1.44
[conf]
tools.build:cxxflags=['-fwasm-exceptions', '-pthread']
[buildenv]
LDFLAGS="-fwasm-exceptions", "-pthread", "-s PROXY_TO_PTHREAD", "-sALLOW_MEMORY_GROWTH"

Profile build:
[settings]
arch=x86_64
build_type=Release
compiler=apple-clang
compiler.cppstd=17
compiler.libcxx=libc++
compiler.version=14
os=Macos

======== Computing dependency graph ========
boost/1.83.0: Not found in local cache, looking in remotes...
boost/1.83.0: Checking remote: conancenter
boost/1.83.0: Downloaded recipe revision 8be129e9ab6e00b3d74810626cdbea9c
Graph root
    conanfile.py (BNS/0.0.1): /Users/bruno/Work/boostHell/conanfile.py
Requirements
    boost/1.83.0#8be129e9ab6e00b3d74810626cdbea9c - Downloaded (conancenter)
    bzip2/1.0.8#411fc05e80d47a89045edc1ee6f23c1d - Cache
    zlib/1.2.13#e377bee636333ae348d51ca90874e353 - Cache
Build requirements
    b2/4.9.6#53783bdbbdbb6c13732b25f1f6ea6c58 - Cache
    emsdk/3.1.44#a6d941a26a1c416d25e3505805703a58 - Cache
    nodejs/16.3.0#fbb644235845086644bebd53e452595b - Cache

======== Computing necessary packages ========
boost/1.83.0: Checking 9 compatible configurations:
boost/1.83.0: '8ccee61c8b07220fbe5a5fe74c8fdd6ec574193c': compiler.cppstd=11
boost/1.83.0: 'a3ec0237a73d4381ea6d8f5d310312c8472605be': compiler.cppstd=gnu11
boost/1.83.0: '9a14321c477848010eaa8836bc2fa137e41157bd': compiler.cppstd=14
boost/1.83.0: '32a6f7ecb44b2c50fdf25e2885ef3924125749ca': compiler.cppstd=gnu14
boost/1.83.0: '51e93e6472834c7b40fed494ecae8a37f4cc58c8': compiler.cppstd=17
boost/1.83.0: 'e90c8db2bb1ba4b86fba99ea6a9829bc29ace775': compiler.cppstd=gnu17
boost/1.83.0: '40b8a4ed65a40d9ee6e119cf4858e306fd7c96c7': compiler.cppstd=20
boost/1.83.0: '7240f756ad186990dabe01380fea1b68d3c1588c': compiler.cppstd=gnu20
boost/1.83.0: 'c8188ef9f0ca923334a404e7bce08a82ac81e945': compiler.cppstd=gnu23
Requirements
    boost/1.83.0#8be129e9ab6e00b3d74810626cdbea9c:aaaec01a32da69642eb212b65576d882d068e126 - Build
    bzip2/1.0.8#411fc05e80d47a89045edc1ee6f23c1d:6d96f99e9965a4797bd36a3301a7da9699f8681c#0492a23ca06d25192089e02bdba7c31a - Cache
    zlib/1.2.13#e377bee636333ae348d51ca90874e353:e3fac8d3f9347da32209118b429e89851f8a417d#51e5027420bc1deea4d32449691dbf65 - Cache
Build requirements
    b2/4.9.6#53783bdbbdbb6c13732b25f1f6ea6c58:82339cc4d6db7990c1830d274cd12e7c91ab18a1#f375c196e601fb716b2bd5018c871c78 - Cache
    emsdk/3.1.44#a6d941a26a1c416d25e3505805703a58:82339cc4d6db7990c1830d274cd12e7c91ab18a1#8dbf4ab5c71e04b6ea14e90c5640f80f - Cache
    nodejs/16.3.0#fbb644235845086644bebd53e452595b:82339cc4d6db7990c1830d274cd12e7c91ab18a1#d0751e90bacaaf8eed3c0c2b10bd05eb - Cache

======== Installing packages ========
b2/4.9.6: Already installed! (1 of 6)
nodejs/16.3.0: Already installed! (2 of 6)
nodejs/16.3.0: Appending PATH environment variable: /Users/bruno/.conan2/p/nodejf10c1d8c12c70/p/bin
nodejs/16.3.0: Appending PATH environment variable: /Users/bruno/.conan2/p/nodejf10c1d8c12c70/p/bin
bzip2/1.0.8: Already installed! (3 of 6)
zlib/1.2.13: Already installed! (4 of 6)
emsdk/3.1.44: Already installed! (5 of 6)
boost/1.83.0: Sources downloaded from 'conancenter'
boost/1.83.0: Calling source() in /Users/bruno/.conan2/p/boostf43c9e9f0bf53/s/src
boost/1.83.0: Downloading 122.9MB boost_1_83_0.tar.bz2
boost/1.83.0: Downloaded 85.7MB 69% boost_1_83_0.tar.bz2
boost/1.83.0: Apply patch (conan): Optional flag to specify iconv from either libc of libiconv

-------- Installing package boost/1.83.0 (6 of 6) --------
boost/1.83.0: Building from source
boost/1.83.0: Package boost/1.83.0:aaaec01a32da69642eb212b65576d882d068e126
boost/1.83.0: Building your package in /Users/bruno/.conan2/p/b/boost8525b86d413ba/b
boost/1.83.0: Calling generate()
boost/1.83.0: Generators folder: /Users/bruno/.conan2/p/b/boost8525b86d413ba/b/build-debug/conan
boost/1.83.0: Generating aggregated env files
boost/1.83.0: Generated aggregated env files: ['conanbuild.sh', 'conanrun.sh']
boost/1.83.0: Calling build()
boost/1.83.0: WARN: replace_in_file didn't find pattern '/* thread_local */' in '/Users/bruno/.conan2/p/boostf43c9e9f0bf53/s/src/boost/stacktrace/detail/libbacktrace_impls.hpp' file.
boost/1.83.0: WARN: replace_in_file didn't find pattern '/* static __thread */' in '/Users/bruno/.conan2/p/boostf43c9e9f0bf53/s/src/boost/stacktrace/detail/libbacktrace_impls.hpp' file.
boost/1.83.0: WARN: replace_in_file didn't find pattern 'local generic-os = [ set.difference $(all-os) : aix darwin vxworks solaris osf hpux ] ;' in '/Users/bruno/.conan2/p/boostf43c9e9f0bf53/s/src/tools/build/src/tools/gcc.jam' file.
boost/1.83.0: WARN: replace_in_file didn't find pattern 'local no-threading = android beos haiku sgi darwin vxworks ;' in '/Users/bruno/.conan2/p/boostf43c9e9f0bf53/s/src/tools/build/src/tools/gcc.jam' file.
boost/1.83.0: WARN: Patching user-config.jam
boost/1.83.0: WARN: 
using zlib : 1.2.13 : <include>"/Users/bruno/.conan2/p/b/zlib92366dd24ff76/p/include" <search>"/Users/bruno/.conan2/p/b/zlib92366dd24ff76/p/lib" <name>z ;
using bzip2 : 1.0.8 : <include>"/Users/bruno/.conan2/p/b/bzip2e5e0f698f6100/p/include" <search>"/Users/bruno/.conan2/p/b/bzip2e5e0f698f6100/p/lib" <name>bz2 ;
using "emscripten" :  :  "/Users/bruno/.conan2/p/b/emsdk8fd9873fdac27/p/bin/upstream/emscripten/em++" : 
<archiver>"/Users/bruno/.conan2/p/b/emsdk8fd9873fdac27/p/bin/upstream/emscripten/emar" <ranlib>"/Users/bruno/.conan2/p/b/emsdk8fd9873fdac27/p/bin/upstream/emscripten/emranlib" <cxxflags>"-fwasm-exceptions -pthread"  ;
boost/1.83.0: Cross building, detecting compiler...
boost/1.83.0: Cross building flags: []
boost/1.83.0: WARN: b2 -q numa=on address-model=32 --layout=system --user-config=/Users/bruno/.conan2/p/boostf43c9e9f0bf53/s/src/tools/build/user-config.jam -sNO_ZLIB=0 -sNO_BZIP2=0 -sNO_LZMA=1 -sNO_ZSTD=1 boost.locale.icu=off --disable-icu boost.locale.iconv=on boost.locale.iconv.lib=libc threading=multi visibility=hidden link=static variant=debug --with-atomic --with-chrono --with-container --with-context --with-contract --with-coroutine --with-date_time --with-exception --with-fiber --with-filesystem --with-graph --with-iostreams --with-json --with-locale --with-log --with-math --with-nowide --with-program_options --with-random --with-regex --with-serialization --with-stacktrace --with-system --with-test --with-thread --with-timer --with-type_erasure --with-url --with-wave toolset=emscripten cxxflags=-std=c++2b pch=on linkflags="" cxxflags="-fPIC -DBOOST_STACKTRACE_ADDR2LINE_LOCATION=/usr/bin/addr2line" install --prefix=/Users/bruno/.conan2/p/b/boost8525b86d413ba/p -j16 --abbreviate-paths -d0 --debug-configuration --build-dir="/Users/bruno/.conan2/p/b/boost8525b86d413ba/b/build-debug"
boost/1.83.0: RUN: b2 -q numa=on address-model=32 --layout=system --user-config=/Users/bruno/.conan2/p/boostf43c9e9f0bf53/s/src/tools/build/user-config.jam -sNO_ZLIB=0 -sNO_BZIP2=0 -sNO_LZMA=1 -sNO_ZSTD=1 boost.locale.icu=off --disable-icu boost.locale.iconv=on boost.locale.iconv.lib=libc threading=multi visibility=hidden link=static variant=debug --with-atomic --with-chrono --with-container --with-context --with-contract --with-coroutine --with-date_time --with-exception --with-fiber --with-filesystem --with-graph --with-iostreams --with-json --with-locale --with-log --with-math --with-nowide --with-program_options --with-random --with-regex --with-serialization --with-stacktrace --with-system --with-test --with-thread --with-timer --with-type_erasure --with-url --with-wave toolset=emscripten cxxflags=-std=c++2b pch=on linkflags="" cxxflags="-fPIC -DBOOST_STACKTRACE_ADDR2LINE_LOCATION=/usr/bin/addr2line" install --prefix=/Users/bruno/.conan2/p/b/boost8525b86d413ba/p -j16 --abbreviate-paths -d0 --debug-configuration --build-dir="/Users/bruno/.conan2/p/b/boost8525b86d413ba/b/build-debug"
notice: found boost-build.jam at /Users/bruno/.conan2/p/boostf43c9e9f0bf53/s/src/boost-build.jam
notice: loading B2 from /Users/bruno/.conan2/p/b24bd1c02e3b59e/p/bin/.b2/kernel/bootstrap.jam
notice: Searching '/etc' '/Users/bruno' '/Users/bruno/.conan2/p/b24bd1c02e3b59e/p/bin/.b2/kernel' '/Users/bruno/.conan2/p/b24bd1c02e3b59e/p/bin/.b2/util' '/Users/bruno/.conan2/p/b24bd1c02e3b59e/p/bin/.b2/build' '/Users/bruno/.conan2/p/b24bd1c02e3b59e/p/bin/.b2/tools' '/Users/bruno/.conan2/p/b24bd1c02e3b59e/p/bin/.b2/contrib' '/Users/bruno/.conan2/p/b24bd1c02e3b59e/p/bin/.b2/.' for site-config configuration file 'site-config.jam'.
notice: Configuration file 'site-config.jam' not found in '/etc' '/Users/bruno' '/Users/bruno/.conan2/p/b24bd1c02e3b59e/p/bin/.b2/kernel' '/Users/bruno/.conan2/p/b24bd1c02e3b59e/p/bin/.b2/util' '/Users/bruno/.conan2/p/b24bd1c02e3b59e/p/bin/.b2/build' '/Users/bruno/.conan2/p/b24bd1c02e3b59e/p/bin/.b2/tools' '/Users/bruno/.conan2/p/b24bd1c02e3b59e/p/bin/.b2/contrib' '/Users/bruno/.conan2/p/b24bd1c02e3b59e/p/bin/.b2/.'.
notice: Loading explicitly specified user configuration file:
    /Users/bruno/.conan2/p/boostf43c9e9f0bf53/s/src/tools/build/user-config.jam
notice: Searching '/Users/bruno/.conan2/p/boostf43c9e9f0bf53/s/src/tools/build' for user-config configuration file 'user-config.jam'.
notice: Loading user-config configuration file 'user-config.jam' from '/Users/bruno/.conan2/p/boostf43c9e9f0bf53/s/src/tools/build'.
notice: [zlib] Using pre-installed library
notice: [zlib] Condition
notice: [bzip2] Using pre-installed library
notice: [bzip2] Condition
notice: will use '/Users/bruno/.conan2/p/b/emsdk8fd9873fdac27/p/bin/upstream/emscripten/em++' for emscripten, condition <toolset>emscripten-3.1.44
notice: [zlib] zlib is already configured
notice: [bzip2] bzip is already configured
notice: iostreams: not using lzma compression 
notice: iostreams: not using zstd compression 
notice: [python-cfg] Configuring python...
notice: [python-cfg] Checking interpreter command "python"...
notice: [python-cfg] running command 'python -c "from sys import *; print('version=%d.%d\nplatform=%s\nprefix=%s\nexec_prefix=%s\nexecutable=%s' % (version_info[0],version_info[1],platform,prefix,exec_prefix,executable))" 2>&1'
notice: [python-cfg] ...requested configuration matched!
notice: [python-cfg] Details of this Python configuration:
notice: [python-cfg]   interpreter command: "python"
notice: [python-cfg]   include path: "/Users/bruno/venv3_11/include/python3.11"
notice: [python-cfg]   library path: "/Users/bruno/venv3_11/lib/python3.11/config" "/Users/bruno/venv3_11/lib"
notice: [python-cfg] Checking for NumPy...
notice: [python-cfg] running command 'python -c "import sys; sys.stderr = sys.stdout; import numpy; print(numpy.get_include())"'
notice: [python-cfg] NumPy enabled
notice: [python-cfg] no framework directory found; using library path
Performing configuration checks

    - default address-model    : 32-bit [1]
    - default architecture     : none [1]
    - x86                      : no [2]
    - arm                      : no [2]
    - mips1                    : no [2]
    - power                    : no [2]
    - sparc                    : no [2]
error: No best alternative for libs/context/build/asm_sources with <abi>sysv <address-model>32 <asynch-exceptions>off <binary-format>mach-o <boost.locale.iconv.lib>libc <boost.locale.iconv>on <boost.locale.icu>off <closure>off <context-impl>fcontext <coverage>off <debug-symbols>on <deduced-address-model>32 <embind>off <exception-handling>on <extern-c-nothrow>off <inlining>off <link-optimization>off <link>static <numa>on <optimization>off <os>MACOSX <pch>on <preserve-test-targets>on <profiling>off <python-debugging>off <python>3.11 <relevant>abi <relevant>address-model <relevant>architecture <relevant>binary-format <relevant>toolset <rtti>on <runtime-debugging>on <runtime-link>shared <stdlib>native <strip>off <target-os>darwin <testing.execute>on <threadapi>pthread <threading>multi <toolset-emscripten:version>3.1.44 <toolset>emscripten <variant>debug <vectorize>off <visibility>hidden <warnings-as-errors>off <warnings>on
    no match: <abi>aapcs <address-model>32 <architecture>arm <binary-format>elf <threading>multi <toolset>clang
    no match: <abi>aapcs <address-model>32 <architecture>arm <binary-format>elf <threading>multi <toolset>gcc
    no match: <abi>aapcs <address-model>32 <architecture>arm <binary-format>elf <threading>multi <toolset>qcc
    no match: <abi>aapcs <address-model>32 <architecture>arm <binary-format>mach-o <threading>multi <toolset>clang
    no match: <abi>aapcs <address-model>32 <architecture>arm <binary-format>mach-o <threading>multi <toolset>darwin
    no match: <abi>aapcs <address-model>32 <architecture>arm <binary-format>pe <threading>multi <toolset>msvc
    no match: <abi>aapcs <address-model>64 <architecture>arm <binary-format>elf <threading>multi <toolset>clang
    no match: <abi>aapcs <address-model>64 <architecture>arm <binary-format>elf <threading>multi <toolset>gcc
    no match: <abi>aapcs <address-model>64 <architecture>arm <binary-format>mach-o <threading>multi <toolset>clang
    no match: <abi>aapcs <address-model>64 <architecture>arm <binary-format>mach-o <threading>multi <toolset>darwin
    no match: <abi>aapcs <address-model>64 <architecture>arm <binary-format>pe <threading>multi <toolset>msvc
    no match: <abi>sysv <address-model>64 <architecture>loongarch <binary-format>elf <threading>multi <toolset>gcc
    no match: <abi>o32 <address-model>32 <architecture>mips <binary-format>elf <threading>multi <toolset>clang
    no match: <abi>o32 <address-model>32 <architecture>mips <binary-format>elf <threading>multi <toolset>gcc
    no match: <abi>n64 <address-model>64 <architecture>mips <binary-format>elf <threading>multi <toolset>clang
    no match: <abi>n64 <address-model>64 <architecture>mips <binary-format>elf <threading>multi <toolset>gcc
    no match: <abi>sysv <address-model>32 <architecture>power <binary-format>elf <threading>multi <toolset>clang
    no match: <abi>sysv <address-model>32 <architecture>power <binary-format>elf <threading>multi <toolset>gcc
    no match: <abi>sysv <address-model>32 <architecture>power <binary-format>mach-o <threading>multi <toolset>clang
    no match: <abi>sysv <address-model>32 <architecture>power <binary-format>mach-o <threading>multi <toolset>gcc
    no match: <abi>sysv <address-model>32 <architecture>power <binary-format>mach-o <threading>multi <toolset>darwin
    no match: <abi>sysv <address-model>32 <architecture>power <binary-format>xcoff <threading>multi <toolset>clang
    no match: <abi>sysv <address-model>32 <architecture>power <binary-format>xcoff <threading>multi <toolset>gcc
    no match: <abi>sysv <address-model>64 <architecture>power <binary-format>elf <threading>multi <toolset>clang
    no match: <abi>sysv <address-model>64 <architecture>power <binary-format>elf <threading>multi <toolset>gcc
    no match: <abi>sysv <address-model>64 <architecture>power <binary-format>mach-o <threading>multi <toolset>clang
    no match: <abi>sysv <address-model>64 <architecture>power <binary-format>mach-o <threading>multi <toolset>gcc
    no match: <abi>sysv <address-model>64 <architecture>power <binary-format>mach-o <threading>multi <toolset>darwin
    no match: <abi>sysv <address-model>64 <architecture>power <binary-format>xcoff <threading>multi <toolset>clang
    no match: <abi>sysv <address-model>64 <architecture>power <binary-format>xcoff <threading>multi <toolset>gcc
    no match: <abi>sysv <address-model>32_64 <architecture>power <binary-format>mach-o <threading>multi
    no match: <abi>sysv <address-model>64 <architecture>riscv <binary-format>elf <threading>multi <toolset>clang
    no match: <abi>sysv <address-model>64 <architecture>riscv <binary-format>elf <threading>multi <toolset>gcc
    no match: <abi>sysv <address-model>64 <architecture>s390x <binary-format>elf <threading>multi <toolset>gcc
    no match: <abi>sysv <address-model>64 <architecture>s390x <binary-format>elf <threading>multi <toolset>clang
    no match: <abi>sysv <address-model>32 <architecture>x86 <binary-format>elf <threading>multi <toolset>clang
    no match: <abi>sysv <address-model>32 <architecture>x86 <binary-format>elf <threading>multi <toolset>gcc
    no match: <abi>sysv <address-model>32 <architecture>x86 <binary-format>elf <threading>multi <toolset>intel
    no match: <abi>sysv <address-model>32 <architecture>x86 <binary-format>mach-o <threading>multi <toolset>clang
    no match: <abi>sysv <address-model>32 <architecture>x86 <binary-format>mach-o <threading>multi <toolset>darwin
    no match: <abi>ms <address-model>32 <architecture>x86 <binary-format>pe <threading>multi <toolset>clang
    no match: <abi>ms <address-model>32 <architecture>x86 <binary-format>pe <threading>multi <toolset>clang-win
    no match: <abi>ms <address-model>32 <architecture>x86 <binary-format>pe <threading>multi <toolset>gcc
    no match: <abi>ms <address-model>32 <architecture>x86 <binary-format>pe <threading>multi <toolset>intel
    no match: <abi>ms <address-model>32 <architecture>x86 <binary-format>pe <threading>multi <toolset>msvc
    no match: <abi>ms <address-model>32 <architecture>x86 <binary-format>pe <threading>multi <toolset>embarcadero
    no match: <abi>ms <address-model>32 <architecture>x86 <binary-format>pe <threading>multi <toolset>borland
    no match: <abi>sysv <address-model>64 <architecture>x86 <binary-format>elf <threading>multi <toolset>clang
    no match: <abi>sysv <address-model>64 <architecture>x86 <binary-format>elf <threading>multi <toolset>gcc
    no match: <abi>sysv <address-model>64 <architecture>x86 <binary-format>elf <threading>multi <toolset>intel
    no match: <abi>sysv <address-model>64 <architecture>x86 <binary-format>mach-o <threading>multi <toolset>clang
    no match: <abi>sysv <address-model>64 <architecture>x86 <binary-format>mach-o <threading>multi <toolset>gcc
    no match: <abi>sysv <address-model>64 <architecture>x86 <binary-format>mach-o <threading>multi <toolset>darwin
    no match: <abi>sysv <address-model>64 <architecture>x86 <binary-format>mach-o <threading>multi <toolset>intel
    no match: <abi>ms <address-model>64 <architecture>x86 <binary-format>pe <threading>multi <toolset>clang
    no match: <abi>ms <address-model>64 <architecture>x86 <binary-format>pe <threading>multi <toolset>clang-win
    no match: <abi>ms <address-model>64 <architecture>x86 <binary-format>pe <threading>multi <toolset>gcc
    no match: <abi>ms <address-model>64 <architecture>x86 <binary-format>pe <threading>multi <toolset>intel
    no match: <abi>ms <address-model>64 <architecture>x86 <binary-format>pe <threading>multi <toolset>msvc
    no match: <abi>ms <address-model>64 <architecture>x86 <binary-format>pe <threading>multi <toolset>embarcadero
    no match: <abi>x32 <address-model>32 <architecture>x86 <binary-format>elf <threading>multi <toolset>clang
    no match: <abi>x32 <address-model>32 <architecture>x86 <binary-format>elf <threading>multi <toolset>gcc
    no match: <abi>x32 <address-model>32 <architecture>x86 <binary-format>elf <threading>multi <toolset>intel
    no match: <abi>sysv <address-model>32_64 <architecture>x86 <binary-format>mach-o <threading>multi
    no match: <abi>sysv <architecture>arm+x86 <binary-format>mach-o <threading>multi
    - has std::atomic_ref      : no [2]
    - has statx                : no [2]
    - has statx syscall        : no [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]
    - cxx11_auto_declarations  : yes [2]
    - cxx11_constexpr          : yes [2]
    - cxx11_defaulted_functions : yes [2]
    - cxx11_final              : yes [2]
    - cxx11_hdr_mutex          : yes [2]
    - cxx11_hdr_tuple          : yes [2]
    - cxx11_lambdas            : yes [2]
    - cxx11_noexcept           : yes [2]
    - cxx11_nullptr            : yes [2]
    - cxx11_rvalue_references  : yes [2]
    - cxx11_template_aliases   : yes [2]
    - cxx11_thread_local       : yes [2]
    - cxx11_variadic_templates : yes [2]
    - has_icu builds           : no [2]
Error: ambiguity found when searching for best transformation
Trying to produce type 'SEARCHED_LIB' from: 
Generators that succeeded:
 -  searched-lib-generator
 -  emscripten.searched-lib-generator
First generator produced: 
 -  { %.no-action-z.SEARCHED_LIB }
Second generator produced: 
 -  { %.no-action-z.SEARCHED_LIB }

boost/1.83.0: ERROR: 
Package 'aaaec01a32da69642eb212b65576d882d068e126' build failed
boost/1.83.0: WARN: Build folder /Users/bruno/.conan2/p/b/boost8525b86d413ba/b/build-debug
*********************************************************
Recipe 'boost/1.83.0' cannot build its binary
It is possible that this recipe is not Conan 2.0 ready
If the recipe comes from ConanCenter check: https://conan.io/cci-v2.html
If it is your recipe, check if it is updated to 2.0
*********************************************************

ERROR: boost/1.83.0: Error in build() method, line 887
    self.run(full_command)
    ConanException: Error 1 while executing

Actual behavior summary

Boost fails to build vai conan when compiling to webassembly.

Attach, or place here, log output showing the bug including running
with the options: -d2 --debug-configuration

Expected behavior summary

It should build to web assembly and not fail.

Kojoley commented 7 months ago
Error: ambiguity found when searching for best transformation
Trying to produce type 'SEARCHED_LIB' from: 
Generators that succeeded:
 -  searched-lib-generator
 -  emscripten.searched-lib-generator
First generator produced: 
 -  { %.no-action-z.SEARCHED_LIB }
Second generator produced: 
 -  { %.no-action-z.SEARCHED_LIB }

The issue can be fixed by patching the b2 jamfile src/tools/emscripten.jam that boost 1.83.0 depends on as follows....

This has been fixed in #225 and emscripten support overhaul happened in #310

error: No best alternative for libs/context/build/asm_sources with sysv 32 off mach-o libc on off off fcontext off on 32 off on off off off static on off MACOSX on on off off 3.11 abi address-model architecture binary-format toolset on on shared native off darwin on pthread multi 3.1.44 emscripten debug off hidden off on

It's not a b2 issue. AFAIK emscripten is not supported by Boost.Context, file an issue there.