Opened 14 months ago

Closed 7 months ago

#66820 closed defect (fixed)

boost181 @1.81.0+universal: "combined" is not a known value of feature <architecture> :info:build error: legal values: "x86" ... "arm+x86"

Reported by: kaamui Owned by: michaelld (Michael Dickens)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: mascguy (Christopher Nielsen)
Port: boost181

Description (last modified by ryandesign (Ryan Carsten Schmidt))

Boost 1.81.0 fails to build on Mac M1 with the following output :

sudo port install boost181 +universal
--->  Computing dependencies for boost181
--->  Fetching archive for boost181
--->  Attempting to fetch boost181-1.81.0_4+no_single+no_static+python310+universal.darwin_21.arm64-x86_64.tbz2 from https://packages.macports.org/boost181
--->  Attempting to fetch boost181-1.81.0_4+no_single+no_static+python310+universal.darwin_21.arm64-x86_64.tbz2 from https://fra.de.packages.macports.org/boost181
--->  Attempting to fetch boost181-1.81.0_4+no_single+no_static+python310+universal.darwin_21.arm64-x86_64.tbz2 from https://nue.de.packages.macports.org/boost181
--->  Fetching distfiles for boost181
--->  Verifying checksums for boost181
--->  Extracting boost181
--->  Applying patches to boost181
--->  Configuring boost181
--->  Building boost181                                  
Error: Failed to build boost181: command execution failed
Error: See /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_boost181/boost181/main.log for details.
Error: Follow https://guide.macports.org/#project.tickets if you believe there is a bug.
Error: Processing of port boost181 failed

main.log is attached, but the issue seems to be related to the fact that "combined" was replaced in boost by "arm+x86" (see in commit below)

:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_boost181/boost181/work/boost_1_81_0/tools/build/src/build/feature.jam:491: in feature.validate-value-string from module feature
:info:build error: "combined" is not a known value of feature <architecture>
:info:build error: legal values: "x86" "ia64" "sparc" "power" "loongarch" "mips" "mips1" "mips2" "mips3" "mips4" "mips32" "mips32r2" "mips64" "parisc" "arm" "riscv" "s390x" "arm+x86"
:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_boost181/boost181/work/boost_1_81_0/tools/build/src/build/property.jam:337: in validate1 from module property
:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_boost181/boost181/work/boost_1_81_0/tools/build/src/build/property.jam:363: in property.validate from module property
:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_boost181/boost181/work/boost_1_81_0/tools/build/src/build/build-request.jam:286: in convert-command-line-element from module build-request
:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_boost181/boost181/work/boost_1_81_0/tools/build/src/build/build-request.jam:222: in build-request.convert-command-line-elements from module build-request
:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_boost181/boost181/work/boost_1_81_0/tools/build/src/build-system.jam:774: in load from module build-system
:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_boost181/boost181/work/boost_1_81_0/tools/build/src/kernel/modules.jam:294: in import from module modules
:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_boost181/boost181/work/boost_1_81_0/tools/build/src/kernel/bootstrap.jam:135: in module scope from module

Note that Boost 1.81.0 adds a workaround that could resolve boost issues in universal variant: #64954 #66686

https://github.com/boostorg/build/commit/d312a161524213b7966eec440158f38fbaa497c2

Fixing Boost 1.81.0 compilation would probably enable boost but also poppler (that depends on boost 1.76 actually, should be upgraded to 1.81.0) as universal packages

Attachments (1)

main.log (80.0 KB) - added by kaamui 14 months ago.

Download all attachments as: .zip

Change History (12)

Changed 14 months ago by kaamui

Attachment: main.log added

comment:1 Changed 14 months ago by kaamui

Description: modified (diff)

comment:2 Changed 14 months ago by jmroot (Joshua Root)

Cc: mascguy added
Owner: set to michaelld
Port: boost181 added
Status: newassigned

comment:3 Changed 14 months ago by kaamui

Description: modified (diff)

comment:4 Changed 14 months ago by kaamui

Description: modified (diff)

comment:5 Changed 14 months ago by kaamui

Description: modified (diff)

comment:6 Changed 14 months ago by kaamui

Description: modified (diff)

comment:7 Changed 14 months ago by kaamui

https://patch-diff.githubusercontent.com/raw/macports/macports-ports/pull/17570.patch

Can be patched by simply editing the Portfile (see patch above), but leads to linker issues (a boost/@coroutine issue => https://github.com/boostorg/coroutine/issues/60, https://github.com/boostorg/context/issues/203)

Undefined symbols for architecture arm64:
:info:build   "_jump_fcontext", referenced from:
:info:build       boost::coroutines::detail::coroutine_context::jump(boost::coroutines::detail::coroutine_context&, void*) in coroutine_context.o
:info:build   "_make_fcontext", referenced from:
:info:build       boost::coroutines::detail::coroutine_context::coroutine_context(void (*)(boost::context::detail::transfer_t), boost::coroutines::detail::preallocated const&) in coroutine_context.o
:info:build       boost::coroutines::detail::coroutine_context::coroutine_context(void (*)(boost::context::detail::transfer_t), boost::coroutines::detail::preallocated const&) in coroutine_context.o
:info:build ld: symbol(s) not found for architecture arm64
Last edited 14 months ago by kaamui (previous) (diff)

comment:8 Changed 14 months ago by ryandesign (Ryan Carsten Schmidt)

Description: modified (diff)
Summary: boost 181@1.81.0+universal: "combined" is not a known value of feature <architecture> :info:build error: legal values: "x86" ... "arm+x86"boost181 @1.81.0+universal: "combined" is not a known value of feature <architecture> :info:build error: legal values: "x86" ... "arm+x86"

comment:9 Changed 14 months ago by kaamui

Using the script of Jesse in this thread, I was able to compile boost 1.81.0 as a universal binary.

It seems to be a configuration issue on boost's side, when using the arm+x86 option.

boost issue => https://github.com/boostorg/coroutine/issues/60

Maybe the linkflags option is helping the linker not to fail for coroutine_context, and is what's missing when arm+x86 option is used : ./b2 toolset=clang-darwin target-os=darwin architecture=arm abi=aapcs cxxflags="-arch arm64" cflags="-arch arm64" linkflags="-arch arm64" -a

in the main.log file L627, we can see that patches are applied for sysv architecture, where I'm on a arm64 (hence aapcs architecture). Maybe these patches are applied independently of the arch, maybe some equivalent patches are missing for aapcs architecture.

comment:10 Changed 14 months ago by kencu (Ken)

the script basically does what our muniversal PG does…

which may well be where all the boost versions are headed if we want universal to work properly.

Note: See TracTickets for help on using tickets.