For now, building an universal2 release (with both architectures in one release) seems to be problematic for two reasons:
While (from what it looks like?) PyInstaller can in theory build an arm64 release on a x86_64 Mac, we cannot (smoke) test it.
We cannot build such an universal wheel on an M1 machine (where we could smoke-test both architectures thanks to Rosetta2?) either: GitHub Actions only provides M1 runners with macOS 14 Sonoma, however, we need to build with the oldest supported macOS version, which for now will be macOS 12 Monterey.
In practice, it seems to fail with PyInstaller.utils.osx.IncompatibleBinaryArchError: /Users/user938406/qutebrowser/.tox/pyinstaller/lib/python3.9/site-packages/yaml/_yaml.cpython-39-darwin.so is incompatible with target arch x86_64 (has arch: arm64)! because PyYAML does not have universal wheels.
In the future (once we drop PyYAML, or it upgrades to an universal wheel, or we find a workaround), we could explore building an universal wheel on macOS 12, but then having a separate macOS 14 M1 job that only does the smoke test (and upload).
universal2
release (with both architectures in one release) seems to be problematic for two reasons:PyInstaller.utils.osx.IncompatibleBinaryArchError: /Users/user938406/qutebrowser/.tox/pyinstaller/lib/python3.9/site-packages/yaml/_yaml.cpython-39-darwin.so is incompatible with target arch x86_64 (has arch: arm64)!
because PyYAML does not have universal wheels.In the future (once we drop PyYAML, or it upgrades to an universal wheel, or we find a workaround), we could explore building an universal wheel on macOS 12, but then having a separate macOS 14 M1 job that only does the smoke test (and upload).
Originally posted by @The-Compiler in https://github.com/qutebrowser/qutebrowser/issues/6478#issuecomment-2161476710