aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/go/internal/work/build.go
diff options
context:
space:
mode:
authorMichael Matloob <matloob@golang.org>2020-06-17 15:50:14 -0400
committerMichael Matloob <matloob@golang.org>2020-08-12 18:35:45 +0000
commit2bfa45cfa994512c47da2d98f3baca5bb474ec9b (patch)
tree778bf0b657ea89fd96c28c467f2f2e1d0054b7b8 /src/cmd/go/internal/work/build.go
parent14715b24793176b30b3c41adf4ac4e676c2a56f0 (diff)
downloadgo-2bfa45cfa994512c47da2d98f3baca5bb474ec9b.tar.gz
go-2bfa45cfa994512c47da2d98f3baca5bb474ec9b.zip
cmd/go: propagate context into PackagesForBuild and Do for tracing
This change propagates context into PackagesForErrors and Do for the purpose of tracing, and calls trace.StartSpan on PackagesForErrors and Do, so that the trace now shows the broad outline of where the "Loading" and "Execution" phases are in the build. Updates #38714 Change-Id: Ib9a7cf7030210f68f76663d1c8a7461e0a226611 Reviewed-on: https://go-review.googlesource.com/c/go/+/238541 Run-TryBot: Michael Matloob <matloob@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com> Reviewed-by: Bryan C. Mills <bcmills@google.com>
Diffstat (limited to 'src/cmd/go/internal/work/build.go')
-rw-r--r--src/cmd/go/internal/work/build.go20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/cmd/go/internal/work/build.go b/src/cmd/go/internal/work/build.go
index 2bbee43ab4..d020aa6e9f 100644
--- a/src/cmd/go/internal/work/build.go
+++ b/src/cmd/go/internal/work/build.go
@@ -19,6 +19,7 @@ import (
"cmd/go/internal/cfg"
"cmd/go/internal/load"
"cmd/go/internal/search"
+ "cmd/go/internal/trace"
)
var CmdBuild = &base.Command{
@@ -350,7 +351,7 @@ func runBuild(ctx context.Context, cmd *base.Command, args []string) {
var b Builder
b.Init()
- pkgs := load.PackagesForBuild(args)
+ pkgs := load.PackagesForBuild(ctx, args)
explicitO := len(cfg.BuildO) > 0
@@ -379,7 +380,7 @@ func runBuild(ctx context.Context, cmd *base.Command, args []string) {
depMode = ModeInstall
}
- pkgs = omitTestOnly(pkgsFilter(load.Packages(args)))
+ pkgs = omitTestOnly(pkgsFilter(load.Packages(ctx, args)))
// Special case -o /dev/null by not writing at all.
if cfg.BuildO == os.DevNull {
@@ -409,7 +410,7 @@ func runBuild(ctx context.Context, cmd *base.Command, args []string) {
if len(a.Deps) == 0 {
base.Fatalf("go build: no main packages to build")
}
- b.Do(a)
+ b.Do(ctx, a)
return
}
if len(pkgs) > 1 {
@@ -422,7 +423,7 @@ func runBuild(ctx context.Context, cmd *base.Command, args []string) {
p.Stale = true // must build - not up to date
p.StaleReason = "build -o flag in use"
a := b.AutoAction(ModeInstall, depMode, p)
- b.Do(a)
+ b.Do(ctx, a)
return
}
@@ -433,7 +434,7 @@ func runBuild(ctx context.Context, cmd *base.Command, args []string) {
if cfg.BuildBuildmode == "shared" {
a = b.buildmodeShared(ModeBuild, depMode, args, pkgs, a)
}
- b.Do(a)
+ b.Do(ctx, a)
}
var CmdInstall = &base.Command{
@@ -518,7 +519,7 @@ func libname(args []string, pkgs []*load.Package) (string, error) {
func runInstall(ctx context.Context, cmd *base.Command, args []string) {
BuildInit()
- InstallPackages(args, load.PackagesForBuild(args))
+ InstallPackages(ctx, args, load.PackagesForBuild(ctx, args))
}
// omitTestOnly returns pkgs with test-only packages removed.
@@ -538,7 +539,10 @@ func omitTestOnly(pkgs []*load.Package) []*load.Package {
return list
}
-func InstallPackages(patterns []string, pkgs []*load.Package) {
+func InstallPackages(ctx context.Context, patterns []string, pkgs []*load.Package) {
+ ctx, span := trace.StartSpan(ctx, "InstallPackages "+strings.Join(patterns, " "))
+ defer span.Done()
+
if cfg.GOBIN != "" && !filepath.IsAbs(cfg.GOBIN) {
base.Fatalf("cannot install, GOBIN must be an absolute path")
}
@@ -607,7 +611,7 @@ func InstallPackages(patterns []string, pkgs []*load.Package) {
a = b.buildmodeShared(ModeInstall, ModeInstall, patterns, pkgs, a)
}
- b.Do(a)
+ b.Do(ctx, a)
base.ExitIfErrors()
// Success. If this command is 'go install' with no arguments