mirror of
https://github.com/golang/go.git
synced 2026-02-06 18:00:01 +00:00
cmd/go: only use check cache action's dependencies to build vet config
We manipulate the dependencies of the build action when adding the non-test variant of the package being tested as a dependency for the test, so the set of deps of the build package doesn't correctly represent the dependencies of the package that have been built. Restrict the set of dependencies we use to populate the vet data to the actual build dependencies depended on by the check cache action so we don't check an action that we don't actually depend on (and which may not have completed yet!) Fixes #75380 Change-Id: I029080d00b3b10a837abcfb7039e00206a6a6964 Reviewed-on: https://go-review.googlesource.com/c/go/+/734961 Reviewed-by: Michael Matloob <matloob@google.com> Reviewed-by: Michael Pratt <mpratt@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This commit is contained in:
parent
2bbb2ace34
commit
108b333d51
1 changed files with 6 additions and 6 deletions
|
|
@ -627,7 +627,7 @@ func (b *Builder) checkCacheForBuild(a, buildAction *Action, covMetaFileName str
|
|||
// If we are going to do a full build anyway,
|
||||
// we're going to regenerate the files in the build action anyway.
|
||||
if need == needVet {
|
||||
if err := b.loadCachedVet(buildAction); err == nil {
|
||||
if err := b.loadCachedVet(buildAction, a.Deps); err == nil {
|
||||
need &^= needVet
|
||||
}
|
||||
}
|
||||
|
|
@ -841,7 +841,7 @@ func (b *Builder) build(ctx context.Context, a *Action) (err error) {
|
|||
|
||||
// Prepare Go vet config if needed.
|
||||
if need&needVet != 0 {
|
||||
buildVetConfig(a, srcfiles)
|
||||
buildVetConfig(a, srcfiles, a.Deps)
|
||||
need &^= needVet
|
||||
}
|
||||
if need&needCompiledGoFiles != 0 {
|
||||
|
|
@ -1121,7 +1121,7 @@ func (b *Builder) cacheSrcFiles(a *Action, srcfiles []string) {
|
|||
cache.PutBytes(c, cache.Subkey(a.actionID, "srcfiles"), buf.Bytes())
|
||||
}
|
||||
|
||||
func (b *Builder) loadCachedVet(a *Action) error {
|
||||
func (b *Builder) loadCachedVet(a *Action, vetDeps []*Action) error {
|
||||
c := cache.Default()
|
||||
list, _, err := cache.GetBytes(c, cache.Subkey(a.actionID, "srcfiles"))
|
||||
if err != nil {
|
||||
|
|
@ -1141,7 +1141,7 @@ func (b *Builder) loadCachedVet(a *Action) error {
|
|||
}
|
||||
srcfiles = append(srcfiles, a.Objdir+name)
|
||||
}
|
||||
buildVetConfig(a, srcfiles)
|
||||
buildVetConfig(a, srcfiles, vetDeps)
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
@ -1197,7 +1197,7 @@ type vetConfig struct {
|
|||
SucceedOnTypecheckFailure bool // awful hack; see #18395 and below
|
||||
}
|
||||
|
||||
func buildVetConfig(a *Action, srcfiles []string) {
|
||||
func buildVetConfig(a *Action, srcfiles []string, vetDeps []*Action) {
|
||||
// Classify files based on .go extension.
|
||||
// srcfiles does not include raw cgo files.
|
||||
var gofiles, nongofiles []string
|
||||
|
|
@ -1253,7 +1253,7 @@ func buildVetConfig(a *Action, srcfiles []string) {
|
|||
vcfgMapped[p] = true
|
||||
}
|
||||
|
||||
for _, a1 := range a.Deps {
|
||||
for _, a1 := range vetDeps {
|
||||
p1 := a1.Package
|
||||
if p1 == nil || p1.ImportPath == "" || p1 == a.Package {
|
||||
continue
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue