From 3da0ff8e3b05333c378efe17585609598692791e Mon Sep 17 00:00:00 2001 From: Jay Conrod Date: Thu, 14 Oct 2021 16:47:47 -0700 Subject: [PATCH] cmd/go: don't stamp build or vcs info for GOROOT binaries Fixes a test failure in cmd/go TestScript/mod_outside. make.bash (cmd/dist) builds everything with -gcflags=all= -ldflags=all= by default. If those no-op flags aren't used, all GOROOT binaries appear stale. It's likely safe to omit those flags in cmd/dist if they're empty. Checking out a new commit in GOROOT would always cause staleness since the VCS info would change. For #37475 Change-Id: Ic9aa0f3b7318e05fbb2f7d2c008ad07a4c61952f Reviewed-on: https://go-review.googlesource.com/c/go/+/356014 Trust: Jay Conrod Run-TryBot: Jay Conrod TryBot-Result: Go Bot Reviewed-by: Bryan C. Mills --- src/cmd/go/internal/load/pkg.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/cmd/go/internal/load/pkg.go b/src/cmd/go/internal/load/pkg.go index 716994b3ad..58dc242383 100644 --- a/src/cmd/go/internal/load/pkg.go +++ b/src/cmd/go/internal/load/pkg.go @@ -2205,6 +2205,11 @@ func (p *Package) collectDeps() { // Note that the GoVersion field is not set here to avoid encoding it twice. // It is stored separately in the binary, mostly for historical reasons. func (p *Package) setBuildInfo() { + // TODO: build and vcs information is not embedded for executables in GOROOT. + // cmd/dist uses -gcflags=all= -ldflags=all= by default, which means these + // executables always appear stale unless the user sets the same flags. + // Perhaps it's safe to omit those flags when GO_GCFLAGS and GO_LDFLAGS + // are not set? setPkgErrorf := func(format string, args ...interface{}) { if p.Error == nil { p.Error = &PackageError{Err: fmt.Errorf(format, args...)} @@ -2274,7 +2279,7 @@ func (p *Package) setBuildInfo() { // Add command-line flags relevant to the build. // This is informational, not an exhaustive list. - if cfg.BuildBuildinfo { + if cfg.BuildBuildinfo && !p.Standard { appendSetting("compiler", cfg.BuildContext.Compiler) if BuildAsmflags.present { appendSetting("asmflags", BuildAsmflags.String()) @@ -2313,7 +2318,7 @@ func (p *Package) setBuildInfo() { var repoDir string var vcsCmd *vcs.Cmd var err error - if cfg.BuildBuildvcs && p.Module != nil && p.Module.Version == "" { + if cfg.BuildBuildvcs && p.Module != nil && p.Module.Version == "" && !p.Standard { repoDir, vcsCmd, err = vcs.FromDir(base.Cwd(), "") if err != nil && !errors.Is(err, os.ErrNotExist) { setVCSError(err) -- 2.50.0