3434 strategy :
3535 fail-fast : true
3636 matrix :
37- # binaries wanted: linux amd64, mac intel, mac M1, windows x86
38- os : [ ubuntu-24.04, macos-15-intel, macos-15, windows-2025 ]
37+ # binaries wanted: linux amd64, linux arm64, mac intel, mac M1, windows x86
38+ os : [ ubuntu-24.04, ubuntu-22.04-arm, macos-15-intel, macos-15, windows-2025 ]
3939 runs-on : ${{ matrix.os }}
4040
4141 steps :
7474 - name : ' Maven clean'
7575 run : ./mvnw clean -Dmrm=false -B -ntp -e
7676
77- - name : ' Patch GraalVM libs for only requiring glibc 2.12'
78- if : ${{ env.OS == 'linux' }}
77+ - name : ' Patch AMD64 GraalVM libs for only requiring glibc 2.12'
78+ if : runner.os == 'linux' && runner.arch == 'X64'
7979 shell : bash
8080 run : |
8181 mkdir -p client/target/graalvm-libs-for-glibc-2.12
@@ -95,10 +95,30 @@ jobs:
9595 ld -r /lib/x86_64-linux-gnu/Scrt1.o client/target/dynamic-libc-start.o -o client/target/graalvm-libs-for-glibc-2.12/Scrt1.o
9696 objcopy --redefine-syms=client/src/main/resources/glibc/glibc.redef client/target/graalvm-libs-for-glibc-2.12/Scrt1.o 2>/dev/null
9797
98+ - name : ' Patch ARM64 GraalVM libs for only requiring glibc 2.28'
99+ if : runner.os == 'linux' && runner.arch == 'ARM64'
100+ shell : bash
101+ run : |
102+ mkdir -p client/target/graalvm-libs-for-glibc-2.28
103+
104+ : patch common libraries
105+ ( find "$GRAALVM_HOME/lib/static/linux-aarch64/glibc" -name '*.a'
106+ ls -1 /lib/aarch64-linux-gnu/libz.a
107+ ls -1 "$GRAALVM_HOME/lib/svm/clibraries/linux-aarch64/libjvm.a"
108+ ls -1 "$GRAALVM_HOME/lib/svm/clibraries/linux-aarch64/liblibchelper.a"
109+ ) | while IFS= read -r input; do
110+ output="client/target/graalvm-libs-for-glibc-2.28/$(basename -- "$input")"
111+ objcopy --redefine-syms=client/src/main/resources/glibc/glibc.redef -- "$input" "$output" 2>/dev/null
112+ done
113+
114+ : patch gcc startfile
115+ gcc -O3 -Os -Wall -Wextra -Werror -Wconversion -Wsign-conversion -Wcast-qual -pedantic -c -o client/target/dynamic-libc-start.o client/src/main/resources/glibc/dynamic-libc-start.c
116+ ld -r /lib/aarch64-linux-gnu/Scrt1.o client/target/dynamic-libc-start.o -o client/target/graalvm-libs-for-glibc-2.28/Scrt1.o
117+ objcopy --redefine-syms=client/src/main/resources/glibc/glibc.redef client/target/graalvm-libs-for-glibc-2.28/Scrt1.o 2>/dev/null
98118 - name : ' Build native distribution'
99119 run : ./mvnw verify -Pnative -Dmrm=false -B -ntp -e -DskipTests -s .mvn/release-settings.xml
100120
101- - name : ' Verify native binary for only requiring glibc 2.12 '
121+ - name : ' Verify native binary for only requiring glibc 2.28 '
102122 if : ${{ env.OS == 'linux' }}
103123 shell : bash
104124 run : |
0 commit comments