1
0
mirror of https://github.com/golang/go synced 2024-11-18 08:04:40 -07:00

cmd/go: when expanding "cmd", skip vendored main packages

We are vendoring pprof from github.com/google/pprof, which comes with
a main package. If we don't explicitly skip that main package, then
`go install cmd` will install the compiled program in $GOROOT/bin.

Fixes #19441.

Change-Id: Ib268ffd16d4be65f7d80e4f8d9dc6e71523a94de
Reviewed-on: https://go-review.googlesource.com/38007
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Raul Silvera <rsilvera@google.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
Ian Lance Taylor 2017-03-10 10:04:42 -08:00
parent da0d23e5cd
commit 135ce43c87
2 changed files with 23 additions and 1 deletions

View File

@ -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
})

View File

@ -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