diff --git a/hack/lib/golang.sh b/hack/lib/golang.sh index b2e202e70e7..ed6d3297fdc 100755 --- a/hack/lib/golang.sh +++ b/hack/lib/golang.sh @@ -524,6 +524,18 @@ kube::golang::internal::verify_go_version() { if [ "${GOTOOLCHAIN:-auto}" != 'auto' ]; then # no-op, just respect GOTOOLCHAIN : + elif [ "${GO_VERSION:-}" == 'devel' ]; then + # get the latest master version of Go, build and use that version + export GOTOOLCHAIN='local' + if [[ ! -f "${KUBE_ROOT}/.gimme/envs/gomaster.env" && ! -f "${HOME}/.gimme/envs/gomaster.env" ]]; then + GOROOT_BOOTSTRAP="${GOROOT_BOOTSTRAP:-/usr/local/go}" "${KUBE_ROOT}/third_party/gimme/gimme" "master" >/dev/null 2>&1 + fi + + if [[ -f "${KUBE_ROOT}/.gimme/envs/gomaster.env" ]]; then + source "${KUBE_ROOT}/.gimme/envs/gomaster.env" + elif [[ -f "${HOME}/.gimme/envs/gomaster.env" ]]; then + source "${HOME}/.gimme/envs/gomaster.env" + fi elif [ -n "${FORCE_HOST_GO:-}" ]; then # ensure existing host version is used, like before GOTOOLCHAIN existed export GOTOOLCHAIN='local' diff --git a/third_party/gimme/gimme b/third_party/gimme/gimme index 75e618da2f2..ac3330be632 100755 --- a/third_party/gimme/gimme +++ b/third_party/gimme/gimme @@ -314,8 +314,10 @@ _setup_bootstrap() { # _compile "dir" _compile() { ( - if grep -q GOROOT_BOOTSTRAP "${1}/src/make.bash" &>/dev/null; then - _setup_bootstrap || return 1 + if [[ -z "${GOROOT_BOOTSTRAP}" ]]; then + if grep -q GOROOT_BOOTSTRAP "${1}/src/make.bash" &>/dev/null; then + _setup_bootstrap || return 1 + fi fi cd "${1}" if [[ -d .git ]]; then