]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go/internal/modload: rename LoadBuildList and BuildList
authorBryan C. Mills <bcmills@google.com>
Mon, 27 Jul 2020 16:57:36 +0000 (12:57 -0400)
committerBryan C. Mills <bcmills@google.com>
Wed, 9 Sep 2020 22:39:02 +0000 (22:39 +0000)
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>
src/cmd/go/internal/list/list.go
src/cmd/go/internal/modcmd/graph.go
src/cmd/go/internal/modcmd/vendor.go
src/cmd/go/internal/modcmd/verify.go
src/cmd/go/internal/modget/get.go
src/cmd/go/internal/modload/build.go
src/cmd/go/internal/modload/buildlist.go
src/cmd/go/internal/modload/list.go

index 65003dc883a412e2d01919c74c45e41efe1a520c..23500dd9d8e30034c40f94879c149b2fc8ef7c29 100644 (file)
@@ -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 {
index 6da12b9cab20b9eb288962149e1fd8e1e8374c2d..513536a010c1cbf8dbbe5358ed75649dd264185d 100644 (file)
@@ -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 {
index e5353b5c7fef60ba95055d6df565c368beca8e66..30334f3a4299f650c2a056e3034c88f6ec37b691 100644 (file)
@@ -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)
index 73ab714d101a12a6f588931c82a000acd9c3db04..d5428258234a475806df16b794a4d4643a0e22c7 100644 (file)
@@ -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 {
index cf9ad66b3d0c09e1d4c19f606ee38238fa06fe3f..a2a8287d84658e46f515c2f98a94309b93a3705b 100644 (file)
@@ -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 == "" {
index e9f9a82fabb2efdc972c38e046373201f6f7b2b4..9ca6230500e3ef6c7bc9f091cc1f9dcb9eac7675 100644 (file)
@@ -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)
index 2302b044e816bc7796b579d8c1501d9dfb147d7f..581a1b944acaecd3fc2c76e94bd210f41d7d7316 100644 (file)
@@ -27,34 +27,28 @@ 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
 }
 
-// ReloadBuildList resets the state of loaded packages, then loads and returns
-// the build list set in SetBuildList.
-func ReloadBuildList() []module.Version {
-       loaded = loadFromRoots(loaderParams{
-               tags:               imports.Tags(),
-               listRoots:          func() []string { return nil },
-               allClosesOverTests: index.allPatternClosesOverTests(), // but doesn't matter because the root list is empty.
-       })
-       return buildList
-}
-
-// BuildList returns the module build list,
-// typically constructed by a previous call to
-// LoadBuildList or ImportPaths.
+// 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 BuildList() []module.Version {
+func LoadedModules() []module.Version {
        return buildList
 }
 
@@ -65,6 +59,17 @@ 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 {
+       loaded = loadFromRoots(loaderParams{
+               tags:               imports.Tags(),
+               listRoots:          func() []string { return nil },
+               allClosesOverTests: index.allPatternClosesOverTests(), // but doesn't matter because the root list is empty.
+       })
+       return buildList
+}
+
 // 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.
index 8c7b9a3950b59c62372af1d4da09c66a53d9642a..3491f941cd3b37c0f89809321e34add608e58c14 100644 (file)
@@ -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)}
        }