Skip to content
This repository was archived by the owner on Jan 3, 2024. It is now read-only.

CI: use Docker to build binaries for linux-arm64#191

Merged
jesec merged 1 commit into
mainfrom
pr/docker-linuxcross
May 27, 2021
Merged

CI: use Docker to build binaries for linux-arm64#191
jesec merged 1 commit into
mainfrom
pr/docker-linuxcross

Conversation

@jesec

@jesec jesec commented May 27, 2021

Copy link
Copy Markdown
Contributor

Recently it comes to my attention that Github Actions image installs
experimental C++ standard library from an unsupported PPA, which
effectively breaks assumptions of binary compatibility for the OS
(in this case, Ubuntu 18.04+).

Unfortunately, as a result, the Github Actions environment can no
longer be trusted to compile proper binaries.

This change adds a Dockerfile that composes a proper Ubuntu 18.04
environment from official "ubuntu:bionic" image, and builds Node
binaries in it.

Refs: actions/runner-images#3376, actions/runner-images#3432, actions/runner-images#3459

Recently it comes to my attention that Github Actions image installs
experimental C++ standard library from an unsupported PPA, which
effectively breaks assumptions of binary compatibility for the OS
(in this case, Ubuntu 18.04+).

Unfortunately, as a result, the Github Actions environment can no
longer be trusted to compile proper binaries.

This change adds a Dockerfile that composes a proper Ubuntu 18.04
environment from official "ubuntu:bionic" image, and builds Node
binaries in it.

Bug: actions/runner-images#3432
@jesec
jesec requested review from leerob and robertsLando May 27, 2021 05:30
@jesec

jesec commented May 27, 2021

Copy link
Copy Markdown
Contributor Author

I am also thinking about using Red Hat's llvm-toolset-rhel7, which has cross compiling capabilities and allows us to extend the compatibility of arm64 binaries to EL 7+ and Ubuntu 14.04+. However, I have some concerns about the binary compatibility between LLVM-made Node binaries and GCC-made (prebuilt) Node bindings.

edit: compiler alone is not enough. The image does not include a full cross-capable toolchain (arm64 headers/libs of C++ STL, etc.) unfortunately.

It is also an option to use CentOS / Oracle Linux 7 arm64 toolchain (Red Hat does not provide one for arm64), in line with the upstream and our x64 binaries (already using RHEL7 toolset). However, there is no cross toolchain, and as I explained in #124, we can't use emulation to build such a large project. We have to get a native arm64 machine for CI if we want to choose this option.

@robertsLando

Copy link
Copy Markdown
Contributor

We have to get a native arm64 machine for CI if we want to choose this option.

I think that @leerob could ask to @vercel team if they could provide us an arm64 machine and setup a custom github runner.

Agree with all your ideas @jesec

@robertsLando robertsLando left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Hope the build time will not be too long now

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants