Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Build both x86 and ARM wheels on macOS.
This fills the one remaining gap in the approach that was already there: the install name of
libomp
. It turns out that universal2 dylibs are just two libraries effectively joined together, all the metadata is separate. So the install name of the ARM copy was different from the x86 copy (because brew installs ARM and x86 to different locations). This meant that the relocation/repair into the wheel would only work for the x86 portion, leaving the ARM portion unrelocated, meaning libomp would not be found at runtime.The rest of the approach is as before. Construct a universal2 version of
libomp
and build a universal2 version oflibgraphblas
. The rest is cross-compiled by cibuildwheel.We could easily build a universal2 wheel instead of separate x86 and arm, but some sources are suggesting better compatibility with old
pip
with separate wheels.When github/roadmap#528 is available (currently listed as Q4 2023) then a native build will be a better choice.
Note that as of today there is no way to automatically test Apple Sillicon wheels via GitHub Actions. The x86 runner cannot test them (ARM chips can run x86 code via Rosetta2, but not vice versa). This will remain true until the native ARM runners are available. However nearly all possible issues will show up in the x86 wheels too.
See #81