Build Windows x64 and arm64 installers with native tools#31
Merged
Conversation
Ship two per-architecture NSIS installers instead of one x64-only build. - scripts/prepare-tools.js stages native rg/fd/cscope per arch from TOOLS/ZIP into build/tools/<arch> (x64 -> x86_64, arm64 -> aarch64; cscope stays x64 as no ARM64 build exists). - package.json: extraFiles pulls build/tools/\ so each installer carries matching CPU binaries; dist builds x64 + arm64 in separate single-arch passes (two installers, no oversized combined one); NSIS artifactName includes \. - release.yml uploads both installers; build.yml verifies both unpacked layouts. Verified locally: x64 and arm64 installers built; PE machine-type check confirms arm64 bundle ships native ARM64 rg/fd. All self-tests pass.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Release builds now produce two native Windows installers — x64 and ARM64 — instead of a single x64-only installer.
rg/fdcscopeM2_SCOUT-Setup-<ver>-x64.exeM2_SCOUT-Setup-<ver>-arm64.exe*cscope has no ARM64 Windows build, so the x64 binary is reused (runs under the Windows-on-ARM x64 emulation layer).
How
scripts/prepare-tools.js(new) — extracts the correct-architecturerg/fd/cscopeout of the existingTOOLS/ZIParchives intobuild/tools/<arch>/before packaging. The repo already shippedaarch64archives, so no new binaries are committed.package.jsonextraFilesnow copiesbuild/tools/${arch}→TOOLS, so each installer carries the matching CPU binaries.distbuilds x64 and arm64 NSIS in separate single-arch passes, yielding exactly two per-arch installers (no oversized ~158 MB combined installer).packbuilds both unpacked dirs; NSISartifactNamenow includes${arch}..github/workflows/release.yml— uploads both installers to the GitHub Release (globs all*Setup*.exe)..github/workflows/build.yml— verifies bothwin-unpackedandwin-arm64-unpackedlayouts.scripts/release.ps1— reports all built installers.Verification (local)
…-x64.exe(77.4 MB) and…-arm64.exe(81.0 MB).rg.exe/fd.exe(not x64).npm test→ all 5 self-tests pass.Notes
.gitignorechange needed —build/tools/is already covered bybuild/*.aarch64rg/fdat runtime, independent of the bundled versions.