Skip to content

Commit b69b486

Browse files
committed
👷 (feat): Add ARM64 Builds
1 parent 45bab8f commit b69b486

File tree

2 files changed

+49
-8
lines changed

2 files changed

+49
-8
lines changed

.github/workflows/early-access.yaml

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ jobs:
6363
fail-fast: false
6464
matrix:
6565
# binaries wanted: linux amd64, mac M1, mac intel, windows x86
66-
os: [ ubuntu-24.04, macos-15, macos-15-intel, windows-2025 ]
66+
os: [ ubuntu-24.04, ubuntu-22.04-arm, macos-15, macos-15-intel, windows-2025 ]
6767
runs-on: ${{ matrix.os }}
6868

6969
steps:
@@ -102,8 +102,8 @@ jobs:
102102
- name: 'Maven clean'
103103
run: ./mvnw clean -Dmrm=false -V -B -ntp -e
104104

105-
- name: 'Patch GraalVM libs for only requiring glibc 2.12'
106-
if: ${{ env.OS == 'linux' }}
105+
- name: 'Patch AMD64 GraalVM libs for only requiring glibc 2.12'
106+
if: ${{ env.OS == 'linux' && env.ARCH == 'amd64' }}
107107
shell: bash
108108
run: |
109109
mkdir -p client/target/graalvm-libs-for-glibc-2.12
@@ -123,6 +123,27 @@ jobs:
123123
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
124124
objcopy --redefine-syms=client/src/main/resources/glibc/glibc.redef client/target/graalvm-libs-for-glibc-2.12/Scrt1.o 2>/dev/null
125125
126+
- name: 'Patch ARM64 GraalVM libs for only requiring glibc 2.28'
127+
if: ${{ env.OS == 'linux' && env.ARCH == 'aarch64' }}
128+
shell: bash
129+
run: |
130+
mkdir -p client/target/graalvm-libs-for-glibc-2.28
131+
132+
: patch common libraries
133+
( find "$GRAALVM_HOME/lib/static/linux-aarch64/glibc" -name '*.a'
134+
ls -1 /lib/aarch64-linux-gnu/libz.a
135+
ls -1 "$GRAALVM_HOME/lib/svm/clibraries/linux-aarch64/libjvm.a"
136+
ls -1 "$GRAALVM_HOME/lib/svm/clibraries/linux-aarch64/liblibchelper.a"
137+
) | while IFS= read -r input; do
138+
output="client/target/graalvm-libs-for-glibc-2.28/$(basename -- "$input")"
139+
objcopy --redefine-syms=client/src/main/resources/glibc/glibc.redef -- "$input" "$output" 2>/dev/null
140+
done
141+
142+
: patch gcc startfile
143+
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
144+
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
145+
objcopy --redefine-syms=client/src/main/resources/glibc/glibc.redef client/target/graalvm-libs-for-glibc-2.28/Scrt1.o 2>/dev/null
146+
126147
- name: 'Build native distribution'
127148
run: ./mvnw verify -Pnative -Dmrm=false -V -B -ntp -e -s .mvn/release-settings.xml
128149

.github/workflows/release.yaml

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ jobs:
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:
@@ -74,8 +74,8 @@ jobs:
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

Comments
 (0)