-
Notifications
You must be signed in to change notification settings - Fork 17
Add Ubuntu 24.04 / 25.04 ARMHF support #99
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
Conversation
|
@Gitii I tested a build on Debian 13 armhf. It fails to compile Ruby 3.2.9. Any chance you can take a look at it? https://github.com/OpenVoxProject/puppet-runtime/actions/runs/21296496686/job/61303836044 (let me know if the link doesn't work) |
|
@bastelfreak Sure, I will look into it. It looks like |
|
The pipeline has an Ubuntu 24.04 arm64 (provided by github) and then starts a Debian 13 armhf container (I think). I don't know how big the differences between arm64 and armhf are / if we can configure anything in the container / the ruby build to get this working. Github doesn't provide armhf runners. |
|
@bastelfreak The runners are fine, the docker container is using the From the github runner: When running locally (my machine):
As far as I can tell, you are using the |
|
I updated the workflow, but we still get the same error: https://github.com/OpenVoxProject/puppet-runtime/actions/runs/21296496686/job/61315115215 |
|
I think qemu isn't used if the host and container image are both arm, no matter if it is arm64 and armhf. I'm testing it now with an x86 host: https://github.com/OpenVoxProject/puppet-runtime/actions/runs/21300920352/job/61318167563 |
|
This is wild 😅... That explains the So the solution is: Just build it on a x64 host and use full emulation! Can you please update the workflow:
Something like this: *-aarch64 | *-arm64) # <- remove armhf here
runner="ubuntu-24.04-arm"
shell="bash"
;;
*-armhf) # add whole new switch statement or ...
runner="ubuntu-24.04" # arm32 on x64 with full emulation to avoid 32bit userspace on arm64
shell="bash"
;;
*)
runner="ubuntu-24.04" # ... fall through and use default
shell="bash"
;; |
|
@bastelfreak You were faster 👍 |
|
not sure if it's a good or bad sign that claude had the same idea as me :D |
|
based on the incredible slow performance we now know qemu is involved. It feels a bit weird to run this on X86, when an ARM runner would be available. with the qemu software emulation it's now even slower than building on MacOS & Windows 😞 . let's see if it passes. |
|
@bastelfreak It worked for debian 13 and only took 3 hours (but failed for ubuntu targets). I assume because the vanagon platform defaults are missing. I have created a PR in vanagon to add the platform defaults. Hope that helps. |
|
We might be able to utilize an arm64 host using qemu in static mode: # Force 32-bit personality AND use qemu-arm-static explicitly
docker run --platform linux/arm/v7 \
-v /usr/bin/qemu-arm-static:/usr/bin/qemu-arm-static \ # <---
--entrypoint /usr/bin/qemu-arm-static \ # <---
<image> /bin/sh -c "your build"
That does sound like it should be faster than full emulation. No idea if vanagon supports this level of customization. |
36a9d2a to
9fd3d29
Compare
|
Debian 13 & Ubuntu 24.04 / 25.04 ARMHF build in ~ 11 minutes: https://github.com/OpenVoxProject/puppet-runtime/actions/runs/21314583198/job/61355491587 @Sharpie suggested that we can force docker into a 32 bit mode: https://github.com/Sharpie/puppet-build-experiment/blob/master/resources/bolt/tasks/configure_builder.sh#L3-L14 Which I implemented here: OpenVoxProject/shared-actions#68. I updated #99 to add the Ubuntu configs. |
No description provided.