Missing aarch64 wheels #387

Closed
opened 2026-01-29 20:43:06 +00:00 by claunia · 7 comments
Owner

Originally created by @odidev on GitHub (Apr 28, 2021).

Problem:
On aarch64 architecture, pip install Brotli downloads the source distribution of it and build it. Directly downloading the wheel file and installing the same is quite efficient rather than building and installing from the source code. Also, it requires development environments to be installed on the user's machine.

Overall, it is painful to install Brotli on aarch64 as it doesn't have aarch64 wheels on PyPi.

Resolution:
pip should be able to download aarch64 wheels from PyPi and install same.

@eustas and team, please let me know your interest here. I can help you in building and uploading aarch64 wheels on PyPi.

Originally created by @odidev on GitHub (Apr 28, 2021). Problem: On aarch64 architecture, `pip install Brotli` downloads the source distribution of it and build it. Directly downloading the wheel file and installing the same is quite efficient rather than building and installing from the source code. Also, it requires development environments to be installed on the user's machine. Overall, it is painful to install `Brotli` on aarch64 as it doesn't have aarch64 wheels on PyPi. Resolution: `pip` should be able to download aarch64 wheels from PyPi and install same. @eustas and team, please let me know your interest here. I can help you in building and uploading aarch64 wheels on PyPi.
Author
Owner

@anthrotype commented on GitHub (Apr 28, 2021):

IIUC aarch64 is the tag that gets used for the new macs with Apple M1 chip, right?

yes, it'd be great if you could help setting up the CI for builing aarch64 wheels. We build them in this repo: https://github.com/google/brotli-wheels

@anthrotype commented on GitHub (Apr 28, 2021): IIUC aarch64 is the tag that gets used for the new macs with Apple M1 chip, right? yes, it'd be great if you could help setting up the CI for builing aarch64 wheels. We build them in this repo: https://github.com/google/brotli-wheels
Author
Owner

@odidev commented on GitHub (Apr 29, 2021):

IIUC aarch64 is the tag that gets used for the new macs with Apple M1 chip, right?

Yes, you are correct. I have raised PR: https://github.com/google/brotli-wheels/pull/13 to release aarch64 Linux wheels.

@odidev commented on GitHub (Apr 29, 2021): > IIUC aarch64 is the tag that gets used for the new macs with Apple M1 chip, right? Yes, you are correct. I have raised PR: https://github.com/google/brotli-wheels/pull/13 to release aarch64 Linux wheels.
Author
Owner

@anthrotype commented on GitHub (Aug 11, 2021):

before I got confused between aarch64 and arm64 wheels: the former tag is used only for linux, whereas the latter is only used for macOS, even though the architecture is basically the same.

Anyway, I made some progress over at https://github.com/google/brotli-wheels/, it's now building both aarch64 (linux) and arm64 (mac) wheels. However the aarch64 linux wheels require emulation (via qemu) and the build is super slow... (about 11 minutes for each python, and there's 5 of them from 3.6 through to 3.10, so it takes about 1 hour, still ongoing while I'm writing this)

Apparently this is a know issue and @odidev himself is working on making cibuildwheel able to cross-compile aarch64 on a x86_64 machine.

I'm tempted to not build aarch64 for now, until https://github.com/pypa/cibuildwheel/issues/598 is done..

@anthrotype commented on GitHub (Aug 11, 2021): before I got confused between `aarch64` and `arm64` wheels: the former tag is used only for linux, whereas the latter is only used for macOS, even though the architecture is basically the same. Anyway, I made some progress over at https://github.com/google/brotli-wheels/, it's now building both aarch64 (linux) and arm64 (mac) wheels. However the aarch64 linux wheels require emulation (via qemu) and the build is super slow... (about 11 minutes for each python, and there's 5 of them from 3.6 through to 3.10, so it takes about 1 hour, still ongoing while I'm writing this) Apparently this is a know issue and @odidev himself is working on making cibuildwheel able to cross-compile aarch64 on a x86_64 machine. I'm tempted to not build aarch64 for now, until https://github.com/pypa/cibuildwheel/issues/598 is done..
Author
Owner

@anthrotype commented on GitHub (Aug 11, 2021):

i'm now running the aarch64 jobs in distinct parallel jobs, the total runtime is a little more than 20 minutes to build around 34 wheels (for multiple combinations of pythons and platforms)
https://github.com/google/brotli-wheels/actions/runs/1120860508
I think that's ok after all. If we didn't run the brotli test suite it could go even faster, but it's probably good to keep testing, as the upstream repo doesn't test all possible combinations (rightly so).

@anthrotype commented on GitHub (Aug 11, 2021): i'm now running the aarch64 jobs in distinct parallel jobs, the total runtime is a little more than 20 minutes to build around 34 wheels (for multiple combinations of pythons and platforms) https://github.com/google/brotli-wheels/actions/runs/1120860508 I think that's ok after all. If we didn't run the brotli test suite it could go even faster, but it's probably good to keep testing, as the upstream repo doesn't test all possible combinations (rightly so).
Author
Owner

@anthrotype commented on GitHub (Aug 11, 2021):

I have uploaded to PyPI the aarch64 linux wheels as well as the mac universal2 wheels (containing both x86_64 and arm64 binaries). You can find them at https://pypi.org/project/Brotli/1.0.9/#files
I downloaded them from the artifact.zip file that the brotli-wheels Github Actions pipeline generated (https://github.com/google/brotli-wheels/actions/runs/1120967704), and then uploaded them manually using twine.

Upon the next brotli release, they should be uploaded automatically (provided I manage to set the encrypted secret https://github.com/google/brotli-wheels/issues/5)

@anthrotype commented on GitHub (Aug 11, 2021): I have uploaded to PyPI the `aarch64` linux wheels as well as the mac `universal2` wheels (containing both `x86_64` and `arm64` binaries). You can find them at https://pypi.org/project/Brotli/1.0.9/#files I downloaded them from the artifact.zip file that the brotli-wheels Github Actions pipeline generated (https://github.com/google/brotli-wheels/actions/runs/1120967704), and then uploaded them manually using twine. Upon the next brotli release, they should be uploaded automatically (provided I manage to set the encrypted secret https://github.com/google/brotli-wheels/issues/5)
Author
Owner

@anthrotype commented on GitHub (Aug 11, 2021):

@eustas this issue can be closed, thanks

@anthrotype commented on GitHub (Aug 11, 2021): @eustas this issue can be closed, thanks
Author
Owner

@eustas commented on GitHub (Aug 12, 2021):

@anthrotype Thanks to you!

@eustas commented on GitHub (Aug 12, 2021): @anthrotype Thanks to you!
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/brotli#387