diff --git a/src/cmd/go/internal/load/search.go b/src/cmd/go/internal/load/search.go index 784a0716f2..670fbbb7e4 100644 --- a/src/cmd/go/internal/load/search.go +++ b/src/cmd/go/internal/load/search.go @@ -93,12 +93,21 @@ func MatchPackages(pattern string) []string { if !match(name) { return nil } - _, err = cfg.BuildContext.ImportDir(path, 0) + pkg, err := cfg.BuildContext.ImportDir(path, 0) if err != nil { if _, noGo := err.(*build.NoGoError); noGo { return nil } } + + // If we are expanding "cmd", skip main + // packages under cmd/vendor. At least as of + // March, 2017, there is one there for the + // vendored pprof tool. + if pattern == "cmd" && strings.HasPrefix(pkg.ImportPath, "cmd/vendor") && pkg.Name == "main" { + return nil + } + pkgs = append(pkgs, name) return nil }) diff --git a/src/make.bash b/src/make.bash index 62d8b80fca..6e6f96d5c7 100755 --- a/src/make.bash +++ b/src/make.bash @@ -172,7 +172,20 @@ if [ "$GOHOSTARCH" != "$GOARCH" -o "$GOHOSTOS" != "$GOOS" ]; then fi echo "##### Building packages and commands for $GOOS/$GOARCH." + +old_bin_files=$(cd $GOROOT/bin && echo *) + CC=$CC_FOR_TARGET "$GOTOOLDIR"/go_bootstrap install $GO_FLAGS -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v std cmd + +# Check that there are no new files in $GOROOT/bin other than go and gofmt +# and $GOOS_$GOARCH (a directory used when cross-compiling). +(cd $GOROOT/bin && for f in *; do + if ! expr " $old_bin_files go gofmt ${GOOS}_${GOARCH} " : ".* $f " >/dev/null 2>/dev/null; then + echo 1>&2 "ERROR: unexpected new file in $GOROOT/bin: $f" + exit 1 + fi +done) + echo rm -f "$GOTOOLDIR"/go_bootstrap