mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/go: use local state object in list.runList
This commit modifies `list.runList` to construct a new modload.State
object using the new constructor instead of the current global
`modload.LoaderState` variable.
This commit is part of the overall effort to eliminate global
modloader state.
[git-generate]
cd src/cmd/go/internal/list
rf '
add list.go:/func runList\(/-0 var moduleLoaderState *modload.State
ex {
import "cmd/go/internal/modload";
modload.LoaderState -> moduleLoaderState
}
add runList://+0 moduleLoaderState := modload.NewState()
rm list.go:/var moduleLoaderState \*modload.State/
'
Change-Id: I7f45205c1c946189eb05c6178d14ce74ae259547
Reviewed-on: https://go-review.googlesource.com/c/go/+/711124
Reviewed-by: Michael Matloob <matloob@google.com>
Reviewed-by: Michael Matloob <matloob@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This commit is contained in:
parent
9926e1124e
commit
ea9cf26aa1
1 changed files with 19 additions and 18 deletions
|
|
@ -419,7 +419,8 @@ func (v *jsonFlag) needAny(fields ...string) bool {
|
||||||
var nl = []byte{'\n'}
|
var nl = []byte{'\n'}
|
||||||
|
|
||||||
func runList(ctx context.Context, cmd *base.Command, args []string) {
|
func runList(ctx context.Context, cmd *base.Command, args []string) {
|
||||||
modload.InitWorkfile(modload.LoaderState)
|
moduleLoaderState := modload.NewState()
|
||||||
|
modload.InitWorkfile(moduleLoaderState)
|
||||||
|
|
||||||
if *listFmt != "" && listJson {
|
if *listFmt != "" && listJson {
|
||||||
base.Fatalf("go list -f cannot be used with -json")
|
base.Fatalf("go list -f cannot be used with -json")
|
||||||
|
|
@ -427,11 +428,11 @@ func runList(ctx context.Context, cmd *base.Command, args []string) {
|
||||||
if *listReuse != "" && !*listM {
|
if *listReuse != "" && !*listM {
|
||||||
base.Fatalf("go list -reuse cannot be used without -m")
|
base.Fatalf("go list -reuse cannot be used without -m")
|
||||||
}
|
}
|
||||||
if *listReuse != "" && modload.HasModRoot(modload.LoaderState) {
|
if *listReuse != "" && modload.HasModRoot(moduleLoaderState) {
|
||||||
base.Fatalf("go list -reuse cannot be used inside a module")
|
base.Fatalf("go list -reuse cannot be used inside a module")
|
||||||
}
|
}
|
||||||
|
|
||||||
work.BuildInit(modload.LoaderState)
|
work.BuildInit(moduleLoaderState)
|
||||||
out := newTrackingWriter(os.Stdout)
|
out := newTrackingWriter(os.Stdout)
|
||||||
defer out.w.Flush()
|
defer out.w.Flush()
|
||||||
|
|
||||||
|
|
@ -479,7 +480,7 @@ func runList(ctx context.Context, cmd *base.Command, args []string) {
|
||||||
fm := template.FuncMap{
|
fm := template.FuncMap{
|
||||||
"join": strings.Join,
|
"join": strings.Join,
|
||||||
"context": context,
|
"context": context,
|
||||||
"module": func(path string) *modinfo.ModulePublic { return modload.ModuleInfo(modload.LoaderState, ctx, path) },
|
"module": func(path string) *modinfo.ModulePublic { return modload.ModuleInfo(moduleLoaderState, ctx, path) },
|
||||||
}
|
}
|
||||||
tmpl, err := template.New("main").Funcs(fm).Parse(*listFmt)
|
tmpl, err := template.New("main").Funcs(fm).Parse(*listFmt)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -496,12 +497,12 @@ func runList(ctx context.Context, cmd *base.Command, args []string) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
modload.Init(modload.LoaderState)
|
modload.Init(moduleLoaderState)
|
||||||
if *listRetracted {
|
if *listRetracted {
|
||||||
if cfg.BuildMod == "vendor" {
|
if cfg.BuildMod == "vendor" {
|
||||||
base.Fatalf("go list -retracted cannot be used when vendoring is enabled")
|
base.Fatalf("go list -retracted cannot be used when vendoring is enabled")
|
||||||
}
|
}
|
||||||
if !modload.Enabled(modload.LoaderState) {
|
if !modload.Enabled(moduleLoaderState) {
|
||||||
base.Fatalf("go list -retracted can only be used in module-aware mode")
|
base.Fatalf("go list -retracted can only be used in module-aware mode")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -525,11 +526,11 @@ func runList(ctx context.Context, cmd *base.Command, args []string) {
|
||||||
base.Fatalf("go list -test cannot be used with -m")
|
base.Fatalf("go list -test cannot be used with -m")
|
||||||
}
|
}
|
||||||
|
|
||||||
if modload.Init(modload.LoaderState); !modload.Enabled(modload.LoaderState) {
|
if modload.Init(moduleLoaderState); !modload.Enabled(moduleLoaderState) {
|
||||||
base.Fatalf("go: list -m cannot be used with GO111MODULE=off")
|
base.Fatalf("go: list -m cannot be used with GO111MODULE=off")
|
||||||
}
|
}
|
||||||
|
|
||||||
modload.LoadModFile(modload.LoaderState, ctx) // Sets cfg.BuildMod as a side-effect.
|
modload.LoadModFile(moduleLoaderState, ctx) // Sets cfg.BuildMod as a side-effect.
|
||||||
if cfg.BuildMod == "vendor" {
|
if cfg.BuildMod == "vendor" {
|
||||||
const actionDisabledFormat = "go: can't %s using the vendor directory\n\t(Use -mod=mod or -mod=readonly to bypass.)"
|
const actionDisabledFormat = "go: can't %s using the vendor directory\n\t(Use -mod=mod or -mod=readonly to bypass.)"
|
||||||
|
|
||||||
|
|
@ -569,7 +570,7 @@ func runList(ctx context.Context, cmd *base.Command, args []string) {
|
||||||
if *listReuse != "" && len(args) == 0 {
|
if *listReuse != "" && len(args) == 0 {
|
||||||
base.Fatalf("go: list -m -reuse only has an effect with module@version arguments")
|
base.Fatalf("go: list -m -reuse only has an effect with module@version arguments")
|
||||||
}
|
}
|
||||||
mods, err := modload.ListModules(modload.LoaderState, ctx, args, mode, *listReuse)
|
mods, err := modload.ListModules(moduleLoaderState, ctx, args, mode, *listReuse)
|
||||||
if !*listE {
|
if !*listE {
|
||||||
for _, m := range mods {
|
for _, m := range mods {
|
||||||
if m.Error != nil {
|
if m.Error != nil {
|
||||||
|
|
@ -613,7 +614,7 @@ func runList(ctx context.Context, cmd *base.Command, args []string) {
|
||||||
SuppressBuildInfo: !*listExport && !listJsonFields.needAny("Stale", "StaleReason"),
|
SuppressBuildInfo: !*listExport && !listJsonFields.needAny("Stale", "StaleReason"),
|
||||||
SuppressEmbedFiles: !*listExport && !listJsonFields.needAny("EmbedFiles", "TestEmbedFiles", "XTestEmbedFiles"),
|
SuppressEmbedFiles: !*listExport && !listJsonFields.needAny("EmbedFiles", "TestEmbedFiles", "XTestEmbedFiles"),
|
||||||
}
|
}
|
||||||
pkgs := load.PackagesAndErrors(modload.LoaderState, ctx, pkgOpts, args)
|
pkgs := load.PackagesAndErrors(moduleLoaderState, ctx, pkgOpts, args)
|
||||||
if !*listE {
|
if !*listE {
|
||||||
w := 0
|
w := 0
|
||||||
for _, pkg := range pkgs {
|
for _, pkg := range pkgs {
|
||||||
|
|
@ -648,10 +649,10 @@ func runList(ctx context.Context, cmd *base.Command, args []string) {
|
||||||
sema.Release(1)
|
sema.Release(1)
|
||||||
wg.Done()
|
wg.Done()
|
||||||
}
|
}
|
||||||
pmain, ptest, pxtest = load.TestPackagesAndErrors(modload.LoaderState, ctx, done, pkgOpts, p, nil)
|
pmain, ptest, pxtest = load.TestPackagesAndErrors(moduleLoaderState, ctx, done, pkgOpts, p, nil)
|
||||||
} else {
|
} else {
|
||||||
var perr *load.Package
|
var perr *load.Package
|
||||||
pmain, ptest, pxtest, perr = load.TestPackagesFor(modload.LoaderState, ctx, pkgOpts, p, nil)
|
pmain, ptest, pxtest, perr = load.TestPackagesFor(moduleLoaderState, ctx, pkgOpts, p, nil)
|
||||||
if perr != nil {
|
if perr != nil {
|
||||||
base.Fatalf("go: can't load test package: %s", perr.Error)
|
base.Fatalf("go: can't load test package: %s", perr.Error)
|
||||||
}
|
}
|
||||||
|
|
@ -713,7 +714,7 @@ func runList(ctx context.Context, cmd *base.Command, args []string) {
|
||||||
// Do we need to run a build to gather information?
|
// Do we need to run a build to gather information?
|
||||||
needStale := (listJson && listJsonFields.needAny("Stale", "StaleReason")) || strings.Contains(*listFmt, ".Stale")
|
needStale := (listJson && listJsonFields.needAny("Stale", "StaleReason")) || strings.Contains(*listFmt, ".Stale")
|
||||||
if needStale || *listExport || *listCompiled {
|
if needStale || *listExport || *listCompiled {
|
||||||
b := work.NewBuilder("", modload.LoaderState.VendorDirOrEmpty)
|
b := work.NewBuilder("", moduleLoaderState.VendorDirOrEmpty)
|
||||||
if *listE {
|
if *listE {
|
||||||
b.AllowErrors = true
|
b.AllowErrors = true
|
||||||
}
|
}
|
||||||
|
|
@ -727,13 +728,13 @@ func runList(ctx context.Context, cmd *base.Command, args []string) {
|
||||||
b.NeedExport = *listExport
|
b.NeedExport = *listExport
|
||||||
b.NeedCompiledGoFiles = *listCompiled
|
b.NeedCompiledGoFiles = *listCompiled
|
||||||
if cfg.BuildCover {
|
if cfg.BuildCover {
|
||||||
load.PrepareForCoverageBuild(modload.LoaderState, pkgs)
|
load.PrepareForCoverageBuild(moduleLoaderState, pkgs)
|
||||||
}
|
}
|
||||||
a := &work.Action{}
|
a := &work.Action{}
|
||||||
// TODO: Use pkgsFilter?
|
// TODO: Use pkgsFilter?
|
||||||
for _, p := range pkgs {
|
for _, p := range pkgs {
|
||||||
if len(p.GoFiles)+len(p.CgoFiles) > 0 {
|
if len(p.GoFiles)+len(p.CgoFiles) > 0 {
|
||||||
a.Deps = append(a.Deps, b.AutoAction(modload.LoaderState, work.ModeInstall, work.ModeInstall, p))
|
a.Deps = append(a.Deps, b.AutoAction(moduleLoaderState, work.ModeInstall, work.ModeInstall, p))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
b.Do(ctx, a)
|
b.Do(ctx, a)
|
||||||
|
|
@ -741,8 +742,8 @@ func runList(ctx context.Context, cmd *base.Command, args []string) {
|
||||||
|
|
||||||
for _, p := range pkgs {
|
for _, p := range pkgs {
|
||||||
// Show vendor-expanded paths in listing
|
// Show vendor-expanded paths in listing
|
||||||
p.TestImports = p.Resolve(modload.LoaderState, p.TestImports)
|
p.TestImports = p.Resolve(moduleLoaderState, p.TestImports)
|
||||||
p.XTestImports = p.Resolve(modload.LoaderState, p.XTestImports)
|
p.XTestImports = p.Resolve(moduleLoaderState, p.XTestImports)
|
||||||
p.DepOnly = !cmdline[p]
|
p.DepOnly = !cmdline[p]
|
||||||
|
|
||||||
if *listCompiled {
|
if *listCompiled {
|
||||||
|
|
@ -850,7 +851,7 @@ func runList(ctx context.Context, cmd *base.Command, args []string) {
|
||||||
if *listRetracted {
|
if *listRetracted {
|
||||||
mode |= modload.ListRetracted
|
mode |= modload.ListRetracted
|
||||||
}
|
}
|
||||||
rmods, err := modload.ListModules(modload.LoaderState, ctx, args, mode, *listReuse)
|
rmods, err := modload.ListModules(moduleLoaderState, ctx, args, mode, *listReuse)
|
||||||
if err != nil && !*listE {
|
if err != nil && !*listE {
|
||||||
base.Error(err)
|
base.Error(err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue