-
Notifications
You must be signed in to change notification settings - Fork 192
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
Package release for Linux ARM64 #347
Comments
Well, not all of us have the hardware (and therefore the need) to make this work, but I think it would be a great addition to the project if you want to give this a shot! Like I mentioned in #236, I think this is a matter of modifying the CI workflow, the CI scripts, and (perhaps) the Makefile. Are you interested? We can discuss in more detail on Zulip if you prefer. |
I'm planning to tackle this soonish, since we're aiming to add Linux (x86_64 and ARM64) support to the .NET NativeAOT-LLVM CI. |
Would wasi-sdk take advantage of aarch64 github runners now? https://github.blog/2024-06-03-arm64-on-github-actions-powering-faster-more-efficient-build-systems/ |
Currently, the Makefile assumes the LLVM toolchain it builds can be executed natively to build `wasi-libc` etc., which isn't true when cross-compiling for another platform, but we can work around that by: 1. Building the native LLVM toolchain and using it to build everything else, as usual 2. Deleting that LLVM build and rebuilding (and reinstalling) it with `LLVM_CMAKE_FLAGS` set to cross compile 3. Rebuilding and reinstalling a cross-compiled `wasm-component-ld` 4. Building deb and tar files from the above Note that we now label the tarfiles `linux-amd64` and `linux-arm64`, respectively for clarity. The whole approach is a bit hacky, but GitHub is planning to roll out ARM64 runner support for open source projects later this year, at which point we can start building natively, so I don't think we need to invest a lot of effort into this. I've run CI in my fork and verified the artifact produced there works on my Ubuntu 24.04 ARM64 machine (Asahi Linux on an Apple M2 Pro). Note that I have not yet updated the `dockerbuild` CI step, so the `dist-ubuntu-bionic` artifacts do not yet include an ARM64 build; I'll experiment with that next. Fixes WebAssembly#236 Fixes WebAssembly#347 Signed-off-by: Joel Dice <joel.dice@fermyon.com>
Currently, the Makefile assumes the LLVM toolchain it builds can be executed natively to build `wasi-libc` etc., which isn't true when cross-compiling for another platform, but we can work around that by: 1. Building the native LLVM toolchain and using it to build everything else, as usual 2. Deleting that LLVM build and rebuilding (and reinstalling) it with `LLVM_CMAKE_FLAGS` set to cross compile 3. Rebuilding and reinstalling a cross-compiled `wasm-component-ld` 4. Building deb and tar files from the above Note that we now label the tarfiles `linux-amd64` and `linux-arm64`, respectively for clarity. The whole approach is a bit hacky, but GitHub is planning to roll out ARM64 runner support for open source projects later this year, at which point we can start building natively, so I don't think we need to invest a lot of effort into this. I've run CI in my fork and verified the artifact produced there works on my Ubuntu 24.04 ARM64 machine (Asahi Linux on an Apple M2 Pro). Fixes WebAssembly#236 Fixes WebAssembly#347 Signed-off-by: Joel Dice <joel.dice@fermyon.com>
This is done now from #429 |
I'm building directly on an arm64 linux machine and compiling llvm takes 60+ minutes so would be really helpful to have a release build.
Is there currently any plan for this? I see a similar, but apple-related issue here #236 as well as some mention of failed arm builds on linux in other tickets. Would be really helpful.
Cheers
The text was updated successfully, but these errors were encountered: