mirror of
https://github.com/golang/go
synced 2024-11-22 20:24:47 -07:00
cmd/go: don't add C compiler ID to hash for standard library
No test because a real test requires installing two different compilers. For #40042 For #47251 Change-Id: Iefddd67830d242a119378b7ce20be481904806e4 Reviewed-on: https://go-review.googlesource.com/c/go/+/335409 Trust: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com> Reviewed-by: Jay Conrod <jayconrod@google.com>
This commit is contained in:
parent
d568e6e075
commit
9e26569293
@ -2848,3 +2848,35 @@ func TestExecInDeletedDir(t *testing.T) {
|
|||||||
// `go version` should not fail
|
// `go version` should not fail
|
||||||
tg.run("version")
|
tg.run("version")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// A missing C compiler should not force the net package to be stale.
|
||||||
|
// Issue 47215.
|
||||||
|
func TestMissingCC(t *testing.T) {
|
||||||
|
if !canCgo {
|
||||||
|
t.Skip("test is only meaningful on systems with cgo")
|
||||||
|
}
|
||||||
|
cc := os.Getenv("CC")
|
||||||
|
if cc == "" {
|
||||||
|
cc = "gcc"
|
||||||
|
}
|
||||||
|
if filepath.IsAbs(cc) {
|
||||||
|
t.Skipf(`"CC" (%s) is an absolute path`, cc)
|
||||||
|
}
|
||||||
|
_, err := exec.LookPath(cc)
|
||||||
|
if err != nil {
|
||||||
|
t.Skipf(`"CC" (%s) not on PATH`, cc)
|
||||||
|
}
|
||||||
|
|
||||||
|
tg := testgo(t)
|
||||||
|
defer tg.cleanup()
|
||||||
|
netStale, _ := tg.isStale("net")
|
||||||
|
if netStale {
|
||||||
|
t.Skip(`skipping test because "net" package is currently stale`)
|
||||||
|
}
|
||||||
|
|
||||||
|
tg.setenv("PATH", "") // No C compiler on PATH.
|
||||||
|
netStale, _ = tg.isStale("net")
|
||||||
|
if netStale {
|
||||||
|
t.Error(`clearing "PATH" causes "net" to be stale`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -252,8 +252,15 @@ func (b *Builder) buildActionID(a *Action) cache.ActionID {
|
|||||||
|
|
||||||
ccExe := b.ccExe()
|
ccExe := b.ccExe()
|
||||||
fmt.Fprintf(h, "CC=%q %q %q %q\n", ccExe, cppflags, cflags, ldflags)
|
fmt.Fprintf(h, "CC=%q %q %q %q\n", ccExe, cppflags, cflags, ldflags)
|
||||||
if ccID, err := b.gccToolID(ccExe[0], "c"); err == nil {
|
// Include the C compiler tool ID so that if the C
|
||||||
fmt.Fprintf(h, "CC ID=%q\n", ccID)
|
// compiler changes we rebuild the package.
|
||||||
|
// But don't do that for standard library packages like net,
|
||||||
|
// so that the prebuilt .a files from a Go binary install
|
||||||
|
// don't need to be rebuilt with the local compiler.
|
||||||
|
if !p.Standard {
|
||||||
|
if ccID, err := b.gccToolID(ccExe[0], "c"); err == nil {
|
||||||
|
fmt.Fprintf(h, "CC ID=%q\n", ccID)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if len(p.CXXFiles)+len(p.SwigCXXFiles) > 0 {
|
if len(p.CXXFiles)+len(p.SwigCXXFiles) > 0 {
|
||||||
cxxExe := b.cxxExe()
|
cxxExe := b.cxxExe()
|
||||||
|
Loading…
Reference in New Issue
Block a user