Skip to content

Commit 808fa07

Browse files
committed
chore(build): add support for node 25 (see WiseLibs#1412)
1 parent 8e3121d commit 808fa07

File tree

2 files changed

+63
-16
lines changed

2 files changed

+63
-16
lines changed

.github/workflows/build.yml

Lines changed: 62 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,11 @@ on:
1414

1515
env:
1616
# See https://github.com/nodejs/release#release-schedule
17-
# Node.js v20 EOL = 2026-04-30. v22 EOL = 2027-04-30. v23 EOL = 2025-06-01. v24 EOL = 2028-04-30.
18-
NODE_BUILD_CMD: npx --no-install prebuild -r node -t 20.0.0 -t 22.0.0 -t 23.0.0 -t 24.0.0 --include-regex 'better_sqlite3.node$'
17+
# Node.js v20 EOL = 2026-04-30. v22 EOL = 2027-04-30. v23 EOL = 2025-06-01. v24 EOL = 2028-04-30. v25 EOL = 2026-06-01.
18+
# Node.js 20-24 can build with GCC 10 (bullseye)
19+
NODE_BUILD_CMD_LEGACY: npx --no-install prebuild -r node -t 20.0.0 -t 22.0.0 -t 23.0.0 -t 24.0.0 --include-regex 'better_sqlite3.node$'
20+
# Node.js 25+ requires GCC 11+ for <source_location> header (bookworm)
21+
NODE_BUILD_CMD_MODERN: npx --no-install prebuild -r node -t 25.0.0 --include-regex 'better_sqlite3.node$'
1922

2023
# See https://www.electronjs.org/docs/latest/tutorial/electron-timelines#version-support-policy
2124
# Electron v29 EOL = 2024-08-20. v30 EOL = 2024-10-15. v31 EOL = 2025-01-14. v32 EOL = 2025-03-11. v33 EOL = 2025-05-13. v34 EOL = 2025-06-24. v35 EOL = 2025-09-02. v36 EOL = 2025-10-28. v37 EOL = 2026-01-13. v38 EOL = 2026-03-10. v39 EOL = 2026-05-05
@@ -38,6 +41,7 @@ jobs:
3841
- 22
3942
- 23
4043
- 24
44+
- 25
4145
name: Testing Node ${{ matrix.node }} on ${{ matrix.os }}
4246
runs-on: ${{ matrix.os }}
4347
steps:
@@ -51,11 +55,16 @@ jobs:
5155
run: brew install python-setuptools
5256
- if: ${{ !startsWith(matrix.os, 'windows') && !startsWith(matrix.os, 'macos') }}
5357
run: python3 -m pip install setuptools
54-
- if: ${{ startsWith(matrix.os, 'ubuntu') }}
58+
- if: ${{ startsWith(matrix.os, 'ubuntu') && matrix.node < 25 }}
5559
run: |
5660
sudo apt update
5761
sudo apt install gcc-10 g++-10 -y
5862
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 --slave /usr/bin/g++ g++ /usr/bin/g++-10 --slave /usr/bin/gcov gcov /usr/bin/gcov-10
63+
- if: ${{ startsWith(matrix.os, 'ubuntu') && matrix.node >= 25 }}
64+
run: |
65+
sudo apt update
66+
sudo apt install gcc-11 g++-11 -y
67+
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100 --slave /usr/bin/g++ g++ /usr/bin/g++-11 --slave /usr/bin/gcov gcov /usr/bin/gcov-11
5968
- run: npm install --ignore-scripts
6069
- run: npm run build-debug
6170
- run: npm test
@@ -76,7 +85,9 @@ jobs:
7685
- prebuild-alpine-arm
7786
- prebuild-linux-x64
7887
- prebuild-linux-arm
88+
- prebuild-linux-x64-node-modern
7989
- prebuild-linux-x64-electron-modern
90+
- prebuild-linux-arm-node-modern
8091
- prebuild-linux-arm64-electron-modern
8192
steps:
8293
- uses: actions/checkout@v4
@@ -110,13 +121,16 @@ jobs:
110121
- if: ${{ startsWith(matrix.os, 'macos') }}
111122
run: brew install python-setuptools
112123
- run: npm install --ignore-scripts
113-
- run: ${{ env.NODE_BUILD_CMD }} -u ${{ secrets.GITHUB_TOKEN }}
124+
- run: ${{ env.NODE_BUILD_CMD_LEGACY }} -u ${{ secrets.GITHUB_TOKEN }}
125+
- run: ${{ env.NODE_BUILD_CMD_MODERN }} -u ${{ secrets.GITHUB_TOKEN }}
114126
- run: ${{ env.ELECTRON_BUILD_CMD_LEGACY }} -u ${{ secrets.GITHUB_TOKEN }}
115127
- run: ${{ env.ELECTRON_BUILD_CMD_MODERN }} -u ${{ secrets.GITHUB_TOKEN }}
116128
- if: matrix.os == 'windows-2022'
117129
run: |
118-
${{ env.NODE_BUILD_CMD }} --arch ia32 -u ${{ secrets.GITHUB_TOKEN }}
119-
${{ env.NODE_BUILD_CMD }} --arch arm64 -u ${{ secrets.GITHUB_TOKEN }}
130+
${{ env.NODE_BUILD_CMD_LEGACY }} --arch ia32 -u ${{ secrets.GITHUB_TOKEN }}
131+
${{ env.NODE_BUILD_CMD_MODERN }} --arch ia32 -u ${{ secrets.GITHUB_TOKEN }}
132+
${{ env.NODE_BUILD_CMD_LEGACY }} --arch arm64 -u ${{ secrets.GITHUB_TOKEN }}
133+
${{ env.NODE_BUILD_CMD_MODERN }} --arch arm64 -u ${{ secrets.GITHUB_TOKEN }}
120134
${{ env.ELECTRON_BUILD_CMD_LEGACY }} --arch ia32 -u ${{ secrets.GITHUB_TOKEN }}
121135
${{ env.ELECTRON_BUILD_CMD_MODERN }} --arch ia32 -u ${{ secrets.GITHUB_TOKEN }}
122136
${{ env.ELECTRON_BUILD_CMD_LEGACY }} --arch arm64 -u ${{ secrets.GITHUB_TOKEN }}
@@ -131,9 +145,31 @@ jobs:
131145
steps:
132146
- uses: actions/checkout@v4
133147
- run: npm install --ignore-scripts
134-
- run: ${{ env.NODE_BUILD_CMD }} -u ${{ secrets.GITHUB_TOKEN }}
148+
- run: ${{ env.NODE_BUILD_CMD_LEGACY }} -u ${{ secrets.GITHUB_TOKEN }}
135149
- run: ${{ env.ELECTRON_BUILD_CMD_LEGACY }} -u ${{ secrets.GITHUB_TOKEN }}
136150

151+
prebuild-linux-x64-node-modern:
152+
if: ${{ github.event_name == 'release' }}
153+
name: Prebuild on Linux x64 (Node 25+)
154+
runs-on: ubuntu-latest
155+
container: node:20-bookworm
156+
needs: test
157+
steps:
158+
- uses: actions/checkout@v4
159+
- run: npm install --ignore-scripts
160+
- run: ${{ env.NODE_BUILD_CMD_MODERN }} -u ${{ secrets.GITHUB_TOKEN }}
161+
162+
prebuild-linux-x64-electron-modern:
163+
if: ${{ github.event_name == 'release' }}
164+
name: Prebuild on Linux x64 (Electron 39+)
165+
runs-on: ubuntu-latest
166+
container: node:20-bookworm
167+
needs: test
168+
steps:
169+
- uses: actions/checkout@v4
170+
- run: npm install --ignore-scripts
171+
- run: ${{ env.ELECTRON_BUILD_CMD_MODERN }} -u ${{ secrets.GITHUB_TOKEN }}
172+
137173
prebuild-alpine:
138174
if: ${{ github.event_name == 'release' }}
139175
name: Prebuild on alpine
@@ -144,7 +180,8 @@ jobs:
144180
- uses: actions/checkout@v4
145181
- run: apk add build-base git python3 py3-setuptools --update-cache
146182
- run: npm install --ignore-scripts
147-
- run: ${{ env.NODE_BUILD_CMD }} -u ${{ secrets.GITHUB_TOKEN }}
183+
- run: ${{ env.NODE_BUILD_CMD_LEGACY }} -u ${{ secrets.GITHUB_TOKEN }}
184+
- run: ${{ env.NODE_BUILD_CMD_MODERN }} -u ${{ secrets.GITHUB_TOKEN }}
148185

149186
prebuild-alpine-arm:
150187
if: ${{ github.event_name == 'release' }}
@@ -165,7 +202,8 @@ jobs:
165202
apk add build-base git python3 py3-setuptools --update-cache && \
166203
cd /tmp/project && \
167204
npm install --ignore-scripts && \
168-
${{ env.NODE_BUILD_CMD }} -u ${{ secrets.GITHUB_TOKEN }}"
205+
${{ env.NODE_BUILD_CMD_LEGACY }} -u ${{ secrets.GITHUB_TOKEN }} && \
206+
${{ env.NODE_BUILD_CMD_MODERN }} -u ${{ secrets.GITHUB_TOKEN }}"
169207
170208
prebuild-linux-arm:
171209
if: ${{ github.event_name == 'release' }}
@@ -185,19 +223,28 @@ jobs:
185223
docker run --rm -v $(pwd):/tmp/project --entrypoint /bin/sh --platform linux/${{ matrix.arch }} node:20-bullseye -c "\
186224
cd /tmp/project && \
187225
npm install --ignore-scripts && \
188-
${{ env.NODE_BUILD_CMD }} -u ${{ secrets.GITHUB_TOKEN }} && \
226+
${{ env.NODE_BUILD_CMD_LEGACY }} -u ${{ secrets.GITHUB_TOKEN }} && \
189227
if [ '${{ matrix.arch }}' = 'arm64' ]; then ${{ env.ELECTRON_BUILD_CMD_LEGACY }} --arch arm64 -u ${{ secrets.GITHUB_TOKEN }}; fi"
190228
191-
prebuild-linux-x64-electron-modern:
229+
prebuild-linux-arm-node-modern:
192230
if: ${{ github.event_name == 'release' }}
193-
name: Prebuild on Linux x64 (Electron 39+)
231+
strategy:
232+
fail-fast: false
233+
matrix:
234+
arch:
235+
- arm/v7
236+
- arm64
237+
name: Prebuild on Linux (${{ matrix.arch }}) (Node 25+)
194238
runs-on: ubuntu-latest
195-
container: node:20-bookworm
196239
needs: test
197240
steps:
198241
- uses: actions/checkout@v4
199-
- run: npm install --ignore-scripts
200-
- run: ${{ env.ELECTRON_BUILD_CMD_MODERN }} -u ${{ secrets.GITHUB_TOKEN }}
242+
- uses: docker/setup-qemu-action@v3
243+
- run: |
244+
docker run --rm -v $(pwd):/tmp/project --entrypoint /bin/sh --platform linux/${{ matrix.arch }} node:20-bookworm -c "\
245+
cd /tmp/project && \
246+
npm install --ignore-scripts && \
247+
${{ env.NODE_BUILD_CMD_MODERN }} -u ${{ secrets.GITHUB_TOKEN }}"
201248
202249
prebuild-linux-arm64-electron-modern:
203250
if: ${{ github.event_name == 'release' }}

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
"deps/**"
1717
],
1818
"engines": {
19-
"node": "20.x || 22.x || 23.x || 24.x"
19+
"node": "20.x || 22.x || 23.x || 24.x || 25.x"
2020
},
2121
"dependencies": {
2222
"bindings": "^1.5.0",

0 commit comments

Comments
 (0)