1
0
mirror of https://github.com/golang/go synced 2024-11-23 08:30:05 -07:00

cmd/doc: use 'go env' to identify GOROOT if it isn't otherwise known

Updates #51483.

Change-Id: I13d8e58b30639d8a5ed3c9e8b72c8bbaa6a6f1cc
Reviewed-on: https://go-review.googlesource.com/c/go/+/391813
Trust: Bryan Mills <bcmills@google.com>
Run-TryBot: Bryan Mills <bcmills@google.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
This commit is contained in:
Bryan C. Mills 2022-03-10 14:58:02 -05:00 committed by Bryan Mills
parent c6244b5909
commit 2b0ac284cf
2 changed files with 20 additions and 5 deletions

View File

@ -41,6 +41,17 @@ var dirs Dirs
// dirsInit starts the scanning of package directories in GOROOT and GOPATH. Any
// extra paths passed to it are included in the channel.
func dirsInit(extra ...Dir) {
if buildCtx.GOROOT == "" {
stdout, err := exec.Command("go", "env", "GOROOT").Output()
if err != nil {
if ee, ok := err.(*exec.ExitError); ok && len(ee.Stderr) > 0 {
log.Fatalf("failed to determine GOROOT: $GOROOT is not set and 'go env GOROOT' failed:\n%s", ee.Stderr)
}
log.Fatalf("failed to determine GOROOT: $GOROOT is not set and could not run 'go env GOROOT':\n\t%s", err)
}
buildCtx.GOROOT = string(bytes.TrimSpace(stdout))
}
dirs.hist = make([]Dir, 0, 1000)
dirs.hist = append(dirs.hist, extra...)
dirs.scan = make(chan Dir)
@ -174,7 +185,7 @@ func findCodeRoots() []Dir {
gomod := string(bytes.TrimSpace(stdout))
usingModules = len(gomod) > 0
if usingModules {
if usingModules && buildCtx.GOROOT != "" {
list = append(list,
Dir{dir: filepath.Join(buildCtx.GOROOT, "src"), inModule: true},
Dir{importPath: "cmd", dir: filepath.Join(buildCtx.GOROOT, "src", "cmd"), inModule: true})
@ -190,7 +201,9 @@ func findCodeRoots() []Dir {
}
if !usingModules {
list = append(list, Dir{dir: filepath.Join(buildCtx.GOROOT, "src")})
if buildCtx.GOROOT != "" {
list = append(list, Dir{dir: filepath.Join(buildCtx.GOROOT, "src")})
}
for _, root := range splitGopath() {
list = append(list, Dir{dir: filepath.Join(root, "src")})
}

View File

@ -89,9 +89,11 @@ func (pkg *Package) prettyPath() string {
// Also convert everything to slash-separated paths for uniform handling.
path = filepath.Clean(filepath.ToSlash(pkg.build.Dir))
// Can we find a decent prefix?
goroot := filepath.Join(buildCtx.GOROOT, "src")
if p, ok := trim(path, filepath.ToSlash(goroot)); ok {
return p
if buildCtx.GOROOT != "" {
goroot := filepath.Join(buildCtx.GOROOT, "src")
if p, ok := trim(path, filepath.ToSlash(goroot)); ok {
return p
}
}
for _, gopath := range splitGopath() {
if p, ok := trim(path, filepath.ToSlash(gopath)); ok {