tree a5f4d7248c92e3cafa3d03c430a915cbaa6c7c0f
parent ea9ff8796aec7bf1c1f286d347b6328d55928fe9
author Hana (Hyang-Ah) Kim <hyangah@gmail.com> 1712418956 -0400
committer Hyang-Ah Hana Kim <hyangah@gmail.com> 1714432493 +0000

extension/src/goInstallTools: strengthing minimum go version requirement

This change addresses problems in tools installation surfaced
by the recent changes in go and gopls.

* Automated toolchain switch for Go forwards compatibility

The automated Go toolchain switch change added in go1.21
changed the meaning of 'go version' output different. Previously,
it was meant exactly the version of the toolchain on the system.
After go1.21, this is a go version for chosen for the workspace,
computed based on the local toolchain version and the required
go version dictated by go.mod or go.work.

The extension has a facility to detect the go version used to
compile tools, and ask users to rebuild them if they were built
with older go standard libraries. When a local toolchain is
older (for example, `go1.21.0`) than the workspace's required go
version (`go1.22.0`), the 'go version' reports `go1.22.0`.
The extension will detect tools that need recompiling to support
`go1.22.0` project. That works as expected.

However, when recompiling those tools with `go install`,
the workspace's go version requirement doesn't come into play
at all, but only the local toolchain's go version and the target
tool's minimum required go version will be used in the toolchain
switch decision making. As of today, none of the tools set their
minimum required go version to go1.22.x, so if the local toolchain
is still go1.21.0, `go install` will use go1.21.0 for build.

We need to explicitly specify the minimum required version using
the `GOTOOLCHAIN` environment variable. In this example, go
install with `GOTOOLCHAIN=go1.22.0+auto` will address the issue.

In this CL,
  - extend `getGoVersion` to allow the local toolchain version
    by specifying the optional GOTOOLCHAIN parameter.
  - change `getGoForInstall` to produce the correct GoVersion
    object that carries the true version of the local toolchain.
    (computed with `getGoVersion(..., 'local')`).
  - change `installTools` to append the `GOTOOLCHAIN` env var
    if the go version to be used for install is older than
    the project's minimum required go version.

* More frequent crashes/malfunctions upon version mismatch

Gopls is supposed to prompt when it detects it needs to be
recompiled to process the modules that require newer go versions.
The extension has relied this as the second, and more reliable
defense mechanism. Unfortunately, bugs in the recent gopls
stopped gopls from reliably detecting this case or, even made
the gopls crash before showing the notification.

Similar crashes can occur in other tools (golang/vscode-go#3168)
when the version is mismatched. Previously, `installTools` warned
users only if the go version for install was very old (e.g. go1.15).

In this CL,
  - tighten `installTools`'s installation tool version check
    further. So, if the project requires a newer version of go
    and the go configured for tools installation (maybe due to
    outdated 'go.toolsManagement.go' setting) is older and
    is a version that cannot handle automated version switch
    (<go1.21), it prompts users.

* Other changes

Testing involving two versions of go is complex. Changed the
runTest helper for 'Installation Tests' test suite to accept
extra parameters and stubs, so we can make the installation
function under test believe the local go chosen for installation
is an older version.

This CL also adjusted the logging of gopls restart activities.
When gopls installed (automatically, or from the activation),
the extension may attempt to restart the gopls. That may help
investigate spurious gopls restarts obeserved during
https://github.com/golang/vscode-go/issues/3307.

This CL stops clearing of the Go outputChannel before tool
installation or goplay run. This channel is now a log output
channel, so it's better not to clear.

Fixes golang/vscode-go#3168

Change-Id: Id9a4c0fe98c85efb17eb3351cfba5665a83b094d
Reviewed-on: https://go-review.googlesource.com/c/vscode-go/+/577095
Reviewed-by: Peter Weinberger <pjw@google.com>
Commit-Queue: Hyang-Ah Hana Kim <hyangah@gmail.com>
Reviewed-by: Suzy Mueller <suzmue@golang.org>
kokoro-CI: kokoro <noreply+kokoro@google.com>
