Conversation
392ee48 to
8790d37
Compare
|
@gzm55 can you take a peek please? |
|
|
Release is imminent (3.9.13 is out today). Any way to apply proposed changes to PR? |
|
It’s 11PM here will try to update and get it to you before I zzzz. |
|
No need to rush; I can wait 24h or more. I was just interested in "is it gonna happen" or not. 😄 |
ed8627e to
b69b486
Compare
I've updated the PR, is that more in line with what you were thinking? I don't have access to work laptop atm so no easy access to arm64 boxes. |
|
Yes, this looks more in line with what summoned @gzm55 proposed:
|
|
Will leave it here. Seems patching is not correct? Also, keep in mind to keep in sync the two workflows (early preview and release). |
It worked prior to me making the suggested changes. It could be due to referencing 2.2.5 in |
in this .c code, we can select different required GLIBC_ versions by checking arch macros, like #if defined(__x86_64__)
...
#elif defined(__aarch64__)
...
#else
# error("")
#endif |
c3890f1 to
6b562a0
Compare
|
This will need to wait till Monday, QEMU just isn't playing ball on my desktop. My work laptop died last week and pick new one up Monday when I will have access to arm64 based arch to run this without emulation. |
|
No problem, just ping here (or on #1500) if you are done or just want to punt on it for 1.0.4 |
|
Maven 3.9.14 goes out tomorrow, and from that point nothing stops the mvnd 1.0.4 release. Please ping should we wait for this or not. |
|
Punting this from 1.0.4, that is about to be released. |
This comment was marked as off-topic.
This comment was marked as off-topic.
|
This PR is for Linux ARM but having Windows ARM would be nice thing. But, I don't think this "patching of glibc" applies to Windows ARM.... Origin and root issue #823 |
|
First laptop was DOA. Back on this now :) |
c57e562 to
339d7a7
Compare
|
Had some other stuff that needed doing so mainly got solid time after work. This should be it, tested compiling on a amd64 and arm64 box. Fun fact |
|
FYI, master uses Nisse: It has OS detector like properties, we may backport Nisse usaget to 1.x build too.... Example of emitted (and hence, available) properties (take a peek at |
|
@gzm55 can you take a peek? I am fine to make 1.0.5 with this single change to cover linux-arm as well. |
|
@KrisJohnstone that said, these are not the only changes needed... as this adds new release variant..... for example https://github.com/apache/maven-mvnd/blob/mvnd-1.x/.github/workflows/release.yaml |
Added. |
gnodet
left a comment
There was a problem hiding this comment.
Review
Overall, this PR is well-structured and follows the established patterns for glibc version pinning. The approach of targeting glibc 2.17 for aarch64 is sound (it's the earliest possible version for that architecture). Nice work!
Must Fix
BUG: Verification regex in release.yaml allows glibc up to 2.28, not 2.17
In release.yaml, the ARM64 verification step has:
objdump -T client/target/mvnd | grep GLIBC_ | grep -v 'GLIBC_\([01]\|2\.[0-9]\|2\.2[012345678]\)[^0-9]' || err=$?This allows GLIBC versions 2.20 through 2.28 — far more permissive than the stated goal of glibc 2.17. The regex 2\.2[012345678] matches 2.20 to 2.28, which has nothing to do with 2.17.
Compare with the early-access.yaml version which is correct:
objdump -T client/target/mvnd | grep GLIBC_ | grep -v 'GLIBC_\([01]\|2\.[0-9]\|2\.1[017]\)[^0-9]' || err=$?The release.yaml regex should match the early-access.yaml one. A release build could silently ship with symbols requiring glibc 2.18–2.28, defeating the purpose of the glibc-lowering work.
Suggestions (non-blocking)
- Consider using
2\.1[0-7]instead of2\.1[017]in the early-access regex to allow the full range 2.10–2.17 for robustness (any symbol versioned at 2.12–2.16 would also be acceptable). - A brief comment in
glibc.redef.aarch64noting that 2.17 is the minimum because it's the first glibc with aarch64 support would help future maintainers.
|
Fixed. |
gnodet
left a comment
There was a problem hiding this comment.
The release.yaml regex fix in the latest commit addresses the concern. LGTM.
Port ARM64 build support from mvnd-1.x PR #1527 to master: - Add ubuntu-24.04-arm runner for Linux ARM64 builds - Fix broken matrix exclude rules (macos-latest→macos-15, windows-latest→windows-2025) - Add glibc.redef.aarch64 pinning all symbols to GLIBC_2.17 - Add #if defined(__aarch64__) conditional in dynamic-libc-start.c - Add uname -m arch detection in gcc wrapper script - Add linux-aarch64-image-only-require-glibc-2.17 profile in client/pom.xml - Add ARM64 glibc patch/verify steps in CI workflows - Add linux-aarch64 release asset upload steps Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Added support for ARM64 builds using glibc 2.17.