]> Cypherpunks repositories - gostls13.git/commitdiff
go/build: set PWD for go subcommands
authorBryan C. Mills <bcmills@google.com>
Wed, 9 Mar 2022 22:17:40 +0000 (17:17 -0500)
committerBryan Mills <bcmills@google.com>
Mon, 14 Mar 2022 16:40:05 +0000 (16:40 +0000)
Since these commands already include an explicit Env field,
they will not be fixed automatically by proposal #50599.

Change-Id: Ia8157a71cf0cfe208bdc0da9aef54be3d26c795f
Reviewed-on: https://go-review.googlesource.com/c/go/+/391804
Trust: Bryan Mills <bcmills@google.com>
Run-TryBot: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
Trust: Daniel Martí <mvdan@mvdan.cc>

src/go/build/build.go

index baf76e6b7ff7165caefe89cd5592e9f0644f77ef..c1d044e55a8f5188c53581321d12fae90f875725 100644 (file)
@@ -1186,6 +1186,13 @@ func (ctxt *Context) importGo(p *Package, path, srcDir string, mode ImportMode)
                "GOPATH="+ctxt.GOPATH,
                "CGO_ENABLED="+cgo,
        )
+       if cmd.Dir != "" {
+               // If possible, set PWD: if an error occurs and PWD includes a symlink, we
+               // want the error to refer to Dir, not some other name for it.
+               if abs, err := filepath.Abs(cmd.Dir); err == nil {
+                       cmd.Env = append(cmd.Env, "PWD="+abs)
+               }
+       }
 
        if err := cmd.Run(); err != nil {
                return fmt.Errorf("go/build: go list %s: %v\n%s\n", path, err, stderr.String())