Add Ubuntu 24.04 / 25.04 ARMHF support#99
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.