mirror of
https://github.com/lukaszraczylo/filepuff-mcp.git
synced 2026-06-05 22:23:50 +00:00
7774dc29d1
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.
21 lines
1.1 KiB
Bash
Executable File
21 lines
1.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Invoked by lukaszraczylo/shared-actions go-release-cgo.yaml before GoReleaser,
|
|
# with TARGET_GOOS/TARGET_GOARCH set from the build matrix entry.
|
|
#
|
|
# GoReleaser Pro `release --split` partitions builds across matrix runners.
|
|
# Its default partition is by GOOS only, so every linux runner would build
|
|
# BOTH linux/amd64 and linux/arm64. With CGO_ENABLED=1 (go-tree-sitter needs
|
|
# CGO) the native gcc on one runner cannot assemble the other arch's CGO
|
|
# runtime (`gcc_arm64.S: no such instruction`), failing the release.
|
|
#
|
|
# Exporting GGOOS/GGOARCH restricts each runner to its own target. These are
|
|
# filter-only vars (unlike GOOS/GOARCH, which bleed into before-hooks such as
|
|
# `go run`/`go generate`) and require `partial.by: target` in .goreleaser.yaml.
|
|
set -euo pipefail
|
|
|
|
if [ -n "${GITHUB_ENV:-}" ] && [ -n "${TARGET_GOOS:-}" ] && [ -n "${TARGET_GOARCH:-}" ]; then
|
|
echo "GGOOS=${TARGET_GOOS}" >>"${GITHUB_ENV}"
|
|
echo "GGOARCH=${TARGET_GOARCH}" >>"${GITHUB_ENV}"
|
|
echo "Pinned GoReleaser split target: GGOOS=${TARGET_GOOS} GGOARCH=${TARGET_GOARCH}"
|
|
fi
|