Skip to content
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

Closed
JaydenElliott opened this issue Sep 4, 2023 · 4 comments
Closed

Package release for Linux ARM64 #347

JaydenElliott opened this issue Sep 4, 2023 · 4 comments

Comments

@JaydenElliott
Copy link

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

@abrown
Copy link
Collaborator

abrown commented Sep 16, 2023

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.

@dicej
Copy link
Contributor

dicej commented Jun 6, 2024

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.

@sparker-arm
Copy link

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/

dicej added a commit to dicej/wasi-sdk that referenced this issue Jun 8, 2024
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>
dicej added a commit to dicej/wasi-sdk that referenced this issue Jun 10, 2024
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>
@alexcrichton
Copy link
Collaborator

This is done now from #429

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants