The macos-15 runner is arm64. Previously, cp38 was the first Python in the cibuildwheel matrix, and because the cp38 macOS installer is x86_64-only, cibuildwheel ran the build under \`arch -x86_64\`, which also caused CMake to build libcapnp as x86_64. Subsequent Python versions then reused that cached x86_64 libcapnp. After dropping cp38, cp39 is built first and CMake auto-detects the host arch (arm64), producing an arm64 libkj/libcapnp. The x86_64 wheel then silently links via \`-undefined dynamic_lookup\` (the linker just ignores arm64 archive members) and fails at dlopen time with "symbol not found in flat namespace ... AsyncIoStream::getsockopt". Set CMAKE_OSX_ARCHITECTURES to the matrix arch on macOS so libcapnp is always built for the wheel's target architecture.
4.0 KiB
4.0 KiB