-
Notifications
You must be signed in to change notification settings - Fork 27
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
Please add aarch64 (ARM 64-bit) builds #7
Comments
Indeed. I didn't do it so far because I don't know how to do the cross build. |
Travis CI as aarch64 workers but I don't know about GitHub Flows. |
OK, I could do it on travis then. I was looking at the manylinux repo how they generate these images but I can't find any reference to |
https://github.com/pypa/manylinux, search for |
Got it finally. It's in a specific branch, the manylinux2014. They are using Travis as well as you suggested. The only issue left is how to merge the results from GitHub workflow & Travis in a single release, e.g. having x86_64 (GitHub workflow) and aarch64 (Travis) published under a single python3.8 tag/release. But anyway, in the worst case I could publish them separately. |
Hi, I reopen this issue because I am trying to build an appimage for armv7. I have tried to download and use the manylinux_2014 appimages that are in the release page here, but actually I am having issues when passing them to python-appimage. Could somebody please help me to figure out the correct procedure to follow to build the app for armv7? Thanks in advance |
Hello @netphantom, Unfortunately, armv7 is not yet supported. You can check the documentation for available combinations of Python versions, Manylinux tags and architectures. Manylinux Docker images for armv7 do exist. However, the problem is that I didn't succeed so far in cross-packaging those as an AppImage using GitHub CI. The last time that I tried, the resulting AppImages crashed when running them through an armv7 emulator ( If someone has experience with this topic, I am very open to a PR. Note that one would first need to produce an amrv7 AppImage of patchelf. My unsuccessful attempt at this can be found under the dev branch of the latter project. |
any updates on this? |
Hi @niess. My employer uses the app images for some internal tools; as a way of running newer Pythons on older OSes with little hassle. We might be interested in sponsoring (paying) for you to do the work to add support for aarm64. I didn't see an email address on your profile, so I'm reaching out here. Could you contact me, please? Thanks. |
Hello @mgmartian, thanks for proposing :) I am registered on GitHub with my company (CNRS) email. This is why, I am reluctant to expose it. But, my Gmail is visible on PyPI (in the "creator" metadata). The main issue for me is time. Currently, there does not seem to be a straightforward workflow using GitHub CI. I tried, but failed, through emulation (with That said, I am willing to make a new attempt (e.g. over a week-end, out of my working hours). Things might have evolved since my last attempt. But, one more complication is that I do not have a native ARM for testing the produced AppImages :( |
Hi @niess, I really appreciate all of your work on x86 -- it has saved us a lot of time / trouble in our work. 🤩. I certainly understand not wanting to spend the time / money (!) on this; particularly if it's not something you personally need. Probably I'm going to have to do this on my own, internally to our company. Here are a few ideas, if you / someone else is going to tackle this: Idea 1: Idea 2: |
I indeed have a "free" account, and therefore no access to GitHub ARM runners. But anyway, I might have a more simple solution, which is basically "cross-building". Actually, it is possible to extract the Manylinux Python runtimes from an ARM Docker image, but using a x86_64 host. The idea is not to run the Manylinux Docker image, but to simply dump its content to a folder, and then to relocate (extract) the Python runtime. In addition, one has to edit the RPATH of ELF files to match the relocation. And, it looks like patchelf actually can edit ELF files for another architecture. I tested this idea yesterday (the proof-of-concept is over there), and it seems to work on my side (emulating ARM with qemu). That is, I could run (through qemu) an aarch64 Python runtime extracted from my x86_64 host. To complete this proof-of-concept, it would be great if you could check that the extracted runtime (here) properly works on a native ARM. If you do have access to this? |
I just pulled down your extracted runtime and tested on native apple silicon with fedora 40.
Seems to work great. |
Awesome @niess! What a pleasant surprise! I was able to download this tarball and run it on an ARM Neoverse N1 system we have running Rocky Linux 9.3. I built a venv, installed a few packages and poked around. Seemed to work great! |
Thanks for testing @williamkborn @mgmartian . I would call this a success then :) Now, I'll have to see how to properly integrate this strategy into Meanwhile, you might use the extract-manylinux example for manually producing tarballs of the Python runtime (I added a few instructions that for). Note however that, packaging those tarballs as AppImages would not be 100% functional (e.g. concerning venv). But, the extracted tarballs should work. |
Hello, |
Please add aarch64 (ARM 64-bit) builds.
https://github.com/pypa/manylinux seems to have a Docker container for it.
The text was updated successfully, but these errors were encountered: