From 0ff6112cf1a67154f8903e11f24b9d3e3e89d516 Mon Sep 17 00:00:00 2001 From: Mason Chen Date: Tue, 9 Dec 2025 16:43:14 +0800 Subject: [PATCH 1/2] Support build win32-arm64 prebuild --- .github/scripts/build.mjs | 11 +++++++++-- .github/workflows/build.yml | 17 ++++++++++++----- README.md | 1 + 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/.github/scripts/build.mjs b/.github/scripts/build.mjs index a7144c0..96424d8 100644 --- a/.github/scripts/build.mjs +++ b/.github/scripts/build.mjs @@ -20,6 +20,7 @@ async function parseArguments() { const options = { 'kerberos_use_rtld': { type: 'boolean', default: true }, + arch: { short: 'a', type: 'string', default: '' }, help: { short: 'h', type: 'boolean', default: false } }; @@ -37,6 +38,7 @@ async function parseArguments() { return { kerberos_use_rtld: !!args.values.kerberos_use_rtld, + arch: args.values.arch || '', pkg }; } @@ -76,7 +78,12 @@ async function buildBindings(args, pkg) { ? { env: { ...process.env, GYP_DEFINES: gypDefines } } : undefined; - await run('npm', ['run', 'prebuild'], prebuildOptions); + const prebuildArgs = ['run', 'prebuild']; + if (args.arch) { + prebuildArgs.push('--', '--arch', args.arch); + } + + await run('npm', prebuildArgs, prebuildOptions); // TODO(NODE-5140): When we have a TS build step // await run('npm', ['run', 'prepare']); @@ -96,7 +103,7 @@ async function buildBindings(args, pkg) { await fs.copyFile(resolveRoot('prebuilds', armTar), resolveRoot('prebuilds', x64Tar)); } - await run('node', ['--print', `require('.')`], { cwd: resolveRoot() }) + await run('node', ['--print', `require('.')`], { cwd: resolveRoot() }); } async function main() { diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ee2b236..4504c07 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,20 +15,27 @@ jobs: host_builds: strategy: matrix: - os: [macos-latest, windows-2022] + include: + - os: macos-latest + arch: '' + - os: windows-2022 + arch: '' + - os: windows-2022 + arch: arm64 + runs_on: windows-11-arm fail-fast: false - runs-on: ${{ matrix.os }} + runs-on: ${{ matrix.runs_on || matrix.os }} steps: - uses: actions/checkout@v5 - - name: Build ${{ matrix.os }} Prebuild - run: node .github/scripts/build.mjs + - name: Build ${{ matrix.os }}${{ matrix.arch && format(' {0}', matrix.arch) || '' }} Prebuild + run: node .github/scripts/build.mjs${{ matrix.arch && format(' --arch {0}', matrix.arch) || '' }} - id: upload name: Upload prebuild uses: actions/upload-artifact@v4 with: - name: build-${{ matrix.os }} + name: build-${{ matrix.os }}${{ matrix.arch && format('-{0}', matrix.arch) || '' }} path: prebuilds/ if-no-files-found: 'error' retention-days: 1 diff --git a/README.md b/README.md index 52c3f37..6dfa560 100644 --- a/README.md +++ b/README.md @@ -69,6 +69,7 @@ Below are the platforms that are available as prebuilds on each github release. - arm64 - Windows - x64 +- arm64 ### Release Integrity From 41f496b07672b2c2a1eadfda28daec2b2e8d0419 Mon Sep 17 00:00:00 2001 From: Mason Chen Date: Fri, 12 Dec 2025 09:25:28 +0800 Subject: [PATCH 2/2] Simplify win arm --- .github/scripts/build.mjs | 9 +-------- .github/workflows/build.yml | 17 +++++------------ 2 files changed, 6 insertions(+), 20 deletions(-) diff --git a/.github/scripts/build.mjs b/.github/scripts/build.mjs index 96424d8..b643fe2 100644 --- a/.github/scripts/build.mjs +++ b/.github/scripts/build.mjs @@ -20,7 +20,6 @@ async function parseArguments() { const options = { 'kerberos_use_rtld': { type: 'boolean', default: true }, - arch: { short: 'a', type: 'string', default: '' }, help: { short: 'h', type: 'boolean', default: false } }; @@ -38,7 +37,6 @@ async function parseArguments() { return { kerberos_use_rtld: !!args.values.kerberos_use_rtld, - arch: args.values.arch || '', pkg }; } @@ -78,12 +76,7 @@ async function buildBindings(args, pkg) { ? { env: { ...process.env, GYP_DEFINES: gypDefines } } : undefined; - const prebuildArgs = ['run', 'prebuild']; - if (args.arch) { - prebuildArgs.push('--', '--arch', args.arch); - } - - await run('npm', prebuildArgs, prebuildOptions); + await run('npm', ['run', 'prebuild'], prebuildOptions); // TODO(NODE-5140): When we have a TS build step // await run('npm', ['run', 'prepare']); diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4504c07..8b1cdf8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,27 +15,20 @@ jobs: host_builds: strategy: matrix: - include: - - os: macos-latest - arch: '' - - os: windows-2022 - arch: '' - - os: windows-2022 - arch: arm64 - runs_on: windows-11-arm + os: [macos-latest, windows-2022, windows-11-arm] fail-fast: false - runs-on: ${{ matrix.runs_on || matrix.os }} + runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v5 - - name: Build ${{ matrix.os }}${{ matrix.arch && format(' {0}', matrix.arch) || '' }} Prebuild - run: node .github/scripts/build.mjs${{ matrix.arch && format(' --arch {0}', matrix.arch) || '' }} + - name: Build ${{ matrix.os }} Prebuild + run: node .github/scripts/build.mjs - id: upload name: Upload prebuild uses: actions/upload-artifact@v4 with: - name: build-${{ matrix.os }}${{ matrix.arch && format('-{0}', matrix.arch) || '' }} + name: build-${{ matrix.os }} path: prebuilds/ if-no-files-found: 'error' retention-days: 1