mirror of
https://github.com/golang/go
synced 2024-09-29 21:34:28 -06:00
cmd/go/internal/modload: rename LoadBuildList and BuildList
With lazy loading, the “build list” can be refined as packages are loaded. Rename functions that return the build list to more precisely describe the set of modules returned by the call. Also eliminate a redundant call to LoadBuildList (right before ListModules, which itself begins with the same call). For #36460 Change-Id: I0fc4f9dd7602e0df5e166e329ee5d516d810ca53 Reviewed-on: https://go-review.googlesource.com/c/go/+/249878 Run-TryBot: Bryan C. Mills <bcmills@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com> Reviewed-by: Michael Matloob <matloob@golang.org>
This commit is contained in:
parent
521393e7e0
commit
564b350c08
@ -437,8 +437,6 @@ func runList(ctx context.Context, cmd *base.Command, args []string) {
|
||||
}
|
||||
}
|
||||
|
||||
modload.LoadBuildList(ctx)
|
||||
|
||||
mods := modload.ListModules(ctx, args, *listU, *listVersions, *listRetracted)
|
||||
if !*listE {
|
||||
for _, m := range mods {
|
||||
|
@ -48,7 +48,7 @@ func runGraph(ctx context.Context, cmd *base.Command, args []string) {
|
||||
base.Fatalf("go: cannot find main module; see 'go help modules'")
|
||||
}
|
||||
}
|
||||
modload.LoadBuildList(ctx)
|
||||
modload.LoadAllModules(ctx)
|
||||
|
||||
reqs := modload.MinReqs()
|
||||
format := func(m module.Version) string {
|
||||
|
@ -77,7 +77,7 @@ func runVendor(ctx context.Context, cmd *base.Command, args []string) {
|
||||
}
|
||||
|
||||
var buf bytes.Buffer
|
||||
for _, m := range modload.BuildList()[1:] {
|
||||
for _, m := range modload.LoadedModules()[1:] {
|
||||
if pkgs := modpkgs[m]; len(pkgs) > 0 || isExplicit[m] {
|
||||
line := moduleLine(m, modload.Replacement(m))
|
||||
buf.WriteString(line)
|
||||
|
@ -60,7 +60,7 @@ func runVerify(ctx context.Context, cmd *base.Command, args []string) {
|
||||
sem := make(chan token, runtime.GOMAXPROCS(0))
|
||||
|
||||
// Use a slice of result channels, so that the output is deterministic.
|
||||
mods := modload.LoadBuildList(ctx)[1:]
|
||||
mods := modload.LoadAllModules(ctx)[1:]
|
||||
errsChans := make([]<-chan []error, len(mods))
|
||||
|
||||
for i, mod := range mods {
|
||||
|
@ -278,7 +278,7 @@ func runGet(ctx context.Context, cmd *base.Command, args []string) {
|
||||
}
|
||||
modload.LoadTests = *getT
|
||||
|
||||
buildList := modload.LoadBuildList(ctx)
|
||||
buildList := modload.LoadAllModules(ctx)
|
||||
buildList = buildList[:len(buildList):len(buildList)] // copy on append
|
||||
versionByPath := make(map[string]string)
|
||||
for _, m := range buildList {
|
||||
@ -599,7 +599,7 @@ func runGet(ctx context.Context, cmd *base.Command, args []string) {
|
||||
base.ExitIfErrors()
|
||||
|
||||
// Stop if no changes have been made to the build list.
|
||||
buildList = modload.BuildList()
|
||||
buildList = modload.LoadedModules()
|
||||
eq := len(buildList) == len(prevBuildList)
|
||||
for i := 0; eq && i < len(buildList); i++ {
|
||||
eq = buildList[i] == prevBuildList[i]
|
||||
@ -617,7 +617,7 @@ func runGet(ctx context.Context, cmd *base.Command, args []string) {
|
||||
|
||||
// Handle downgrades.
|
||||
var down []module.Version
|
||||
for _, m := range modload.BuildList() {
|
||||
for _, m := range modload.LoadedModules() {
|
||||
q := byPath[m.Path]
|
||||
if q != nil && semver.Compare(m.Version, q.m.Version) > 0 {
|
||||
down = append(down, module.Version{Path: m.Path, Version: q.m.Version})
|
||||
@ -641,7 +641,7 @@ func runGet(ctx context.Context, cmd *base.Command, args []string) {
|
||||
var lostUpgrades []*query
|
||||
if len(down) > 0 {
|
||||
versionByPath = make(map[string]string)
|
||||
for _, m := range modload.BuildList() {
|
||||
for _, m := range modload.LoadedModules() {
|
||||
versionByPath[m.Path] = m.Version
|
||||
}
|
||||
for _, q := range byPath {
|
||||
@ -892,7 +892,7 @@ func reportRetractions(ctx context.Context) {
|
||||
// Use modload.ListModules, since that provides information in the same format
|
||||
// as 'go list -m'. Don't query for "all", since that's not allowed outside a
|
||||
// module.
|
||||
buildList := modload.BuildList()
|
||||
buildList := modload.LoadedModules()
|
||||
args := make([]string, 0, len(buildList))
|
||||
for _, m := range buildList {
|
||||
if m.Version == "" {
|
||||
|
@ -76,7 +76,7 @@ func ModuleInfo(ctx context.Context, path string) *modinfo.ModulePublic {
|
||||
return moduleInfo(ctx, m, fromBuildList, listRetracted)
|
||||
}
|
||||
|
||||
for _, m := range BuildList() {
|
||||
for _, m := range LoadedModules() {
|
||||
if m.Path == path {
|
||||
fromBuildList := true
|
||||
return moduleInfo(ctx, m, fromBuildList, listRetracted)
|
||||
|
@ -27,18 +27,38 @@ import (
|
||||
//
|
||||
var buildList []module.Version
|
||||
|
||||
// LoadBuildList loads and returns the build list from go.mod.
|
||||
// The loading of the build list happens automatically in ImportPaths:
|
||||
// LoadBuildList need only be called if ImportPaths is not
|
||||
// (typically in commands that care about the module but
|
||||
// no particular package).
|
||||
func LoadBuildList(ctx context.Context) []module.Version {
|
||||
// LoadAllModules loads and returns the list of modules matching the "all"
|
||||
// module pattern, starting with the Target module and in a deterministic
|
||||
// (stable) order, without loading any packages.
|
||||
//
|
||||
// Modules are loaded automatically (and lazily) in ImportPaths:
|
||||
// LoadAllModules need only be called if ImportPaths is not,
|
||||
// typically in commands that care about modules but no particular package.
|
||||
//
|
||||
// The caller must not modify the returned list.
|
||||
func LoadAllModules(ctx context.Context) []module.Version {
|
||||
InitMod(ctx)
|
||||
ReloadBuildList()
|
||||
WriteGoMod()
|
||||
return buildList
|
||||
}
|
||||
|
||||
// LoadedModules returns the list of module requirements loaded or set by a
|
||||
// previous call (typically LoadAllModules or ImportPaths), starting with the
|
||||
// Target module and in a deterministic (stable) order.
|
||||
//
|
||||
// The caller must not modify the returned list.
|
||||
func LoadedModules() []module.Version {
|
||||
return buildList
|
||||
}
|
||||
|
||||
// SetBuildList sets the module build list.
|
||||
// The caller is responsible for ensuring that the list is valid.
|
||||
// SetBuildList does not retain a reference to the original list.
|
||||
func SetBuildList(list []module.Version) {
|
||||
buildList = append([]module.Version{}, list...)
|
||||
}
|
||||
|
||||
// ReloadBuildList resets the state of loaded packages, then loads and returns
|
||||
// the build list set in SetBuildList.
|
||||
func ReloadBuildList() []module.Version {
|
||||
@ -50,21 +70,6 @@ func ReloadBuildList() []module.Version {
|
||||
return buildList
|
||||
}
|
||||
|
||||
// BuildList returns the module build list,
|
||||
// typically constructed by a previous call to
|
||||
// LoadBuildList or ImportPaths.
|
||||
// The caller must not modify the returned list.
|
||||
func BuildList() []module.Version {
|
||||
return buildList
|
||||
}
|
||||
|
||||
// SetBuildList sets the module build list.
|
||||
// The caller is responsible for ensuring that the list is valid.
|
||||
// SetBuildList does not retain a reference to the original list.
|
||||
func SetBuildList(list []module.Version) {
|
||||
buildList = append([]module.Version{}, list...)
|
||||
}
|
||||
|
||||
// TidyBuildList trims the build list to the minimal requirements needed to
|
||||
// retain the same versions of all packages from the preceding Load* or
|
||||
// ImportPaths* call.
|
||||
|
@ -58,7 +58,7 @@ func ListModules(ctx context.Context, args []string, listU, listVersions, listRe
|
||||
}
|
||||
|
||||
func listModules(ctx context.Context, args []string, listVersions, listRetracted bool) []*modinfo.ModulePublic {
|
||||
LoadBuildList(ctx)
|
||||
LoadAllModules(ctx)
|
||||
if len(args) == 0 {
|
||||
return []*modinfo.ModulePublic{moduleInfo(ctx, buildList[0], true, listRetracted)}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user