From d6045ab29705863c9e5779e3234c4639e56a3c45 Mon Sep 17 00:00:00 2001 From: Ramiro Rivera Date: Fri, 2 Jan 2026 04:46:02 +0100 Subject: [PATCH] Add Windows ARM64 build support (#834) * feat(build): add Windows ARM64 build support - .goreleaser.yml - .github/workflows/release.yml - winget/SteveYegge.beads.installer.yaml Add Windows ARM64 (aarch64) build target to support modern Windows devices like Surface Pro X and Snapdragon-based laptops. Changes: - Added bd-windows-arm64 build configuration with CGO cross-compiler - Installed gcc-mingw-w64-aarch64 toolchain in CI release workflow - Added ARM64 installer entry to WinGet manifest (placeholder SHA256) - Updated release header to mention Windows ARM64 support The npm package already supports ARM64 in its cpu array. Fixes: #833 * fix(build): use CGO_ENABLED=0 for Windows ARM64 - Remove non-existent gcc-mingw-w64-aarch64 package from CI - Use CGO_ENABLED=0 since ncruces/go-sqlite3 is WASM-based - Remove unnecessary CC/CXX cross-compiler settings Addresses review feedback from @steveyegge on PR #834. * style: remove inconsistent inline comment from goreleaser config Aligns with existing style where CGO_ENABLED entries have no inline comments. --- .goreleaser.yml | 25 +++++++++++++++++++++++-- winget/SteveYegge.beads.installer.yaml | 3 +++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/.goreleaser.yml b/.goreleaser.yml index 0b8336ad..4fc481be 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -99,6 +99,28 @@ builds: # Requires WINDOWS_SIGNING_CERT_PFX_BASE64 and WINDOWS_SIGNING_CERT_PASSWORD secrets - ./scripts/sign-windows.sh "{{ .Path }}" + - id: bd-windows-arm64 + main: ./cmd/bd + binary: bd + env: + - CGO_ENABLED=0 + goos: + - windows + goarch: + - arm64 + ldflags: + - -s -w + - -X main.Version={{.Version}} + - -X main.Build={{.ShortCommit}} + - -X main.Commit={{.Commit}} + - -X main.Branch={{.Branch}} + - -buildmode=exe + hooks: + post: + # Sign Windows executable with Authenticode certificate + # Requires WINDOWS_SIGNING_CERT_PFX_BASE64 and WINDOWS_SIGNING_CERT_PASSWORD secrets + - ./scripts/sign-windows.sh "{{ .Path }}" + - id: bd-freebsd-amd64 main: ./cmd/bd binary: bd @@ -115,7 +137,6 @@ builds: - -X main.Commit={{.Commit}} - -X main.Branch={{.Branch}} - archives: - id: bd-archive format: tar.gz @@ -164,7 +185,7 @@ release: header: | ## beads v{{.Version}} - Pre-compiled binaries for Linux, macOS (Intel & Apple Silicon), and Windows. + Pre-compiled binaries for Linux, macOS (Intel & Apple Silicon), Windows (AMD64 & ARM64), and FreeBSD. ### Installation diff --git a/winget/SteveYegge.beads.installer.yaml b/winget/SteveYegge.beads.installer.yaml index 9517eb6b..9ebab50f 100644 --- a/winget/SteveYegge.beads.installer.yaml +++ b/winget/SteveYegge.beads.installer.yaml @@ -10,5 +10,8 @@ Installers: - Architecture: x64 InstallerUrl: https://github.com/steveyegge/beads/releases/download/v0.30.7/beads_0.30.7_windows_amd64.zip InstallerSha256: 91A3D0799533DE8FA9AAB6415B8A57BDD542C59A21805FBF80A559A53F3CD02E + - Architecture: arm64 + InstallerUrl: https://github.com/steveyegge/beads/releases/download/v0.30.7/beads_0.30.7_windows_arm64.zip + InstallerSha256: "0000000000000000000000000000000000000000000000000000000000000000" ManifestType: installer ManifestVersion: 1.6.0