// Construct a build list with a minimal set of roots.
// This may remove or downgrade modules in altMods.
- reqs := &mvsReqs{roots: keep}
+ reqs := &mvsReqs{loaderstate: loaderstate, roots: keep}
min, err := mvs.Req(mainModule, rootPaths, reqs)
if err != nil {
return nil, err
var roots []module.Version
for _, mainModule := range loaderstate.MainModules.Versions() {
- min, err := mvs.Req(mainModule, rootPaths, &mvsReqs{roots: keep})
+ min, err := mvs.Req(mainModule, rootPaths, &mvsReqs{loaderstate: loaderstate, roots: keep})
if err != nil {
return rs, err
}
}
}
- roots, err = mvs.Req(loaderstate.MainModules.mustGetSingleMainModule(loaderstate), rootPaths, &mvsReqs{roots: roots})
+ roots, err = mvs.Req(loaderstate.MainModules.mustGetSingleMainModule(loaderstate), rootPaths, &mvsReqs{loaderstate: loaderstate, roots: roots})
if err != nil {
return nil, false, err
}
// mvsReqs implements mvs.Reqs for module semantic versions,
// with any exclusions or replacements applied internally.
type mvsReqs struct {
- roots []module.Version
+ loaderstate *State // TODO(jitsu): Is there a way we can not depend on the entire loader state?
+ roots []module.Version
}
func (r *mvsReqs) Required(mod module.Version) ([]module.Version, error) {
- if mod.Version == "" && LoaderState.MainModules.Contains(mod.Path) {
+ if mod.Version == "" && r.loaderstate.MainModules.Contains(mod.Path) {
// Use the build list as it existed when r was constructed, not the current
// global build list.
return r.roots, nil
return nil, nil
}
- summary, err := goModSummary(LoaderState, mod)
+ summary, err := goModSummary(r.loaderstate, mod)
if err != nil {
return nil, err
}
return module.Version{Path: m.Path, Version: "none"}, nil
}
-func (*mvsReqs) Previous(m module.Version) (module.Version, error) {
+func (r *mvsReqs) Previous(m module.Version) (module.Version, error) {
// TODO(golang.org/issue/38714): thread tracing context through MVS.
- return previousVersion(LoaderState, context.TODO(), m)
+ return previousVersion(r.loaderstate, context.TODO(), m)
}