]> Cypherpunks.ru repositories - gostls13.git/commit
cmd/dist: refactor generated cgo-support logic
authorBryan C. Mills <bcmills@google.com>
Tue, 11 Apr 2023 14:27:45 +0000 (14:27 +0000)
committerGopher Robot <gobot@golang.org>
Thu, 20 Apr 2023 17:26:46 +0000 (17:26 +0000)
commitd22f287f12f4782082cd93785ad91e78dbe0d4d6
treefe20635700fb7a754d79c828127915b577ad708d
parent0d699b6cb3e6be63846bbbee8cc7bcbfd6cb9500
cmd/dist: refactor generated cgo-support logic

During bootstrapping, cmd/dist writes a file indicating which
GOOS/GOARCH combinations are valid, and which support cgo-enabled
builds. That information previously went into the go/build package,
but today it fits in more naturally in the internal/platform package
(which already has a number of functions indicating feature support
for GOOS/GOARCH combinations).

Moreover, as of CL 450739 the cmd/go logic for determining whether to
use cgo is somewhat more nuanced than the go/build logic: cmd/go
checks for the presence of a C compiler, whereas go/build does not
(mostly because it determines its configuration at package-init time,
and checking $PATH for a C compiler is somewhat expensive).

To simplify this situation, this change:

- consolidates the “cgo supported” check in internal/platform
  (alongside many other platform-support checks) instead of making
  it a one-off in go/build,

- and updates a couple of tests to use testenv.HasCGO instead of
  build.Default.CgoEnabled to decide whether to test a cgo-specific
  behavior.

For #58884.
For #59500.

Change-Id: I0bb2502dba4545a3d98c9e915727382ce536a0f3
Reviewed-on: https://go-review.googlesource.com/c/go/+/483695
Auto-Submit: Bryan Mills <bcmills@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Bryan Mills <bcmills@google.com>
15 files changed:
.gitignore
src/cmd/dist/build.go
src/cmd/dist/buildgo.go
src/cmd/dist/buildruntime.go
src/cmd/dist/buildtool.go
src/cmd/go/internal/cfg/cfg.go
src/cmd/go/internal/work/action.go
src/cmd/go/internal/work/init.go
src/cmd/go/note_test.go
src/cmd/go/testdata/script/list_all_gobuild.txt
src/cmd/go/testdata/script/tooltags.txt
src/cmd/objdump/objdump_test.go
src/go/build/build.go
src/go/build/deps_test.go
src/internal/platform/supported.go