mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/go: inject State parameter into work.runInstall
This command modifies the call tree starting at `work.runInstall` to inject a `State` parameter to every function that is currently using the global `modload.LoaderState` variable. By explicilty passing a `State` parameter, we can begin to eliminate the usage of the global `modload.LoaderState`. This commit is part of the overall effort to eliminate global modloader state. [git-generate] cd src/cmd/go/internal/work rf 'inject modload.LoaderState runInstall' cd .. ./rf-cleanup.zsh Change-Id: I038d2c4870d67835c165852b223eaad3e2496202 Reviewed-on: https://go-review.googlesource.com/c/go/+/710304 Reviewed-by: Michael Matloob <matloob@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Michael Matloob <matloob@golang.org>
This commit is contained in:
parent
e94a5008f6
commit
d57c3fd743
1 changed files with 13 additions and 13 deletions
|
|
@ -689,7 +689,7 @@ func libname(args []string, pkgs []*load.Package) (string, error) {
|
|||
func runInstall(ctx context.Context, cmd *base.Command, args []string) {
|
||||
for _, arg := range args {
|
||||
if strings.Contains(arg, "@") && !build.IsLocalImport(arg) && !filepath.IsAbs(arg) {
|
||||
installOutsideModule(ctx, args)
|
||||
installOutsideModule(modload.LoaderState, ctx, args)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
|
@ -725,7 +725,7 @@ func runInstall(ctx context.Context, cmd *base.Command, args []string) {
|
|||
load.PrepareForCoverageBuild(modload.LoaderState, pkgs)
|
||||
}
|
||||
|
||||
InstallPackages(ctx, args, pkgs)
|
||||
InstallPackages(modload.LoaderState, ctx, args, pkgs)
|
||||
}
|
||||
|
||||
// omitTestOnly returns pkgs with test-only packages removed.
|
||||
|
|
@ -745,7 +745,7 @@ func omitTestOnly(pkgs []*load.Package) []*load.Package {
|
|||
return list
|
||||
}
|
||||
|
||||
func InstallPackages(ctx context.Context, patterns []string, pkgs []*load.Package) {
|
||||
func InstallPackages(loaderstate *modload.State, ctx context.Context, patterns []string, pkgs []*load.Package) {
|
||||
ctx, span := trace.StartSpan(ctx, "InstallPackages "+strings.Join(patterns, " "))
|
||||
defer span.Done()
|
||||
|
||||
|
|
@ -797,7 +797,7 @@ func InstallPackages(ctx context.Context, patterns []string, pkgs []*load.Packag
|
|||
// If p is a tool, delay the installation until the end of the build.
|
||||
// This avoids installing assemblers/compilers that are being executed
|
||||
// by other steps in the build.
|
||||
a1 := b.AutoAction(modload.LoaderState, ModeInstall, depMode, p)
|
||||
a1 := b.AutoAction(loaderstate, ModeInstall, depMode, p)
|
||||
if load.InstallTargetDir(p) == load.ToTool {
|
||||
a.Deps = append(a.Deps, a1.Deps...)
|
||||
a1.Deps = append(a1.Deps, a)
|
||||
|
|
@ -819,7 +819,7 @@ func InstallPackages(ctx context.Context, patterns []string, pkgs []*load.Packag
|
|||
// tools above did not apply, and a is just a simple Action
|
||||
// with a list of Deps, one per package named in pkgs,
|
||||
// the same as in runBuild.
|
||||
a = b.buildmodeShared(modload.LoaderState, ModeInstall, ModeInstall, patterns, pkgs, a)
|
||||
a = b.buildmodeShared(loaderstate, ModeInstall, ModeInstall, patterns, pkgs, a)
|
||||
}
|
||||
|
||||
b.Do(ctx, a)
|
||||
|
|
@ -858,12 +858,12 @@ func InstallPackages(ctx context.Context, patterns []string, pkgs []*load.Packag
|
|||
// in the current directory or parent directories.
|
||||
//
|
||||
// See golang.org/issue/40276 for details and rationale.
|
||||
func installOutsideModule(ctx context.Context, args []string) {
|
||||
modload.LoaderState.ForceUseModules = true
|
||||
modload.LoaderState.RootMode = modload.NoRoot
|
||||
modload.AllowMissingModuleImports(modload.LoaderState)
|
||||
modload.Init(modload.LoaderState)
|
||||
BuildInit(modload.LoaderState)
|
||||
func installOutsideModule(loaderstate *modload.State, ctx context.Context, args []string) {
|
||||
loaderstate.ForceUseModules = true
|
||||
loaderstate.RootMode = modload.NoRoot
|
||||
modload.AllowMissingModuleImports(loaderstate)
|
||||
modload.Init(loaderstate)
|
||||
BuildInit(loaderstate)
|
||||
|
||||
// Load packages. Ignore non-main packages.
|
||||
// Print a warning if an argument contains "..." and matches no main packages.
|
||||
|
|
@ -872,7 +872,7 @@ func installOutsideModule(ctx context.Context, args []string) {
|
|||
// TODO(golang.org/issue/40276): don't report errors loading non-main packages
|
||||
// matched by a pattern.
|
||||
pkgOpts := load.PackageOpts{MainOnly: true}
|
||||
pkgs, err := load.PackagesAndErrorsOutsideModule(modload.LoaderState, ctx, pkgOpts, args)
|
||||
pkgs, err := load.PackagesAndErrorsOutsideModule(loaderstate, ctx, pkgOpts, args)
|
||||
if err != nil {
|
||||
base.Fatal(err)
|
||||
}
|
||||
|
|
@ -883,7 +883,7 @@ func installOutsideModule(ctx context.Context, args []string) {
|
|||
}
|
||||
|
||||
// Build and install the packages.
|
||||
InstallPackages(ctx, patterns, pkgs)
|
||||
InstallPackages(loaderstate, ctx, patterns, pkgs)
|
||||
}
|
||||
|
||||
// ExecCmd is the command to use to run user binaries.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue