Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Arm wheels missing from latest release #2408

Open
westonpace opened this issue Apr 10, 2024 · 19 comments · May be fixed by #2434
Open

Arm wheels missing from latest release #2408

westonpace opened this issue Apr 10, 2024 · 19 comments · May be fixed by #2434

Comments

@westonpace
Copy link

These files are present in the 3.10 release but the equivalent files are missing from the 3.11 release:

h5py-3.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
h5py-3.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
h5py-3.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
h5py-3.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
@westonpace
Copy link
Author

Further context: #2405 (comment)

westonpace added a commit to lancedb/lance that referenced this issue Apr 10, 2024
See comment. This should fix our CI on arm. Can revert this once
h5py/h5py#2408 is resolved.
@glenn-jocher
Copy link

We've seen the same problem at https://github.com/ultralytics/ultralytics. Missing aarch64 wheels have crashed the Arm64 Docker deployments that install tensorflow (with h5py as a required tensorflow dependency).

We've temporarily resolved this by avoiding h5py==3.11.0 installs on aarch64 in ultralytics/ultralytics#9956

@lpsinger
Copy link

cibuildwheel provides instructions for how to do aarch64 builds under qemu emulation on the free tier of GitHub Actions.

@tacaswell
Copy link
Member

I would be happy to review a PR moving us to cibuildwheel on GHA.

This issue highlights some of the inherent problems in the way wheels get built (see https://pypackaging-native.github.io for more details).

@lpsinger
Copy link

I would be happy to review a PR moving us to cibuildwheel on GHA.

I would find that a little daunting for h5py because of the many different old CI workflows this would have to replace: Travis, Azure Pipelines, and the existing nightly GH Actions wheel job.

But all you really have to do is add this to your pyproject.toml file, and cibuildwheel will do the rest for you:

[tool.cibuildwheel.linux]
# Build wheels for aarch64 under emulation.
archs = ["auto", "aarch64"]

@aragilar
Copy link
Member

My concern with using GHA with QEMU via cibuildwheel is that from what I can see it doesn't actually test the wheel, whereas our current setup across the different provided does do that (that was the reason to use travis, to test on native hardware). Also, given we've previously had issues specific to non-x86 systems, I'm really wary of publishing something that is untested on its native platform (or just straight up untested).

I think if someone either provides a PR which replaces travis with a CI provider who provides native ARM64 (e.g. what's the state of ARM MacOS on GHA, and can we run a linux VM on there?), or works out how to run the entire flow inside QEMU (so we do the build+test on ARM64), I would be inclined to review it (not speaking for any of the other maintainers, but I'd rather a native platform, just so we're not bitten by any emulation bugs).

@lpsinger
Copy link

My concern with using GHA with QEMU via cibuildwheel is that from what I can see it doesn't actually test the wheel

Yes, it does test the wheels built under emulation. Here are three packages that I work on that build Linux aarch64 wheels under QEMU emulation on GitHub actions; in all cases cibuildwheel tests the wheels built under emulation.

@aragilar
Copy link
Member

pypa/cibuildwheel#1771 suggests this won't work for h5py, as we also have custom manylinux wheels 😞

@lpsinger
Copy link

pypa/cibuildwheel#1771 suggests this won't work for h5py, as we also have custom manylinux wheels 😞

Do you mean to say, it won't work for h5py because you have a custom manylinux Docker image?

@aragilar
Copy link
Member

Yep, images, not wheels (and now I'm going to bed, obviously too tired to write logical sentences).

@lpsinger
Copy link

It's odd that they are having a problem with pypa/cibuildwheel#1771 given that this works with the default manylinux Docker images. Perhaps there is a problem with the metadata for their particular Docker images?

@Edward-Knight
Copy link

Not immediately useful or relevant, but perhaps a maintainer could sign up for the private beta of native arm runners: https://resources.github.com/devops/accelerate-your-cicd-with-arm-and-gpu-runners-in-github-actions/
Also apparently this may leave beta later this year?

@tacaswell
Copy link
Member

but perhaps a maintainer could sign up for the private beta of native arm runners:

Done, but from the language on the form they are looking for paid early adopters 🤣

@njzjz
Copy link

njzjz commented Apr 21, 2024

For anyone who encounters this issue in the CI, setting

export PIP_PREFER_BINARY=1

will download a wheel from an old version.

@DDxPlague
Copy link

Looks like Github is looking to add more folks in in Jun/July.

https://github.com/orgs/community/discussions/19197#discussioncomment-9167725

In the meantime if @AWSjswinney and I can swing some credits for an AWS Graviton self-hosted runner, would you be willing to get the build working on that for now? And then when the managed runners are released, move to a self managed runner?

@joerick
Copy link

joerick commented Apr 26, 2024

pypa/cibuildwheel#1771 suggests this won't work for h5py, as we also have custom manylinux wheels 😞

Hello there, I spotted the back-link from that issue. Curious if you have actually hit this issue or just assuming you will? Many of cibuildwheel's users use custom manylinux images in emulation without problems, but I'd like to know if it's a wider issue.

@AWSjswinney
Copy link

From #2414:

If you are at AWS @AWSjswinney does this mean aarch64 h5py is critical to something at AWS? If so, you may be able to help us solve the issue with building aarch64 wheels by sponsoring some CI cycles on travis CI.

@tacaswell We reached out to TravisCI and they let us know that you should have credits again. Can you check please?

devinrsmith added a commit to devinrsmith/deephaven-server-docker that referenced this issue May 9, 2024
h5py is unable to be installed on our arm64 images, see h5py/h5py#2408
@hoechenberger
Copy link

Hello, sorry for asking, but I, too, ran into the problem of missing wheels for aarch64 (running a Docker container on my Apple Silicon machine). I'm not sure I fully understand the above conversation – are there plans to provide aarch64 wheels in the future? What is the expected timeframe? Thank you very much for your time and hard work!

@larsoner larsoner linked a pull request May 27, 2024 that will close this issue
@larsoner
Copy link
Contributor

Over in #2434, using emulation at least builds nightly wheels for aarch64. Maybe that could be used somehow, but it's at least a proof of concept.

@neutrinoceros neutrinoceros linked a pull request May 30, 2024 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.