From c253ea47e1310d3bb7d9e3e5e23717b934a7db7f Mon Sep 17 00:00:00 2001 From: Austin Clements Date: Wed, 12 Apr 2017 15:37:00 -0400 Subject: [PATCH] cmd/dist: require _ before GOOS and GOARCH when building bootstrap Currently, dist allows GOOS and GOARCH to appear as *any* substring in a file name when selecting source files to go into go_bootstrap. This was necessary prior to Go 1.4, where it needed to match names like "windows.c", but now it's gratuitously different from go/build. This led to a bug chase to figure out why "stubs_nonlinux.go" was not being built on non-Linux OSes. Change shouldbuild to require an "_" before the GOOS and GOARCH in a file name. This is still less strict than go/build, but the behavior is much closer. Change-Id: I580e9344a3c40d57c0721d345e911e8b4f141f5d Reviewed-on: https://go-review.googlesource.com/40435 Run-TryBot: Austin Clements TryBot-Result: Gobot Gobot Reviewed-by: Brad Fitzpatrick Reviewed-by: Russ Cox --- src/cmd/dist/build.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go index dbb64ccdf3..66e3f0fc07 100644 --- a/src/cmd/dist/build.go +++ b/src/cmd/dist/build.go @@ -782,9 +782,8 @@ func matchtag(tag string) bool { // shouldbuild reports whether we should build this file. // It applies the same rules that are used with context tags -// in package go/build, except that the GOOS and GOARCH -// can appear anywhere in the file name, not just after _. -// In particular, they can be the entire file name (like windows.c). +// in package go/build, except it's less picky about the order +// of GOOS and GOARCH. // We also allow the special tag cmd_go_bootstrap. // See ../go/bootstrap.go and package go/build. func shouldbuild(file, dir string) bool { @@ -796,7 +795,7 @@ func shouldbuild(file, dir string) bool { continue } i := strings.Index(name, x) - if i < 0 { + if i <= 0 || name[i-1] != '_' { continue } i += len(x) -- 2.48.1