wasmcloud-otp icon indicating copy to clipboard operation
wasmcloud-otp copied to clipboard

[EPIC] wasmCloud OTP Platform Support

Open brooksmtownsend opened this issue 1 year ago • 3 comments

This issue serves as a larger epic tracking the release artifacts we produce, platforms wasmCloud is compatible with, and some specific dependencies that are necessary to run on specific platforms.

Current Release Artifacts

Release Binary Operating System Architecture Static Platform Dependencies CI/CD
wasmcloud_host_x86_64_linux_gnu Linux x86_64 glibc 2.29+, ca-certificates
wasmcloud_host_x86_64_linux_musl Linux x86_64 libgcc
wasmcloud_host_x86_64_darwin MacOS x86_64 N/A
wasmcloud_host_x86_64_windows.exe Windows x86_64 Windows 11 Home
wasmcloud_host_aarch64_linux_gnu Linux aarch64 glibc 2.29+, ca-certificates
wasmcloud_host_aarch64_linux_musl Linux aarch64 libgcc
wasmcloud_host_aarch64_darwin MacOS aarch64 N/A

Current remaining work in the release artifacts section

  • [x] Automatic CI/CD building of the aarch64-macos.tar.gz artifact
  • [x] Replace downloads of dynamically linked hosts with static hosts when available to maximize compatibility

Current remaining work in the future release artifacts section

  • [x] Static x86_64 MacOS builds to remove openssl dependency
  • [x] Static aarch64 MacOS builds to remove openssl dependency

brooksmtownsend avatar Apr 10 '23 19:04 brooksmtownsend

#616 is addressing many of these, just keep an eye out

brooksmtownsend avatar May 05 '23 15:05 brooksmtownsend

First, a note: static builds are not supported by Erlang at all. It is not possible to statically-link Erlang OTP, therefore static builds are technically impossible today if we keep using OTP. Static builds would only be possible if we used an alternative Erlang implementation to compile wasmcloud-otp, e.g. https://github.com/GetFirefly/firefly , which is experimental and does not have good support for Elixir yet

In https://github.com/wasmCloud/wasmcloud-otp/pull/616#issue-1689293596 we get artifacts with minimum possible amount of dependencies (NOTE, that e.g. Musl self-extracting binary is, indeed, statically-linked, but the actual executables are not, and cannot be, as outlined above), that is:

  • MacOS: none
  • Ubuntu/Debian:
    • ca-certificates - self-explanatory
  • Alpine:
    • libgcc - that's actually a NIF dependency, which is added by the Rust compiler https://github.com/rust-lang/rust/issues/82521
  • Windows: none

GNU build is compatible with Ubuntu 20.04 the earliest

All of these builds are produced by CI (including the Erlang distribution). MacOS ERTS are available pre-built at https://github.com/rvolosatovs/otp/releases/tag/OTP-25.3.2, the rest are automatically built if necessary, but in overwhelming majority of cases it should be fetched from cache

rvolosatovs avatar May 08 '23 13:05 rvolosatovs

For all intents and purposes, I think we have a great set of platforms here. I'm going to add the pinned label so that it won't get cleaned up by our stale issue bot and leave it as a good piece of information.

brooksmtownsend avatar May 16 '23 19:05 brooksmtownsend