aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/go/internal/modload/search.go
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2018-08-10 15:25:15 -0400
committerRuss Cox <rsc@golang.org>2018-08-10 20:02:31 +0000
commit5c11480631f5654e9e6937ff08c453660138c64d (patch)
tree40e1e4885fa07298bccd64c787d58c8adca9b3c5 /src/cmd/go/internal/modload/search.go
parent64205cd4b6d48432fdcbe2127d45e4f786468ff3 (diff)
downloadgo-5c11480631f5654e9e6937ff08c453660138c64d.tar.gz
go-5c11480631f5654e9e6937ff08c453660138c64d.zip
cmd/go: don't let ... match GOROOT/src/cmd in module mode
GOROOT/src/cmd uses GOROOT/src/cmd/vendor, which module mode simply cannot handle. Exposed by making ... match the standard library, which it still should. But for now it's fine to just exclude commands. Change-Id: I2201b94445f11239022de8a2473aa3b573f405c0 Reviewed-on: https://go-review.googlesource.com/129055 Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/cmd/go/internal/modload/search.go')
-rw-r--r--src/cmd/go/internal/modload/search.go12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/cmd/go/internal/modload/search.go b/src/cmd/go/internal/modload/search.go
index 6aaabe6a08..24825cc35d 100644
--- a/src/cmd/go/internal/modload/search.go
+++ b/src/cmd/go/internal/modload/search.go
@@ -37,6 +37,10 @@ func matchPackages(pattern string, tags map[string]bool, useStd bool, modules []
walkPkgs := func(root, importPathRoot string) {
root = filepath.Clean(root)
+ var cmd string
+ if root == cfg.GOROOTsrc {
+ cmd = filepath.Join(root, "cmd")
+ }
filepath.Walk(root, func(path string, fi os.FileInfo, err error) error {
if err != nil {
return nil
@@ -47,6 +51,14 @@ func matchPackages(pattern string, tags map[string]bool, useStd bool, modules []
return nil
}
+ // GOROOT/src/cmd makes use of GOROOT/src/cmd/vendor,
+ // which module mode can't deal with. Eventually we'll stop using
+ // that vendor directory, and then we can remove this exclusion.
+ // golang.org/issue/26924.
+ if path == cmd {
+ return filepath.SkipDir
+ }
+
want := true
// Avoid .foo, _foo, and testdata directory trees.
_, elem := filepath.Split(path)