build: ensure tools match go toolchain version (#13338)

This commit is contained in:
R.B. Boyer 2022-06-01 15:24:45 -05:00 committed by GitHub
parent 8e530701ce
commit 1b69366a39
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 16 additions and 1 deletions

17
build-support/scripts/devtools.sh Normal file → Executable file
View File

@ -165,7 +165,10 @@ function install_versioned_tool {
local installbase="$4"
local should_install=
local install_reason=
local got
local vgot
local vneed
local expect="${module}@${version}"
local install="${installbase}@${version}"
@ -189,13 +192,25 @@ function install_versioned_tool {
awk '{print $2 "@" $3}')"
if [[ "$expect" != "$got" ]]; then
should_install=1
install_reason="upgrade"
fi
# check that they were compiled with the current version of go
set +o pipefail
vgot="$(go version -m $(which "${command}") | head -n 1 | grep -o 'go[0-9.]\+')"
vneed="$(go version | head -n 1 | awk '{print $3}')"
set -o pipefail
if [[ "$vgot" != "$vneed" ]]; then
should_install=1
install_reason="go toolchain upgrade"
fi
else
should_install=1
install_reason="install"
fi
if [[ -n $should_install ]]; then
status_stage "installing tool: ${install}"
status_stage "installing tool (${install_reason}): ${install}"
go install "${install}"
else
debug "skipping tool: ${install} (installed)"