Bootstrap Fails with _ffi_call symbol not found on macOS ARM build
Summary
I'm bootstrapping ghc 9.4.1 using hadrian for deployment on MacPorts. On Apple silicon, the bootstrap build fails with the error:
:info:build Command line: _build/stage1/bin/haddock --verbosity=0 -B_build/stage1/lib --lib=_build/stage1/lib --odir=_build/doc/html/libraries/ghc-prim-0.9.0 --dump-interface=_build/doc/html/libraries/ghc-prim-0.9.0/ghc-prim.haddock --html --hyperlinked-source --hoogle --quickjump '--title=ghc-prim-0.9.0: GHC primitives' --prologue=_build/doc/html/libraries/ghc-prim-0.9.0/haddock-prologue.txt --optghc=-D__HADDOCK_VERSION__=2270 --optghc=-hisuf --optghc=dyn_hi --optghc=-osuf --optghc=dyn_o --optghc=-hcsuf --optghc=dyn_hc --optghc=-fPIC --optghc=-dynamic --optghc=-hide-all-packages --optghc=-no-user-package-db '--optghc=-package-env -' '--optghc=-this-unit-id ghc-prim-0.9.0' '--optghc=-package-id rts-1.0.2' --optghc=-i --optghc=-i/opt/local/var/macports/build/_opt_local_ports_lang_ghc/ghc/work/src/ghc-9.4.1/_build/stage1/libraries/ghc-prim/build --optghc=-i/opt/local/var/macports/build/_opt_local_ports_lang_ghc/ghc/work/src/ghc-9.4.1/_build/stage1/libraries/ghc-prim/build/autogen --optghc=-i/opt/local/var/macports/build/_opt_local_ports_lang_ghc/ghc/work/src/ghc-9.4.1/libraries/ghc-prim --optghc=-Irts/include --optghc=-I_build/stage1/libraries/ghc-prim/build --optghc=-I/opt/local/var/macports/build/_opt_local_ports_lang_ghc/ghc/work/src/ghc-9.4.1/_build/stage1/lib/aarch64-osx-ghc-9.4.1/rts-1.0.2/include --optghc=-optP-include --optghc=-optP_build/stage1/libraries/ghc-prim/build/autogen/cabal_macros.h --optghc=-optc--target=arm64-apple-darwin --optghc=-outputdir --optghc=_build/stage1/libraries/ghc-prim/build --optghc=-this-unit-id --optghc=ghc-prim --optghc=-XHaskell2010 --optghc=-no-global-package-db --optghc=-package-db=/opt/local/var/macports/build/_opt_local_ports_lang_ghc/ghc/work/src/ghc-9.4.1/_build/stage1/lib/package.conf.d --optghc=-ghcversion-file=rts/include/ghcversion.h --optghc=-ghcversion-file=rts/include/ghcversion.h --optghc=-Wno-deprecated-flags --optghc=-Wno-trustworthy-s
afe libraries/ghc-prim/GHC/CString.hs libraries/ghc-prim/GHC/Classes.hs libraries/ghc-prim/GHC/Debug.hs libraries/ghc-prim/GHC/Magic.hs libraries/ghc-prim/GHC/Magic/Dict.hs libraries/ghc-prim/GHC/Prim/Exception.hs libraries/ghc-prim/GHC/Prim/Ext.hs libraries/ghc-prim/GHC/Prim/Panic.hs libraries/ghc-prim/GHC/Prim/PtrEq.hs _build/stage1/libraries/ghc-prim/build/GHC/PrimopWrappers.hs libraries/ghc-prim/GHC/Tuple.hs libraries/ghc-prim/GHC/Types.hs _build/stage1/libraries/ghc-prim/build/GHC/Prim.hs +RTS -t_build/stage1/haddock-timing-files/ghc-prim.t --machine-readable -RTS
:info:build ===> Command failed with error code: -6
:info:build dyld[89207]: symbol not found in flat namespace (_ffi_call)
:info:build Command failed
:info:build Build failed.
:info:build Command failed: export GHC=/opt/local/var/macports/build/_opt_local_ports_lang_ghc/ghc/work/bootstrap/lib/ghc-9.4.1/bin/ghc PATH=/opt/local/var/macports/build/_opt_local_ports_lang_ghc/ghc/work/bootstrap/lib/ghc-9.4.1/bin:/opt/local/var/macports/build/_opt_local_ports_lang_ghc/ghc/work/bin:/opt/local/bin:/opt/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin MACPORTS_LEGACY_SUPPORT_DISABLED=1 CC=/usr/bin/clang CXX=/usr/bin/clang++; hadrian -j8 docs
:info:build Exit code: 1
:error:build Failed to build ghc: command execution failed
The build flags specify:
--with-ffi-includes=${prefix}/include \
--with-ffi-libraries=${prefix}/lib \
I have already installed the ARM-native libffi
library, which is universal:
file /opt/local/lib/libffi.8.dylib
/opt/local/lib/libffi.8.dylib: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit x86_64 dynamically linked shared library, flags:<NOUNDEFS|DYLDLINK|TWOLEVEL|NO_REEXPORTED_DYLIBS>] [arm64:Mach-O 64-bit arm64 dynamically linked shared library, flags:<NOUNDEFS|DYLDLINK|TWOLEVEL|NO_REEXPORTED_DYLIBS>]
Steps to reproduce
I'm bootstrapping per the documentation here and for hadrian
, essentially:
./boot
autoconf
hadrian -j24 stage1:lib:base
hadrian -j24 docs
hadrian install
Expected behavior
A successful ghc
bootstrap, as observed on x86_64
architectures with the exact same code.
Environment
- GHC version used: 9.4.1
Optional:
macOS 12.5.1 21G83 arm64 Xcode 13.4.1 / Build version 13F100