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:
parent
c6244b5909
commit
2b0ac284cf
@ -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")})
|
||||
}
|
||||
|
@ -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 {
|
||||
|
Loading…
Reference in New Issue
Block a user