]> Cypherpunks repositories - gostls13.git/commit
cmd/go: distinguish packages built for different main packages in printing
authorCherry Mui <cherryyz@google.com>
Fri, 3 Mar 2023 00:16:34 +0000 (19:16 -0500)
committerCherry Mui <cherryyz@google.com>
Mon, 6 Mar 2023 19:27:53 +0000 (19:27 +0000)
commit34d6aaae29023b9edfef2d3360d89e48c8dd118f
tree3fe4c4b2788cc2641d75976b162d5e263d39740e
parent74502e9bb4d732239fa684969ddb22e7b7345f3a
cmd/go: distinguish packages built for different main packages in printing

In -pgo=auto mode, a package may be built multiple times. E.g. for

go build -pgo=auto cmd/a cmd/b

and both cmd/a and cmd/b imports package p, p may be built twice,
one using a's profile, one using b's. If we need to print p, e.g.
in "go list -deps" or when there is a build failure, p will be
printed twice, and currently we don't distinguish them.

We have a precedence for a similar case: for testing, there is the
original package, and the (internal) test version of the package
(which includes _test.go files). Packages that import the package
under testing may also have two versions (one imports the original,
one imports the testing version). In printing, the go command
distinguishes them by adding a "[p.test]" suffix for the latter,
as they are specifically built for the p.test binary.

We do the similar. When a package needs to be compiled multiple
times for different main packages, we attach the main package's
import path, like "p [cmd/a]" for package p built specifically
for cmd/a.

For #58099.

Change-Id: I4a040cf17e1dceb5ca1810c217f16e734c858ab6
Reviewed-on: https://go-review.googlesource.com/c/go/+/473275
Reviewed-by: Michael Pratt <mpratt@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Cherry Mui <cherryyz@google.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
src/cmd/go/internal/list/list.go
src/cmd/go/internal/load/pkg.go
src/cmd/go/testdata/script/build_pgo_auto_multi.txt