diff options
| author | Michael Matloob <matloob@golang.org> | 2022-09-28 11:50:41 -0400 |
|---|---|---|
| committer | Michael Matloob <matloob@golang.org> | 2022-10-27 17:38:59 +0000 |
| commit | 7f255ba065ee7bd41da806b297cd643e3ead3fee (patch) | |
| tree | 7b7bb381dcb673f9210d7de3ab654e235680c1ae /src | |
| parent | 0156b797e6f0d1a116a19cd852f569ec2c2eec11 (diff) | |
| download | go-7f255ba065ee7bd41da806b297cd643e3ead3fee.tar.xz | |
cmd/dist: produce intermedate .a files in a temporary location
Before this change, the .a files for the intermediate go toolchains
were produced in the same location as the install target. This change
has them produced in a temporary location instead. This change,
combined with go install not producing .a files for most stdlib
packages by default results in a build of the distribution only
producing .a's for the five packages in std that require cgo. (Before
this change, the .a's for the final build were not being produced, but
stale ones from the intermediate builds were left behind.)
For #47257
Change-Id: I91b826cd1ce9aad9c492fb865e36d34dc8bb188e
Reviewed-on: https://go-review.googlesource.com/c/go/+/436135
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Michael Matloob <matloob@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
Reviewed-by: Michael Matloob <matloob@golang.org>
Diffstat (limited to 'src')
| -rw-r--r-- | src/cmd/dist/build.go | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go index b51f56dc44..605ef52e96 100644 --- a/src/cmd/dist/build.go +++ b/src/cmd/dist/build.go @@ -488,6 +488,16 @@ func setup() { xmkdirall(p) xatexit(func() { xremoveall(p) }) + // Create alternate driectory for intermediate + // standard library .a's to be placed rather than + // the final build's install locations. + p = pathf("%s/pkg/obj/go-bootstrap", goroot) + if rebuildall { + xremoveall(p) + } + xmkdirall(p) + xatexit(func() { xremoveall(p) }) + // Create tool directory. // We keep it in pkg/, just like the object directory above. if rebuildall { @@ -651,6 +661,7 @@ func runInstall(pkg string, ch chan struct{}) { link = append(link, goldflags) } link = append(link, "-extld="+compilerEnvLookup(defaultcc, goos, goarch)) + link = append(link, "-L="+pathf("%s/pkg/obj/go-bootstrap/%s_%s", goroot, goos, goarch)) link = append(link, "-o", pathf("%s/%s%s", tooldir, elem, exe)) targ = len(link) - 1 } @@ -934,7 +945,7 @@ func runInstall(pkg string, ch chan struct{}) { // packagefile returns the path to a compiled .a file for the given package // path. Paths may need to be resolved with resolveVendor first. func packagefile(pkg string) string { - return pathf("%s/pkg/%s_%s/%s.a", goroot, goos, goarch, pkg) + return pathf("%s/pkg/obj/go-bootstrap/%s_%s/%s.a", goroot, goos, goarch, pkg) } // unixOS is the set of GOOS values matched by the "unix" build tag. |
