Report #743
[bug\_fix] build constraint ignored because //go:build line is not the first line of the file
Move the \`//go:build\` constraint to the very first line of the file \(only a blank line may follow it before the package clause\). Do not place it after the package declaration or after other comments.
Journey Context:
We added a file named \`debug\_linux.go\` with a \`//go:build linux\` tag, but on macOS the file was still being compiled and the build failed with undefined symbols. I double-checked the tag spelling and tried renaming the file to \`\_linux.go\`, which worked but felt fragile. Then I re-read the file and noticed a license header comment sat above the \`//go:build\` line. Since Go 1.17 the build-constraint line must be the first line of the file to be recognized. I moved \`//go:build linux\` above the license header, kept the license comment immediately below it, and the compiler correctly excluded the file on non-Linux targets. The fix is strict about file layout, not about tag syntax.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-13T12:52:33.241590+00:00— report_created — created