|
34 | 34 | strategy: |
35 | 35 | fail-fast: true |
36 | 36 | 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 ] |
39 | 39 | runs-on: ${{ matrix.os }} |
40 | 40 |
|
41 | 41 | steps: |
@@ -74,31 +74,51 @@ jobs: |
74 | 74 | - name: 'Maven clean' |
75 | 75 | run: ./mvnw clean -Dmrm=false -B -ntp -e |
76 | 76 |
|
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.28' |
| 78 | + if: runner.os == 'linux' && runner.arch == 'X64' |
79 | 79 | shell: bash |
80 | 80 | run: | |
81 | | - mkdir -p client/target/graalvm-libs-for-glibc-2.12 |
| 81 | + mkdir -p client/target/graalvm-libs-for-glibc-2.28 |
82 | 82 |
|
83 | 83 | : patch common libraries |
84 | 84 | ( find "$GRAALVM_HOME/lib/static/linux-amd64/glibc" -name '*.a' |
85 | 85 | ls -1 /lib/x86_64-linux-gnu/libz.a |
86 | 86 | ls -1 "$GRAALVM_HOME/lib/svm/clibraries/linux-amd64/libjvm.a" |
87 | 87 | ls -1 "$GRAALVM_HOME/lib/svm/clibraries/linux-amd64/liblibchelper.a" |
88 | 88 | ) | while IFS= read -r input; do |
89 | | - output="client/target/graalvm-libs-for-glibc-2.12/$(basename -- "$input")" |
| 89 | + output="client/target/graalvm-libs-for-glibc-2.28/$(basename -- "$input")" |
90 | 90 | objcopy --redefine-syms=client/src/main/resources/glibc/glibc.redef -- "$input" "$output" 2>/dev/null |
91 | 91 | done |
92 | 92 |
|
93 | 93 | : patch gcc startfile |
94 | 94 | 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 |
95 | | - 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 |
96 | | - objcopy --redefine-syms=client/src/main/resources/glibc/glibc.redef client/target/graalvm-libs-for-glibc-2.12/Scrt1.o 2>/dev/null |
| 95 | + ld -r /lib/x86_64-linux-gnu/Scrt1.o client/target/dynamic-libc-start.o -o client/target/graalvm-libs-for-glibc-2.28/Scrt1.o |
| 96 | + objcopy --redefine-syms=client/src/main/resources/glibc/glibc.redef client/target/graalvm-libs-for-glibc-2.28/Scrt1.o 2>/dev/null |
| 97 | +
|
| 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 |
97 | 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 |
98 | 118 | - name: 'Build native distribution' |
99 | 119 | run: ./mvnw verify -Pnative -Dmrm=false -B -ntp -e -DskipTests -s .mvn/release-settings.xml |
100 | 120 |
|
101 | | - - name: 'Verify native binary for only requiring glibc 2.12' |
| 121 | + - name: 'Verify native binary for only requiring glibc 2.28' |
102 | 122 | if: ${{ env.OS == 'linux' }} |
103 | 123 | shell: bash |
104 | 124 | run: | |
|
0 commit comments