Skip to content

Commit c0158b6

Browse files
author
Bryan C. Mills
committed
go/internal/srcimporter: use the 'go' command from the Importer's GOROOT
We have no guarantee in general that there is any 'go' command in $PATH at all, let alone the correct one. However, we can expect that if a 'go' command is not in scope, the Importer should have a correct GOROOT setting: otherwise, it would not be able to import anything from 'std' at all. Given that information, when we run `go tool cgo` we should use GOROOT/bin/go specifically, not whatever 'go' we find in $PATH. This fixes a failure in go/types.TestStdlib that manifests as a timeout in when the 'go' command is not present in $PATH, due to repeated retries for every package that transitively depends on runtime/cgo. For #51461 Change-Id: I30cc4613f6f02a04e83c8d55657ef01888c7770f Reviewed-on: https://go-review.googlesource.com/c/go/+/391807 Trust: Bryan Mills <[email protected]> Run-TryBot: Bryan Mills <[email protected]> Reviewed-by: Ian Lance Taylor <[email protected]> TryBot-Result: Gopher Robot <[email protected]>
1 parent 3efc721 commit c0158b6

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

src/go/internal/srcimporter/srcimporter.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,11 @@ func (p *Importer) cgo(bp *build.Package) (*ast.File, error) {
205205
}
206206
defer os.RemoveAll(tmpdir)
207207

208-
args := []string{"go", "tool", "cgo", "-objdir", tmpdir}
208+
goCmd := "go"
209+
if p.ctxt.GOROOT != "" {
210+
goCmd = filepath.Join(p.ctxt.GOROOT, "bin", "go")
211+
}
212+
args := []string{goCmd, "tool", "cgo", "-objdir", tmpdir}
209213
if bp.Goroot {
210214
switch bp.ImportPath {
211215
case "runtime/cgo":

0 commit comments

Comments
 (0)