ARM is becoming more relevant due to SBCs, servers and PinePhone/Book/Tab.
Could you consider supporting armhf and arm64 in CI either through emulation or native buildbots?
Thanks!
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Child items
...
Show closed items
Linked items
0
Link issues together to show that they're related.
Learn more.
Older Raspberry Pi use armhf and newer Raspberry Pi 3 and 4 use arm64 (also called AArch64). Arm64 is probably would make most sense in a effort/benefit point of view.
@federico do you have yml which provides or extends salsa-ci.yml with pipeline "Build ARM64" / .build-package-arm64?
Otherwise I'm thinking about trying to do it with Qemu or something as Otto suggested.
EDIT: Also very relevant due to Librem 5, OnePlus 6/6T and Pocophone F1 phones. Not mentioning fact that ARM64 architecture seems to be lighter and better designed than older amd64.
I can locally also build emulated Docker container with these steps:
sudo apt install qemu-user-static qemu-system-aarch64cp /usr/bin/qemu-aarch64-static .echo '{"experimental": true}' | sudo tee /etc/docker/daemon.jsonsudo systemctl restart dockerdocker pull --platform aarch64 debian:bullseyeecho 'FROM --platform=linux/aarch64 debian:bullseyeCOPY ./qemu-aarch64-static /usr/bin/qemu-aarch64-staticRUN uname -a' | tee Dockerfiledocker build .Sending build context to Docker daemon 19.74MBStep 1/3 : FROM --platform=linux/aarch64 debian:bullseye ---> 454fddc9ff45Step 2/3 : COPY ./qemu-aarch64-static /usr/bin/qemu-aarch64-static ---> 2c1f66d151e7Step 3/3 : RUN uname -a ---> [Warning] The requested image's platform (linux/arm64) does not match the detected host platform (linux/amd64) and no specific platform was requested ---> Running in aa7837ec1ee5Linux aa7837ec1ee5 4.15.0-143-generic #147-Ubuntu SMP Wed Apr 14 16:10:11 UTC 2021 aarch64 GNU/LinuxRemoving intermediate container aa7837ec1ee5 ---> e003c4b59006Successfully built e003c4b59006docker run -it e003c4b59006 bashWARNING: The requested image's platform (linux/arm64) does not match the detected host platform (linux/amd64) and no specific platform was requestedroot@8c52794d8852:/# uname -aLinux 8c52794d8852 4.15.0-143-generic #147-Ubuntu SMP Wed Apr 14 16:10:11 UTC 2021 aarch64 GNU/Linux
I am however not able to run a aarch64 directly like this:
docker run -it aarch64/debian bashUnable to find image 'aarch64/debian:latest' locallylatest: Pulling from aarch64/debian7189468c6fc4: Pull complete Digest: sha256:903b5655da8689b6cdc7465ea118f674d4f1820a52109aeb2623b1c8e6225420Status: Downloaded newer image for aarch64/debian:latestWARNING: The requested image's platform (linux/arm64) does not match the detected host platform (linux/amd64) and no specific platform was requestedstandard_init_linux.go:219: exec user process caused: no such file or directory
I must prepare the emulated container locally myself.
No, it does not matter. As said, I am unable to run a aarch64 image directly. Docker does not run any emulation (not at least the version I have). I have to make a image myself that is amd64 but runs aarch64 on the inside.
The commands are there, you can play around with them yourself and repeat the same steps with any variation you want. Good way to learn how they work.
I'm sorry I havent had the time to participate in this discussion, thanks for all the input.
We've had offers for arm hardware several times, but for us to start providing arm support we need these runners to be configured as shared so everyone can access it (as users you can only set them up for the projects you have access to), which needs to be done by salsa admins. This means they need to maintain them, and it's understandable they have some requirements for that.
@santiago asked them again about this a few days ago:
<santiago> waldi, formorer, Ganneff, dear salsa admins: what would be the requirements for new shared runners (of archs other thant x86)?<santiago> it would be great to have pipeline jobs that could run on other archs, and before looking for any, it would be great to have your input about the requirements/what would be needed.[..]<waldi> arm can be handled via aws after some internal amazon issues are resolved[..]<santiago> it would be great to have pipeline jobs that could run on other archs, and before looking for any, it would be great to have your input about the requirements/what would be needed.<waldi> SPI maintaining the contract with the vendor. some sponsorship to allow usage. supported by docker machine to provide ephemeral vm. currently google and aws fulfill that
while shared arm runners would be terrific, just providing arm64 CI images would be terrific. We can use a project qemu-user runner but the stock debian arm images are not suitable for the salsa CI jobs.
i created a related MR that sets up a cross-building job (!293 (merged)).
the default job does not create any artifacts (but that could of course be added easily, either in the central pipeline, or by enhancing your project's pipeline).
currently the crossbuild test is setup to build for arm64, but that could be changed to whatever architecture you want using a single variable.