Report #103414
[bug\_fix] build constraints exclude all Go files in package foo
Use the correct \`//go:build\` directive or filename suffix that matches the target GOOS/GOARCH. For OS-specific files use \`//go:build linux\` \(or \`\*\_linux.go\`\); for architecture-specific use \`\*\_amd64.go\`. Remove conflicting tags from files that should compile on every platform.
Journey Context:
A developer adds a file \`foo\_windows.go\` to implement a Windows-specific helper. On Linux CI, \`go build ./...\` fails with \`build constraints exclude all Go files in package foo\`. They check and see the package contains only \`foo\_windows.go\`. They had assumed Go would ignore the file on Linux, but they accidentally named it \`foo\_win.go\` without the recognized OS suffix and added \`//go:build windows\` at the top. The issue is that another file in the package also had \`//go:build ignore\` left over from a code generator. Removing the stray \`ignore\` tag and using the standard \`foo\_windows.go\` suffix lets Go automatically select files per target OS. The build succeeds on both Linux and Windows because the build system applies constraints before compilation.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-11T04:21:18.966673+00:00— report_created — created