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

Add AArch64 support #31

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft

Conversation

ZhongRuoyu
Copy link
Member

@ZhongRuoyu ZhongRuoyu commented Nov 16, 2024

This brings AArch64 support and allows us to build binaries for bootstrapping glibc on any AArch64 Linux system.

The newly added AArch64 image is based on centos:7 as it ships glibc 2.17, the first glibc release to support AArch64 1.

Changes split into #32

I've also bumped most of the tools to a newer version that builds without additional patches/hacks. Notably:

  • GCC is still on 9.5.0 because it still works, and later versions (that I tested) don't build on Debian Wheezy (the x86_64 image) because the host GCC is too old.
  • Python is not on 3.12 or 3.13 because <stdatomic.h> is needed but not provided by Debian Wheezy's host toolchain.

The changes here have been tested on both architectures. The binaries built here can support building glibc 2.35 in centos:7 on AArch64 Linux.

Footnotes

  1. https://sourceware.org/glibc/wiki/Release/2.17

- container: debian7
- arch: x86_64
runs-on: ubuntu-latest
# TODO: add aarch64 when available
Copy link
Member

Choose a reason for hiding this comment

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

Sorry, I'd rather we didn't add aarch64 in here until we have CI to test it (and same for Portable Ruby).

@Bo98
Copy link
Member

Bo98 commented Nov 17, 2024

LGTM in general.

I'm happy to either:

  • Merge most changes here except the first commit then open a second PR with that (given the other commits are architecture agnostic and are just version bumps etc), or;
  • Hold the whole PR until we're ready for arm64

For Portable Ruby we have already have full arm64 support in the formulae (except adding the [email protected] dependency because it didn't exist yet) but have held off any CI workflow changes. Though the changes required there were minimal.

GitHub Actions arm64 support ETA is early 2025 (delayed from Q4 2024).

@Bo98 Bo98 added the in progress Issue or pull request is active and should ignore stale rules label Nov 17, 2024
@ZhongRuoyu
Copy link
Member Author

Merge most changes here except the first commit then open a second PR with that (given the other commits are architecture agnostic and are just version bumps etc)

Given the branch name, existing discussions, etc. of this PR, let me do the opposite: I split the architecture agnostic changes into #32.

@MikeMcQuaid
Copy link
Member

Is AArch64 == arm64 on Linux? If so: to avoid confusion: can we try to always call it the same thing 😅.

@ZhongRuoyu
Copy link
Member Author

Is AArch64 == arm64 on Linux? If so: to avoid confusion: can we try to always call it the same thing 😅.

Yes, they both refer to 64-bit ARM but AArch64 is more commonly used in Linux land (uname -m returns aarch64 as opposed to arm64 on macOS). Bottles for arm64 Linux are identified by aarch64_linux too. I'll try to disambiguate this in the future!

@MikeMcQuaid
Copy link
Member

@ZhongRuoyu Thanks for explaining! Thought this was adding Another Linux ARM 😁

@Bo98
Copy link
Member

Bo98 commented Nov 18, 2024

Yeah we've yet to technically make aarch64 == arm64 in Homebrew/brew code. It just happens to work given most systems agree on the naming and we haven't needed to worry about compatibility of things between incompatible systems (macOS and Linux).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
in progress Issue or pull request is active and should ignore stale rules
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants