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

Provide prebuilt binaries for alpine arm64 environments #1049

Open
jensmeindertsma opened this issue Nov 23, 2021 · 8 comments
Open

Provide prebuilt binaries for alpine arm64 environments #1049

jensmeindertsma opened this issue Nov 23, 2021 · 8 comments

Comments

@jensmeindertsma
Copy link

jensmeindertsma commented Nov 23, 2021

When working in a Docker context on an Apple Silicon Mac, it is common to use the alpine image. When I want to install Node.js on this image, I may want to use volta to install Node manually instead of using node:alpine to get my image size as small as possible. Currently this doesn't work because Volta fails to install with the error message Sorry! Volta currently only provides pre-built binaries for x86_64 architectures.. Is it possible to provide a prebuilt binary for alpine arm64 environments?

@jensmeindertsma
Copy link
Author

I would love to help out with implementing this. Seems like I just need to add some stuff to the GitHub release workflow?

@charlespierce
Copy link
Contributor

@jensmeindertsma We'd absolutely love a contribution to add more pre-built binaries! There are a few pieces that would be needed:

  1. Add compilation to the GitHub actions workflow that creates the production builds. Since GH actions runners only provide a few hosts, this will likely have to happen with cargo cross. We already do this for the MacOS ARM builds, so it should be analogous.
  2. Update the install script dev/unix/volta-install.sh to know how to check for that build (and not hard error on other architectures). Again we already did this for MacOS, so I would expect it to be analogous.

One possible source of complication is that on Linux, we currently compile against different versions of OpenSSL in order to support each. I'm not sure how the dynamic linking works with cargo cross, so there will likely need to be some investigation into which version is needed and if there is anything special we have to do with the compilation.

@jensmeindertsma
Copy link
Author

Okay, let me see how far I get and I'll report back 😊

@satackey
Copy link

Any update on this?
I'm going to try to do this.

@jensmeindertsma
Copy link
Author

Any update on this? I'm going to try to do this.

@satackey there's a work in progress PR at #1165 that removes the need to bundle OpenSSL with Volta. If we can get those binaries to compile, we can easily add support for ARM and MUSL environments if we keep the ./ci/cargo.sh and ./ci/install-build-tools.sh files which are needed to build properly for MUSL and ARM. The main blocker on that PR is how do we install LLVM 14 and Clang 14 from source? You can see the origin of ./ci/install-build-tools.sh here: https://github.com/briansmith/ring/blob/32b2c6c39ef459aad47f476fe9139b8d57532ab1/mk/install-build-tools.sh#L82

The reason we can't just copy that over is that we need to build on a CentOS 6 image so we can support older glibc versions. So if you can manage to install LLVM 14 and Clang 14 from source on the CentOS 6 image, that would be major progress!

@abihf
Copy link

abihf commented Nov 3, 2022

@nevir
Copy link

nevir commented Feb 6, 2023

Curious if there's any movement on this / @abihf's PR?

@TheJaredWilcurt
Copy link

So it looks like #1372 was closed and #1696 was merged instead (5 days ago). Here's hoping that means a curl install for ARM Linux starts working soon.

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.

6 participants