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 ARM64 (AArch64) binary release archives for macOS and Windows #1479

Merged
merged 4 commits into from
Jul 30, 2024

Conversation

EliahKagan
Copy link
Member

@EliahKagan EliahKagan commented Jul 30, 2024

As mentioned in #1478 (comment), this PR does some of the tasks for #1478. I believe this actually is a complete fix for that bug as described. But I suggest keeping the #1478 open and treating that issue more broadly, to encompass both this and other near-future changes. I've opened this PR now so that the core confusion can be avoided in the next release even if there are delays in doing the rest and even if the next release is sooner than anticipated.

Although I suggest scoping this to just those tasks, I'm willing to broaden this PR to include building universal binaries and just keep this PR open for a while until I can get that done. (But there may be some delays, even if nothing goes wrong, because I'm out of private runner minutes. That's probably a blessing in disguise, since this may not be the best way to work on this, even aside from that limitation. But it does mean I'll have to find another way to approach it.)

Details on the produced archives, analogous to the information there, can be see in this gist, which may make even the most important part more readable than it can be here, but here's that part:

C:\Users\ek\tmp> file */gix* */ein*
gitoxide-lean-v0.38.0-alpha.6-aarch64-apple-darwin/gix:            Mach-O 64-bit arm64 executable, flags:<NOUNDEFS|DYLDLINK|TWOLEVEL|PIE|HAS_TLV_DESCRIPTORS>
gitoxide-lean-v0.38.0-alpha.6-aarch64-pc-windows-msvc/gix.exe:     PE32+ executable (console) Aarch64, for MS Windows, 5 sections
gitoxide-lean-v0.38.0-alpha.6-i686-pc-windows-msvc/gix.exe:        PE32 executable (console) Intel 80386, for MS Windows, 4 sections
gitoxide-lean-v0.38.0-alpha.6-x86_64-apple-darwin/gix:             Mach-O 64-bit x86_64 executable, flags:<NOUNDEFS|DYLDLINK|TWOLEVEL|PIE|HAS_TLV_DESCRIPTORS>
gitoxide-lean-v0.38.0-alpha.6-x86_64-pc-windows-gnu/gix.exe:       PE32+ executable (console) x86-64 (stripped to external PDB), for MS Windows, 10 sections
gitoxide-lean-v0.38.0-alpha.6-x86_64-pc-windows-msvc/gix.exe:      PE32+ executable (console) x86-64, for MS Windows, 5 sections
gitoxide-max-pure-v0.38.0-alpha.6-aarch64-apple-darwin/gix:        Mach-O 64-bit arm64 executable, flags:<NOUNDEFS|DYLDLINK|TWOLEVEL|PIE|HAS_TLV_DESCRIPTORS>
gitoxide-max-pure-v0.38.0-alpha.6-aarch64-pc-windows-msvc/gix.exe: PE32+ executable (console) Aarch64, for MS Windows, 11 sections
gitoxide-max-pure-v0.38.0-alpha.6-arm-unknown-linux-gnueabihf/gix: ELF 32-bit LSB pie executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 4.19.21, stripped
gitoxide-max-pure-v0.38.0-alpha.6-i686-pc-windows-msvc/gix.exe:    PE32 executable (console) Intel 80386, for MS Windows, 4 sections
gitoxide-max-pure-v0.38.0-alpha.6-x86_64-apple-darwin/gix:         Mach-O 64-bit x86_64 executable, flags:<NOUNDEFS|DYLDLINK|TWOLEVEL|PIE|HAS_TLV_DESCRIPTORS>
gitoxide-max-pure-v0.38.0-alpha.6-x86_64-pc-windows-gnu/gix.exe:   PE32+ executable (console) x86-64 (stripped to external PDB), for MS Windows, 10 sections
gitoxide-max-pure-v0.38.0-alpha.6-x86_64-pc-windows-msvc/gix.exe:  PE32+ executable (console) x86-64, for MS Windows, 5 sections
gitoxide-max-pure-v0.38.0-alpha.6-x86_64-unknown-linux-musl/gix:   ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), static-pie linked, stripped
gitoxide-max-v0.38.0-alpha.6-aarch64-apple-darwin/gix:             Mach-O 64-bit arm64 executable, flags:<NOUNDEFS|DYLDLINK|TWOLEVEL|PIE|HAS_TLV_DESCRIPTORS>
gitoxide-max-v0.38.0-alpha.6-aarch64-pc-windows-msvc/gix.exe:      PE32+ executable (console) Aarch64, for MS Windows, 5 sections
gitoxide-max-v0.38.0-alpha.6-i686-pc-windows-msvc/gix.exe:         PE32 executable (console) Intel 80386, for MS Windows, 4 sections
gitoxide-max-v0.38.0-alpha.6-x86_64-apple-darwin/gix:              Mach-O 64-bit x86_64 executable, flags:<NOUNDEFS|DYLDLINK|TWOLEVEL|PIE|HAS_TLV_DESCRIPTORS>
gitoxide-max-v0.38.0-alpha.6-x86_64-pc-windows-gnu/gix.exe:        PE32+ executable (console) x86-64 (stripped to external PDB), for MS Windows, 10 sections
gitoxide-max-v0.38.0-alpha.6-x86_64-pc-windows-msvc/gix.exe:       PE32+ executable (console) x86-64, for MS Windows, 5 sections
gitoxide-small-v0.38.0-alpha.6-aarch64-apple-darwin/gix:           Mach-O 64-bit arm64 executable, flags:<NOUNDEFS|DYLDLINK|TWOLEVEL|PIE|HAS_TLV_DESCRIPTORS>
gitoxide-small-v0.38.0-alpha.6-aarch64-pc-windows-msvc/gix.exe:    PE32+ executable (console) Aarch64, for MS Windows, 5 sections
gitoxide-small-v0.38.0-alpha.6-i686-pc-windows-msvc/gix.exe:       PE32 executable (console) Intel 80386, for MS Windows, 4 sections
gitoxide-small-v0.38.0-alpha.6-x86_64-apple-darwin/gix:            Mach-O 64-bit x86_64 executable, flags:<NOUNDEFS|DYLDLINK|TWOLEVEL|PIE|HAS_TLV_DESCRIPTORS>
gitoxide-small-v0.38.0-alpha.6-x86_64-pc-windows-gnu/gix.exe:      PE32+ executable (console) x86-64 (stripped to external PDB), for MS Windows, 10 sections
gitoxide-small-v0.38.0-alpha.6-x86_64-pc-windows-msvc/gix.exe:     PE32+ executable (console) x86-64, for MS Windows, 5 sections
gitoxide-lean-v0.38.0-alpha.6-aarch64-apple-darwin/ein:            Mach-O 64-bit arm64 executable, flags:<NOUNDEFS|DYLDLINK|TWOLEVEL|PIE|HAS_TLV_DESCRIPTORS>
gitoxide-lean-v0.38.0-alpha.6-aarch64-pc-windows-msvc/ein.exe:     PE32+ executable (console) Aarch64, for MS Windows, 5 sections
gitoxide-lean-v0.38.0-alpha.6-i686-pc-windows-msvc/ein.exe:        PE32 executable (console) Intel 80386, for MS Windows, 4 sections
gitoxide-lean-v0.38.0-alpha.6-x86_64-apple-darwin/ein:             Mach-O 64-bit x86_64 executable, flags:<NOUNDEFS|DYLDLINK|TWOLEVEL|PIE|HAS_TLV_DESCRIPTORS>
gitoxide-lean-v0.38.0-alpha.6-x86_64-pc-windows-gnu/ein.exe:       PE32+ executable (console) x86-64 (stripped to external PDB), for MS Windows, 10 sections
gitoxide-lean-v0.38.0-alpha.6-x86_64-pc-windows-msvc/ein.exe:      PE32+ executable (console) x86-64, for MS Windows, 5 sections
gitoxide-max-pure-v0.38.0-alpha.6-aarch64-apple-darwin/ein:        Mach-O 64-bit arm64 executable, flags:<NOUNDEFS|DYLDLINK|TWOLEVEL|PIE|HAS_TLV_DESCRIPTORS>
gitoxide-max-pure-v0.38.0-alpha.6-aarch64-pc-windows-msvc/ein.exe: PE32+ executable (console) Aarch64, for MS Windows, 11 sections
gitoxide-max-pure-v0.38.0-alpha.6-arm-unknown-linux-gnueabihf/ein: ELF 32-bit LSB pie executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 4.19.21, stripped
gitoxide-max-pure-v0.38.0-alpha.6-i686-pc-windows-msvc/ein.exe:    PE32 executable (console) Intel 80386, for MS Windows, 4 sections
gitoxide-max-pure-v0.38.0-alpha.6-x86_64-apple-darwin/ein:         Mach-O 64-bit x86_64 executable, flags:<NOUNDEFS|DYLDLINK|TWOLEVEL|PIE|HAS_TLV_DESCRIPTORS>
gitoxide-max-pure-v0.38.0-alpha.6-x86_64-pc-windows-gnu/ein.exe:   PE32+ executable (console) x86-64 (stripped to external PDB), for MS Windows, 10 sections
gitoxide-max-pure-v0.38.0-alpha.6-x86_64-pc-windows-msvc/ein.exe:  PE32+ executable (console) x86-64, for MS Windows, 5 sections
gitoxide-max-pure-v0.38.0-alpha.6-x86_64-unknown-linux-musl/ein:   ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), static-pie linked, stripped
gitoxide-max-v0.38.0-alpha.6-aarch64-apple-darwin/ein:             Mach-O 64-bit arm64 executable, flags:<NOUNDEFS|DYLDLINK|TWOLEVEL|PIE|HAS_TLV_DESCRIPTORS>
gitoxide-max-v0.38.0-alpha.6-aarch64-pc-windows-msvc/ein.exe:      PE32+ executable (console) Aarch64, for MS Windows, 5 sections
gitoxide-max-v0.38.0-alpha.6-i686-pc-windows-msvc/ein.exe:         PE32 executable (console) Intel 80386, for MS Windows, 4 sections
gitoxide-max-v0.38.0-alpha.6-x86_64-apple-darwin/ein:              Mach-O 64-bit x86_64 executable, flags:<NOUNDEFS|DYLDLINK|TWOLEVEL|PIE|HAS_TLV_DESCRIPTORS>
gitoxide-max-v0.38.0-alpha.6-x86_64-pc-windows-gnu/ein.exe:        PE32+ executable (console) x86-64 (stripped to external PDB), for MS Windows, 10 sections
gitoxide-max-v0.38.0-alpha.6-x86_64-pc-windows-msvc/ein.exe:       PE32+ executable (console) x86-64, for MS Windows, 5 sections
gitoxide-small-v0.38.0-alpha.6-aarch64-apple-darwin/ein:           Mach-O 64-bit arm64 executable, flags:<NOUNDEFS|DYLDLINK|TWOLEVEL|PIE|HAS_TLV_DESCRIPTORS>
gitoxide-small-v0.38.0-alpha.6-aarch64-pc-windows-msvc/ein.exe:    PE32+ executable (console) Aarch64, for MS Windows, 5 sections
gitoxide-small-v0.38.0-alpha.6-i686-pc-windows-msvc/ein.exe:       PE32 executable (console) Intel 80386, for MS Windows, 4 sections
gitoxide-small-v0.38.0-alpha.6-x86_64-apple-darwin/ein:            Mach-O 64-bit x86_64 executable, flags:<NOUNDEFS|DYLDLINK|TWOLEVEL|PIE|HAS_TLV_DESCRIPTORS>
gitoxide-small-v0.38.0-alpha.6-x86_64-pc-windows-gnu/ein.exe:      PE32+ executable (console) x86-64 (stripped to external PDB), for MS Windows, 10 sections
gitoxide-small-v0.38.0-alpha.6-x86_64-pc-windows-msvc/ein.exe:     PE32+ executable (console) x86-64, for MS Windows, 5 sections

As alluded to in the task list in #1478, this includes refactoring of the workflow to make architectures more explicit. See 076c262 on this and its rationale.

They corresponded one-to-one, with `build` holding short names.
But the short names were:

- Not needed, not having appeared in releases.

- Misleading, e.g. by not carrying an architecture, the short name
  `macos` may have obscured that a major architecture wasn't
  covered.

- Limiting, in that short names are harder to come up with when
  more architectures on the same operating systems are built for,
  as will be done soon.
This should be broadly useful, but see GitoxideLabs#1478 for specific context.
Copy link
Member

@Byron Byron left a comment

Choose a reason for hiding this comment

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

Thanks a lot for all your help with this! Amazing work!

@Byron Byron merged commit ca90e9c into GitoxideLabs:main Jul 30, 2024
19 checks passed
@EliahKagan EliahKagan deleted the aarch64 branch July 30, 2024 07:44
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 this pull request may close these issues.

2 participants