Skip to content

Commit 8731879

Browse files
committed
build linux arm64
1 parent d8dfbb9 commit 8731879

File tree

10 files changed

+95
-0
lines changed

10 files changed

+95
-0
lines changed

.github/workflows/DuckDBNodeBindingsAndAPI.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ on:
2828
type: boolean
2929
required: true
3030
default: false
31+
linux_arm64:
32+
description: 'Run on Linux arm64'
33+
type: boolean
34+
required: true
35+
default: false
3136
macos_arm64:
3237
description: 'Run on Mac OS X arm64'
3338
type: boolean
@@ -111,6 +116,30 @@ jobs:
111116
env:
112117
NPM_AUTH_TOKEN: ${{ secrets.DUCKDB_NPM_TOKEN }}
113118

119+
linux_arm64:
120+
name: Linux arm64
121+
runs-on: ubuntu-latest
122+
if: ${{ github.event_name != 'workflow_dispatch' || inputs.linux_arm64 }}
123+
env:
124+
TARGET_ARCH: 'arm64'
125+
steps:
126+
- uses: actions/checkout@v4
127+
128+
- uses: pnpm/action-setup@v3
129+
with:
130+
version: 9
131+
132+
- name: Workspace - Install
133+
run: pnpm install --ignore-scripts
134+
135+
- name: Bindings - Build
136+
working-directory: bindings
137+
run: pnpm run build
138+
139+
- name: Bindings - Test
140+
working-directory: bindings
141+
run: pnpm test
142+
114143
macos_arm64:
115144
name: Mac OS X arm64
116145
runs-on: macos-latest

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
- [@duckdb/node-api](api/pkgs/@duckdb/node-api/README.md)
1010
- [@duckdb/node-bindings](bindings/pkgs/@duckdb/node-bindings/README.md)
1111
- [@duckdb/node-bindings-darwin-arm64](bindings/pkgs/@duckdb/node-bindings-darwin-arm64/README.md)
12+
- [@duckdb/node-bindings-linux-arm64](bindings/pkgs/@duckdb/node-bindings-linux-x64/README.md)
1213
- [@duckdb/node-bindings-linux-x64](bindings/pkgs/@duckdb/node-bindings-linux-x64/README.md)
1314
- [@duckdb/node-bindings-win32-x64](bindings/pkgs/@duckdb/node-bindings-win32-x64/README.md)
1415

@@ -17,6 +18,7 @@
1718
- [@duckdb/node-api](https://www.npmjs.com/package/@duckdb/node-api)
1819
- [@duckdb/node-bindings](https://www.npmjs.com/package/@duckdb/node-bindings)
1920
- [@duckdb/node-bindings-darwin-arm64](https://www.npmjs.com/package/@duckdb/node-bindings-darwin-arm64)
21+
- [@duckdb/node-bindings-linux-arm64](https://www.npmjs.com/package/@duckdb/node-bindings-linux-x64)
2022
- [@duckdb/node-bindings-linux-x64](https://www.npmjs.com/package/@duckdb/node-bindings-linux-x64)
2123
- [@duckdb/node-bindings-win32-x64](https://www.npmjs.com/package/@duckdb/node-bindings-win32-x64)
2224

@@ -46,12 +48,14 @@ Change version in:
4648
- `api/pkgs/@duckdb/node-api/package.json`
4749
- `bindings/pkgs/@duckdb/node-bindings/package.json`
4850
- `bindings/pkgs/@duckdb/node-bindings-darwin-arm64/package.json`
51+
- `bindings/pkgs/@duckdb/node-bindings-linux-arm64/package.json`
4952
- `bindings/pkgs/@duckdb/node-bindings-linux-x64/package.json`
5053
- `bindings/pkgs/@duckdb/node-bindings-win32-x64/package.json`
5154

5255
### Upgrade DuckDB Version
5356

5457
Change version in:
58+
- `bindings/scripts/fetch_libduckdb_linux_aarch64.py`
5559
- `bindings/scripts/fetch_libduckdb_linux_amd64.py`
5660
- `bindings/scripts/fetch_libduckdb_osx_universal.py`
5761
- `bindings/scripts/fetch_libduckdb_windows_amd64.py`

api/pkgs/@duckdb/node-api/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ Some features are not yet complete:
2828
### Supported Platforms
2929

3030
- Linux x64
31+
- Linux arm64
3132
- Mac OS X (Darwin) arm64 (Apple Silicon)
3233
- Windows (Win32) x64
3334

bindings/binding.gyp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@
99
'script_path': '<(module_root_dir)/scripts/fetch_libduckdb_linux_amd64.py',
1010
},
1111
}],
12+
['OS=="linux" and target_arch=="amd64"', {
13+
'variables': {
14+
'script_path': '<(module_root_dir)/scripts/fetch_libduckdb_linux_aarch64.py',
15+
},
16+
}],
1217
['OS=="mac"', {
1318
'variables': {
1419
'script_path': '<(module_root_dir)/scripts/fetch_libduckdb_osx_universal.py',
@@ -54,6 +59,21 @@
5459
},
5560
],
5661
}],
62+
['OS=="linux" and target_arch=="arm64"', {
63+
'link_settings': {
64+
'libraries': [
65+
'-lduckdb',
66+
'-L<(module_root_dir)/libduckdb',
67+
'-Wl,-rpath,\'$$ORIGIN\'',
68+
],
69+
},
70+
'copies': [
71+
{
72+
'files': ['<(module_root_dir)/libduckdb/libduckdb.so'],
73+
'destination': '<(module_root_dir)/pkgs/@duckdb/node-bindings-linux-arm64',
74+
},
75+
],
76+
}],
5777
['OS=="mac"', {
5878
'cflags+': ['-fvisibility=hidden'],
5979
'xcode_settings': {
@@ -101,6 +121,14 @@
101121
},
102122
],
103123
}],
124+
['OS=="linux" and target_arch=="arm64"', {
125+
'copies': [
126+
{
127+
'files': ['<(module_root_dir)/build/Release/duckdb.node'],
128+
'destination': '<(module_root_dir)/pkgs/@duckdb/node-bindings-linux-arm64',
129+
},
130+
],
131+
}],
104132
['OS=="mac"', {
105133
'copies': [
106134
{
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
//registry.npmjs.org/:_authToken=${NPM_AUTH_TOKEN}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# DuckDB Node Bindings: Linux arm64
2+
3+
Binaries supporting [Node](https://nodejs.org/) bindings to the [DuckDB C API](https://duckdb.org/docs/api/c/overview) for Linux arm64.
4+
5+
See [@duckdb/node-bindings](https://www.npmjs.com/package/@duckdb/node-bindings) for a low-level API that uses these binaries, or [@duckdb/node-api](https://www.npmjs.com/package/@duckdb/node-api) for a high-level API built on those bindings.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"name": "@duckdb/node-bindings-linux-arm64",
3+
"version": "1.1.3-alpha.6",
4+
"os": [
5+
"linux"
6+
],
7+
"cpu": [
8+
"arm64"
9+
],
10+
"repository": {
11+
"type": "git",
12+
"url": "https://github.com/duckdb/duckdb-node-neo.git"
13+
}
14+
}

bindings/pkgs/@duckdb/node-bindings/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@ See [@duckdb/node-api](https://www.npmjs.com/package/@duckdb/node-api) for a hig
77
### Supported Platforms
88

99
- Linux x64
10+
- Linux arm64
1011
- Mac OS X (Darwin) arm64 (Apple Silicon)
1112
- Windows (Win32) x64

bindings/pkgs/@duckdb/node-bindings/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
"types": "./duckdb.d.ts",
66
"optionalDependencies": {
77
"@duckdb/node-bindings-darwin-arm64": "workspace:*",
8+
"@duckdb/node-bindings-linux-arm64": "workspace:*",
89
"@duckdb/node-bindings-linux-x64": "workspace:*",
910
"@duckdb/node-bindings-win32-x64": "workspace:*"
1011
},
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import os
2+
from fetch_libduckdb import fetch_libduckdb
3+
4+
zip_url = "https://github.com/duckdb/duckdb/releases/download/v1.1.3/libduckdb-linux-aarch64.zip"
5+
output_dir = os.path.join(os.path.dirname(__file__), "..", "libduckdb")
6+
files = [
7+
"duckdb.h",
8+
"libduckdb.so",
9+
]
10+
11+
fetch_libduckdb(zip_url, output_dir, files)

0 commit comments

Comments
 (0)