]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/dist: require _ before GOOS and GOARCH when building bootstrap
authorAustin Clements <austin@google.com>
Wed, 12 Apr 2017 19:37:00 +0000 (15:37 -0400)
committerAustin Clements <austin@google.com>
Wed, 12 Apr 2017 20:39:20 +0000 (20:39 +0000)
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 <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
src/cmd/dist/build.go

index dbb64ccdf39b738eb6e35006ba647777753b7697..66e3f0fc07a0bee6da401e974cab1242a0d60145 100644 (file)
@@ -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)