bytecodealliance / wasmtime

A fast and secure runtime for WebAssembly
https://wasmtime.dev/
Apache License 2.0
15.22k stars 1.28k forks source link

Add riscv-64 to the supported architectures of the install script #7580

Closed afro-coder closed 10 months ago

afro-coder commented 10 months ago

Thanks for filing a feature request! Please fill out the TODOs below.

Feature

TODO: Brief description of the feature/improvement you'd like to see in Cranelift/Wasmtime.

The install script currently doesn't allow me to install a riscv-64 program

Benefit

TODO: What is the value of adding this in Cranelift/Wasmtime? What problems does it solve?

Ease of installation for riscv devices

Implementation

TODO: Do you have an implementation plan, and/or ideas for data structures or algorithms to use?

I'm unable to locate the install script curl https://wasmtime.dev/install.sh -sSf | bash

Alternatives

TODO: What are the alternative implementation approaches or alternative ways to solve the problem that this feature would solve? How do these alternatives compare to this proposal?

afonso360 commented 10 months ago

I started working on this. Updating the script was fairly easy. However I've ran into an issue with the arch name being different in the releases vs what the OS identifies locally.

Locally I'm running Debian 13 (trixie), and uname -m identifies the architecture as riscv64, but on our release binaries we tag them as riscv64gc, which is the target triple name for our target.

This causes the script to attempt to download a file that does not exist.

I'm not entirely sure where we should fix this. Do we update our release names, or should I try to fix this up in the script? (cc: @alexcrichton)

afro-coder commented 10 months ago

Hi, thanks for making that change, where is the script located to make these changes?

bjorn3 commented 10 months ago

https://github.com/bytecodealliance/wasmtime.dev/blob/gh-pages/install.sh

alexcrichton commented 10 months ago

I'd probably recommend a case / esac statement which canonicalizes known architecture names that distros print into the architecture names that we expect in Wasmtime. We can try to match distros but I suspect we'll inevitably get things wrong (like this) or one distro won't match another (no known case yet), so having a pass where we inspect uname and go from there is probably the way to go.