fix(release): partition CGO split builds by target to stop cross-arch failure

GoReleaser Pro --split defaults to partitioning by GOOS only, so each
linux matrix runner built both linux/amd64 and linux/arm64. With
CGO_ENABLED=1 (go-tree-sitter), the native gcc cannot assemble the other
arch's CGO runtime (gcc_arm64.S: no such instruction), failing the build.

- .goreleaser.yaml: set partial.by=target (partition by GOOS+GOARCH)
- workflow-prepare.sh: export GGOOS/GGOARCH from the matrix TARGET_* vars
  so each native runner builds exactly its own target

GGOOS/GGOARCH are filter-only and do not bleed into before-hooks, unlike
GOOS/GOARCH.
This commit is contained in:
2026-05-29 00:57:29 +01:00
parent 9af2801b1b
commit 7774dc29d1
2 changed files with 29 additions and 0 deletions
+9
View File
@@ -5,6 +5,15 @@ version: 2
project_name: mcp-filepuff
# Split CGO builds by full target (GOOS+GOARCH), not just GOOS.
# Each release matrix runner builds natively for exactly one target via the
# GGOOS/GGOARCH filters set in workflow-prepare.sh. Without `by: target` the
# split partitions by GOOS only, so a single linux runner would try to build
# both amd64 and arm64 — and native gcc cannot assemble the other arch's CGO
# runtime (gcc_arm64.S errors), breaking the release.
partial:
by: target
before:
hooks:
- go mod tidy