mirror of
https://github.com/golang/go
synced 2024-11-23 11:40:07 -07:00
cmd/go: verify lazy-loading invariants when loading the vendor list for a lazy module
For #36460 Change-Id: Ib4b1baea35826c3e359456f8dba09a49283e7fee Reviewed-on: https://go-review.googlesource.com/c/go/+/315069 Trust: Bryan C. Mills <bcmills@google.com> Run-TryBot: Bryan C. Mills <bcmills@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Michael Matloob <matloob@golang.org>
This commit is contained in:
parent
9a81702b97
commit
8d8abb3b8a
@ -140,12 +140,21 @@ func (rs *Requirements) initVendor(vendorList []module.Version) {
|
|||||||
// The roots of a lazy module should already include every module in the
|
// The roots of a lazy module should already include every module in the
|
||||||
// vendor list, because the vendored modules are the same as those
|
// vendor list, because the vendored modules are the same as those
|
||||||
// maintained as roots by the lazy loading “import invariant”.
|
// maintained as roots by the lazy loading “import invariant”.
|
||||||
if go117LazyTODO {
|
//
|
||||||
// Double-check here that that invariant holds.
|
// Just to be sure, we'll double-check that here.
|
||||||
|
inconsistent := false
|
||||||
|
for _, m := range vendorList {
|
||||||
|
if v, ok := rs.rootSelected(m.Path); !ok || v != m.Version {
|
||||||
|
base.Errorf("go: vendored module %v should be required explicitly in go.mod", m)
|
||||||
|
inconsistent = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if inconsistent {
|
||||||
|
base.Fatalf("go: %v", errGoModDirty)
|
||||||
}
|
}
|
||||||
|
|
||||||
// So we can just treat the rest of the module graph as effectively
|
// Now we can treat the rest of the module graph as effectively “pruned
|
||||||
// “pruned out”, like a more aggressive version of lazy loading:
|
// out”, like a more aggressive version of lazy loading: in vendor mode,
|
||||||
// the root requirements *are* the complete module graph.
|
// the root requirements *are* the complete module graph.
|
||||||
mg.g.Require(Target, rs.rootModules)
|
mg.g.Require(Target, rs.rootModules)
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user