mirror of
https://github.com/golang/go
synced 2024-11-17 15:04:45 -07:00
cmd/go: avoid indexing GOROOT packages when the compiler is 'gccgo'
The gccgo compiler does not load standard-library packages from GOROOT/src, so we cannot load those packages from the GOROOT/src index when using that compiler. This fixes TestScript/gccgo_link_c (and perhaps other gccgo tests) when a 'gccgo' executable is present. Unfortunately, only a few builders caught the broken test because 'gccgo' is not installed on most Go project builders (see #35786). For #53577. Fixes #53815. Change-Id: I11a5cf6dbf4ac9893c4d02bd6ab7ef60f67b1e87 Reviewed-on: https://go-review.googlesource.com/c/go/+/417094 TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Bryan Mills <bcmills@google.com> Reviewed-by: Russ Cox <rsc@golang.org>
This commit is contained in:
parent
c2edb2c841
commit
5f5cae7200
@ -139,6 +139,9 @@ func GetPackage(modroot, pkgdir string) (*IndexPackage, error) {
|
|||||||
if !errors.Is(err, errNotFromModuleCache) {
|
if !errors.Is(err, errNotFromModuleCache) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
if cfg.BuildContext.Compiler == "gccgo" && str.HasPathPrefix(modroot, cfg.GOROOTsrc) {
|
||||||
|
return nil, err // gccgo has no sources for GOROOT packages.
|
||||||
|
}
|
||||||
return openIndexPackage(modroot, pkgdir)
|
return openIndexPackage(modroot, pkgdir)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -715,6 +715,9 @@ func (ctxt *Context) Import(path string, srcDir string, mode ImportMode) (*Packa
|
|||||||
tried.goroot = dir
|
tried.goroot = dir
|
||||||
}
|
}
|
||||||
if ctxt.Compiler == "gccgo" && goroot.IsStandardPackage(ctxt.GOROOT, ctxt.Compiler, path) {
|
if ctxt.Compiler == "gccgo" && goroot.IsStandardPackage(ctxt.GOROOT, ctxt.Compiler, path) {
|
||||||
|
// TODO(bcmills): Setting p.Dir here is misleading, because gccgo
|
||||||
|
// doesn't actually load its standard-library packages from this
|
||||||
|
// directory. See if we can leave it unset.
|
||||||
p.Dir = ctxt.joinPath(ctxt.GOROOT, "src", path)
|
p.Dir = ctxt.joinPath(ctxt.GOROOT, "src", path)
|
||||||
p.Goroot = true
|
p.Goroot = true
|
||||||
p.Root = ctxt.GOROOT
|
p.Root = ctxt.GOROOT
|
||||||
|
Loading…
Reference in New Issue
Block a user