mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/go: use local state object in work.runBuild and work.runInstall
This commit modifies `runBuild` and `runInstall` 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/work
rf '
add build.go:/func runBuild\(/-0 var moduleLoaderState *modload.State
ex {
import "cmd/go/internal/modload";
modload.LoaderState -> moduleLoaderState
}
add runBuild://+0 moduleLoaderState := modload.NewState()
add runInstall://+0 moduleLoaderState := modload.NewState()
rm build.go:/var moduleLoaderState \*modload.State/
'
Change-Id: I1137e0b898a5bda8697dce8713f96f238ae8b76c
Reviewed-on: https://go-review.googlesource.com/c/go/+/711135
Reviewed-by: Michael Matloob <matloob@golang.org>
Reviewed-by: Michael Matloob <matloob@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This commit is contained in:
parent
643f80a11f
commit
12ec09f434
1 changed files with 18 additions and 16 deletions
|
|
@ -459,16 +459,17 @@ func oneMainPkg(pkgs []*load.Package) []*load.Package {
|
||||||
var pkgsFilter = func(pkgs []*load.Package) []*load.Package { return pkgs }
|
var pkgsFilter = func(pkgs []*load.Package) []*load.Package { return pkgs }
|
||||||
|
|
||||||
func runBuild(ctx context.Context, cmd *base.Command, args []string) {
|
func runBuild(ctx context.Context, cmd *base.Command, args []string) {
|
||||||
modload.InitWorkfile(modload.LoaderState)
|
moduleLoaderState := modload.NewState()
|
||||||
BuildInit(modload.LoaderState)
|
modload.InitWorkfile(moduleLoaderState)
|
||||||
b := NewBuilder("", modload.LoaderState.VendorDirOrEmpty)
|
BuildInit(moduleLoaderState)
|
||||||
|
b := NewBuilder("", moduleLoaderState.VendorDirOrEmpty)
|
||||||
defer func() {
|
defer func() {
|
||||||
if err := b.Close(); err != nil {
|
if err := b.Close(); err != nil {
|
||||||
base.Fatal(err)
|
base.Fatal(err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
pkgs := load.PackagesAndErrors(modload.LoaderState, ctx, load.PackageOpts{AutoVCS: true}, args)
|
pkgs := load.PackagesAndErrors(moduleLoaderState, ctx, load.PackageOpts{AutoVCS: true}, args)
|
||||||
load.CheckPackageErrors(pkgs)
|
load.CheckPackageErrors(pkgs)
|
||||||
|
|
||||||
explicitO := len(cfg.BuildO) > 0
|
explicitO := len(cfg.BuildO) > 0
|
||||||
|
|
@ -503,7 +504,7 @@ func runBuild(ctx context.Context, cmd *base.Command, args []string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if cfg.BuildCover {
|
if cfg.BuildCover {
|
||||||
load.PrepareForCoverageBuild(modload.LoaderState, pkgs)
|
load.PrepareForCoverageBuild(moduleLoaderState, pkgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
if cfg.BuildO != "" {
|
if cfg.BuildO != "" {
|
||||||
|
|
@ -527,7 +528,7 @@ func runBuild(ctx context.Context, cmd *base.Command, args []string) {
|
||||||
p.Target += cfg.ExeSuffix
|
p.Target += cfg.ExeSuffix
|
||||||
p.Stale = true
|
p.Stale = true
|
||||||
p.StaleReason = "build -o flag in use"
|
p.StaleReason = "build -o flag in use"
|
||||||
a.Deps = append(a.Deps, b.AutoAction(modload.LoaderState, ModeInstall, depMode, p))
|
a.Deps = append(a.Deps, b.AutoAction(moduleLoaderState, ModeInstall, depMode, p))
|
||||||
}
|
}
|
||||||
if len(a.Deps) == 0 {
|
if len(a.Deps) == 0 {
|
||||||
base.Fatalf("go: no main packages to build")
|
base.Fatalf("go: no main packages to build")
|
||||||
|
|
@ -544,17 +545,17 @@ func runBuild(ctx context.Context, cmd *base.Command, args []string) {
|
||||||
p.Target = cfg.BuildO
|
p.Target = cfg.BuildO
|
||||||
p.Stale = true // must build - not up to date
|
p.Stale = true // must build - not up to date
|
||||||
p.StaleReason = "build -o flag in use"
|
p.StaleReason = "build -o flag in use"
|
||||||
a := b.AutoAction(modload.LoaderState, ModeInstall, depMode, p)
|
a := b.AutoAction(moduleLoaderState, ModeInstall, depMode, p)
|
||||||
b.Do(ctx, a)
|
b.Do(ctx, a)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
a := &Action{Mode: "go build"}
|
a := &Action{Mode: "go build"}
|
||||||
for _, p := range pkgs {
|
for _, p := range pkgs {
|
||||||
a.Deps = append(a.Deps, b.AutoAction(modload.LoaderState, ModeBuild, depMode, p))
|
a.Deps = append(a.Deps, b.AutoAction(moduleLoaderState, ModeBuild, depMode, p))
|
||||||
}
|
}
|
||||||
if cfg.BuildBuildmode == "shared" {
|
if cfg.BuildBuildmode == "shared" {
|
||||||
a = b.buildmodeShared(modload.LoaderState, ModeBuild, depMode, args, pkgs, a)
|
a = b.buildmodeShared(moduleLoaderState, ModeBuild, depMode, args, pkgs, a)
|
||||||
}
|
}
|
||||||
b.Do(ctx, a)
|
b.Do(ctx, a)
|
||||||
}
|
}
|
||||||
|
|
@ -687,17 +688,18 @@ func libname(args []string, pkgs []*load.Package) (string, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func runInstall(ctx context.Context, cmd *base.Command, args []string) {
|
func runInstall(ctx context.Context, cmd *base.Command, args []string) {
|
||||||
|
moduleLoaderState := modload.NewState()
|
||||||
for _, arg := range args {
|
for _, arg := range args {
|
||||||
if strings.Contains(arg, "@") && !build.IsLocalImport(arg) && !filepath.IsAbs(arg) {
|
if strings.Contains(arg, "@") && !build.IsLocalImport(arg) && !filepath.IsAbs(arg) {
|
||||||
installOutsideModule(modload.LoaderState, ctx, args)
|
installOutsideModule(moduleLoaderState, ctx, args)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
modload.InitWorkfile(modload.LoaderState)
|
modload.InitWorkfile(moduleLoaderState)
|
||||||
BuildInit(modload.LoaderState)
|
BuildInit(moduleLoaderState)
|
||||||
pkgs := load.PackagesAndErrors(modload.LoaderState, ctx, load.PackageOpts{AutoVCS: true}, args)
|
pkgs := load.PackagesAndErrors(moduleLoaderState, ctx, load.PackageOpts{AutoVCS: true}, args)
|
||||||
if cfg.ModulesEnabled && !modload.HasModRoot(modload.LoaderState) {
|
if cfg.ModulesEnabled && !modload.HasModRoot(moduleLoaderState) {
|
||||||
haveErrors := false
|
haveErrors := false
|
||||||
allMissingErrors := true
|
allMissingErrors := true
|
||||||
for _, pkg := range pkgs {
|
for _, pkg := range pkgs {
|
||||||
|
|
@ -722,10 +724,10 @@ func runInstall(ctx context.Context, cmd *base.Command, args []string) {
|
||||||
load.CheckPackageErrors(pkgs)
|
load.CheckPackageErrors(pkgs)
|
||||||
|
|
||||||
if cfg.BuildCover {
|
if cfg.BuildCover {
|
||||||
load.PrepareForCoverageBuild(modload.LoaderState, pkgs)
|
load.PrepareForCoverageBuild(moduleLoaderState, pkgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
InstallPackages(modload.LoaderState, ctx, args, pkgs)
|
InstallPackages(moduleLoaderState, ctx, args, pkgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
// omitTestOnly returns pkgs with test-only packages removed.
|
// omitTestOnly returns pkgs with test-only packages removed.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue