Files
Guillaume Nodet 99bd55d8dc
Early Access / Default build (without GraalVM) (push) Has been cancelled
Early Access / Build with GraalVM on macos-15 (push) Has been cancelled
Early Access / Build with GraalVM on ubuntu-24.04 (push) Has been cancelled
Early Access / Build with GraalVM on ubuntu-24.04-arm (push) Has been cancelled
Early Access / Build with GraalVM on windows-2025 (push) Has been cancelled
Early Access / Site build (push) Has been cancelled
Fix CI: GraalVM 25 native builds with glibc backward compatibility (#1611)
* Pin graalvm/setup-graalvm to ASF-allowed hash and bump Java to 25

ASF policy requires GitHub Actions to use commit hashes instead of tags
for third-party actions. The graalvm/setup-graalvm@v1 tag reference was
blocked, causing CI startup failures.

Additionally, native-maven-plugin 1.1.0 (upgraded via dependabot while
CI was down) downloads reachability metadata with a schema that GraalVM
for JDK 22 does not support. Bumping to JDK 25 resolves this.

Also fix release.yaml source job: remove undefined GRAALVM_VERSION
reference and add missing distribution parameter.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Fix spotless formatting and make glibc patching resilient to GraalVM 25

- Fix indentation in BuildTimeEventSpy.java (spotless violation)
- Replace hardcoded ls of libjvm.a/liblibchelper.a with find in the
  glibc patching scripts — these files were removed in GraalVM 25

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Fix Spotless formatting, drop macOS Intel, fix matrix excludes

- Fix DaemonCrashTest.java Spotless formatting violation
- Remove macOS Intel (macos-15-intel) from CI matrices since Oracle
  dropped macOS x64 support in GraalVM 25.0.2+
- Fix exclude rules that referenced macos-latest/windows-latest
  instead of macos-15/windows-2025, causing extra unwanted matrix jobs
- Remove darwin-amd64 deploy steps from release workflow

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Upgrade Quarkus to 3.35.3 and Java 17 in type-description test

Quarkus 3.10.0's Byte Buddy does not support JDK 25 class file format,
causing test failures. Upgrade to 3.35.3 and set Java source/target to
17 (minimum required by modern Quarkus).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Upgrade maven-invoker-plugin to 3.10.1 in invoker test project

The bundled Groovy 4.0.31 in maven-invoker-plugin 3.10.1 supports
JDK 25 class file version 69, fixing the verify.groovy script failure.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Fix glibc compatibility for GraalVM 25 native builds

GraalVM 25 links against stat@GLIBC_2.33 which breaks backward
compatibility. Add stat symbol redefinition to pin it to older glibc
versions, and separate the glibc patching into arch-specific steps
(AMD64 targeting glibc 2.12, ARM64 targeting glibc 2.17).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Fix Linux native build: use ARM runner and find for GraalVM 25

- Use ubuntu-24.04-arm runner for ARM64 builds instead of os×arch
  matrix that always ran on x64
- Use runner.arch instead of matrix.arch for architecture detection
- Use find with 2>/dev/null for svm/clibraries paths since GraalVM 25
  removed libjvm.a and liblibchelper.a from that directory

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* ci: add stat() shim for glibc <2.33 compat and relax ldd checks

GraalVM 25 native-image calls stat() directly (compiled against
glibc 2.33+ headers where stat is a real function). On older glibc,
stat() was a macro expanding to __xstat(_STAT_VER, ...).

Add a stat-compat.c shim that provides stat() by calling __xstat(1, ...)
and link it into Scrt1.o so the symbol resolves at link time.

Also remove the hardcoded ldd library count check (expected 4 separate
libs: libc/libdl/librt/libpthread) since GraalVM 25 with
+StaticExecutableWithDynamicLibC only dynamically links libc.so.
The objdump GLIBC version check remains as the real guard.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* ci: fix shell syntax error in glibc patch comment

Remove parentheses from bash comment that were being interpreted
as shell syntax by the : (no-op) command.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* ci: add ARM64 glibc backward-compat profile and gcc wrapper

Add a Maven profile activated by target/graalvm-libs-for-glibc-2.17
that configures native-image to use the patched ARM64 libraries,
mirroring the existing x86_64 profile for glibc-2.12.

Add gcc-aarch64 wrapper that applies glibc.redef.aarch64 symbol
renaming during native-image's final link step.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* ci: fix aarch64 glibc symver directives in dynamic-libc-start.c

The .symver directives hardcoded x86_64 glibc symbol versions
(dlsym@GLIBC_2.2.5) which don't exist on aarch64 where the
earliest version is GLIBC_2.17. Make the directives conditional
on __aarch64__ to use the correct version tag per architecture.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-19 08:30:27 +02:00
..