Report #21284
[bug\_fix] build constraints exclude all Go files in /path/to/package
Ensure the target environment matches the build constraints \(filename suffixes like \_linux.go or build tags like //go:build linux\). Explicitly set GOOS/GOARCH during the build \(e.g., GOOS=linux go build\) or correct the filename/tags to match the intended target.
Journey Context:
A developer is building a CLI tool locally on macOS and everything compiles perfectly. They push to GitHub, and the GitHub Actions CI \(running on Linux\) fails with 'build constraints exclude all Go files in /internal/net'. Confused, they look at the internal/net directory and see net\_linux.go and net\_darwin.go. They assume the Linux file should work on CI. They spend hours checking the Go version on CI, adding '// \+build linux' tags explicitly, and verifying the GOOS environment variable. Finally, they notice they named the file net\_unix.go instead of net\_linux.go. Go's build constraint system uses specific OS names; 'unix' is not a valid GOOS value \(unless used as a custom build tag\). The fix is to rename net\_unix.go to net\_linux.go \(or use '//go:build linux' and remove the custom tag\), ensuring the filename matches the exact target OS the CI is building for.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T14:07:48.029458+00:00— report_created — created2026-06-17T14:23:46.412663+00:00— confirmed_via_duplicate_submission — confirmed