Skip to content

Commit 2412e5b

Browse files
authored
Merge pull request #5 from lightningrodlabs/feat/aarch64
Add `aarch64-unknown-linux-gnu` target
2 parents 4871e55 + 49fb1d5 commit 2412e5b

File tree

8 files changed

+133
-1484
lines changed

8 files changed

+133
-1484
lines changed

.github/workflows/CI.yml

Lines changed: 69 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -44,16 +44,37 @@ jobs:
4444
build: |
4545
yarn build --target aarch64-apple-darwin
4646
strip -x *.node
47-
# - host: ubuntu-latest
48-
# target: aarch64-unknown-linux-gnu
49-
# docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-aarch64
50-
# build: yarn build --target aarch64-unknown-linux-gnu
47+
- host: ubuntu-latest
48+
target: aarch64-unknown-linux-gnu
49+
# docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-aarch64
50+
build: |
51+
# We don't actually need zig currently
52+
# curl --output zig-linux-x86_64-0.13.0.tar.xz https://ziglang.org/download/0.13.0/zig-linux-x86_64-0.13.0.tar.xz
53+
# tar xf zig-linux-x86_64-0.13.0.tar.xz
54+
# export PATH=$PATH:$(pwd)/zig-linux-x86_64-0.13.0
55+
# zig version
56+
57+
# install gcc compiler for aarch64
58+
sudo apt update
59+
sudo apt install gcc-aarch64-linux-gnu
60+
61+
aarch64-linux-gnu-gcc --version
62+
63+
# Download libsodium
64+
mkdir libsodium
65+
curl -L --output ./libsodium/LATEST.tar.gz https://github.com/matthme/holochain-binaries/releases/download/libsodium-releases/LATEST.tar.gz
66+
curl -L --output ./libsodium/LATEST.tar.gz.minisig https://github.com/matthme/holochain-binaries/releases/download/libsodium-releases/LATEST.tar.gz.minisig
67+
curl -L --output ./libsodium/libsodium-1.0.19-stable.zip https://github.com/matthme/holochain-binaries/releases/download/libsodium-releases/libsodium-1.0.19-stable.zip
68+
curl -L --output ./libsodium/libsodium-1.0.19-stable.zip.minisig https://github.com/matthme/holochain-binaries/releases/download/libsodium-releases/libsodium-1.0.19-stable.zip.minisig
69+
70+
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc SODIUM_DIST_DIR="$(pwd)/libsodium" yarn build --target aarch64-unknown-linux-gnu
71+
5172
# - host: ubuntu-latest
5273
# target: armv7-unknown-linux-gnueabihf
5374
# setup: |
5475
# sudo apt-get update
5576
# sudo apt-get install gcc-arm-linux-gnueabihf -y
56-
# build: yarn build --target armv7-unknown-linux-gnueabihf
77+
# build: yarn build --zig --target armv7-unknown-linux-gnueabihf
5778

5879
name: stable - ${{ matrix.settings.target }} - node@20
5980
runs-on: ${{ matrix.settings.host }}
@@ -90,11 +111,6 @@ jobs:
90111
with:
91112
go-version: 'stable'
92113

93-
# - uses: goto-bus-stop/setup-zig@v2
94-
# if: ${{ matrix.settings.target == 'armv7-unknown-linux-gnueabihf' || matrix.settings.target == 'armv7-unknown-linux-musleabihf' }}
95-
# with:
96-
# version: 0.11.0
97-
98114
- name: Setup toolchain
99115
run: ${{ matrix.settings.setup }}
100116
if: ${{ matrix.settings.setup }}
@@ -212,47 +228,49 @@ jobs:
212228
- name: Test bindings
213229
run: docker run --rm -v $(pwd):/build -w /build node:${{ matrix.node }}-slim yarn test
214230

215-
# test-linux-aarch64-gnu-binding:
216-
# name: Test bindings on aarch64-unknown-linux-gnu - node@${{ matrix.node }}
217-
# needs:
218-
# - build
219-
# strategy:
220-
# fail-fast: false
221-
# matrix:
222-
# node:
223-
# - '18'
224-
# - '20'
225-
# runs-on: ubuntu-latest
226-
# steps:
227-
# - uses: actions/checkout@v4
228-
# - name: Download artifacts
229-
# uses: actions/download-artifact@v4
230-
# with:
231-
# name: bindings-aarch64-unknown-linux-gnu
232-
# path: .
233-
# - name: List packages
234-
# run: ls -R .
235-
# shell: bash
236-
# - name: Install dependencies
237-
# run: |
238-
# yarn config set supportedArchitectures.cpu "arm64"
239-
# yarn config set supportedArchitectures.libc "glibc"
240-
# yarn install
241-
# - name: Set up QEMU
242-
# uses: docker/setup-qemu-action@v3
243-
# with:
244-
# platforms: arm64
245-
# - run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
246-
# - name: Setup and run tests
247-
# uses: addnab/docker-run-action@v3
248-
# with:
249-
# image: node:${{ matrix.node }}-slim
250-
# options: '--platform linux/arm64 -v ${{ github.workspace }}:/build -w /build'
251-
# run: |
252-
# set -e
253-
# yarn test
254-
# ls -la
231+
test-linux-aarch64-gnu-binding:
232+
name: Test bindings on aarch64-unknown-linux-gnu - node@${{ matrix.node }}
233+
needs:
234+
- build
235+
strategy:
236+
fail-fast: false
237+
matrix:
238+
node:
239+
- '18'
240+
- '20'
241+
runs-on: ubuntu-latest
242+
steps:
243+
- uses: actions/checkout@v4
244+
- name: Download artifacts
245+
uses: actions/download-artifact@v4
246+
with:
247+
name: bindings-aarch64-unknown-linux-gnu
248+
path: .
249+
- name: List packages
250+
run: ls -R .
251+
shell: bash
252+
- name: Install dependencies
253+
run: |
254+
yarn config set supportedArchitectures.cpu "arm64"
255+
yarn config set supportedArchitectures.libc "glibc"
256+
yarn install
257+
- name: Set up QEMU
258+
uses: docker/setup-qemu-action@v3
259+
with:
260+
platforms: arm64
261+
- run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
262+
- name: Setup and run tests
263+
uses: addnab/docker-run-action@v3
264+
with:
265+
image: node:${{ matrix.node }}-slim
266+
options: '--platform linux/arm64 -v ${{ github.workspace }}:/build -w /build'
267+
run: |
268+
set -e
269+
yarn test
270+
ls -la
255271
272+
# Adding this will also require adding an npm folder and adding the target triple to the
273+
# root package.json: https://github.com/napi-rs/napi-rs/issues/1545
256274
# test-linux-arm-gnueabihf-binding:
257275
# name: Test bindings on armv7-unknown-linux-gnueabihf - node@${{ matrix.node }}
258276
# needs:
@@ -299,6 +317,7 @@ jobs:
299317
needs:
300318
- test-macOS-windows-binding
301319
- test-linux-x64-gnu-binding
320+
- test-linux-aarch64-gnu-binding
302321
steps:
303322
- uses: actions/checkout@v4
304323
- name: Setup node

0 commit comments

Comments
 (0)