refactor go setup

This commit is contained in:
Benjamin Elder
2020-08-06 11:39:50 -07:00
parent 71c91a424a
commit 9fecb4635a
2 changed files with 30 additions and 2 deletions

View File

@@ -30,9 +30,8 @@ COMMIT?=$(shell git rev-parse HEAD 2>/dev/null)
################################################################################
# ========================= Setup Go With Gimme ================================
# go version to use for build etc.
GO_VERSION?=$(shell cat ./.go-version)
# setup correct go version with gimme
PATH:=$(shell eval "$$(hack/third_party/gimme/gimme $(GO_VERSION))" && echo "$${PATH}")
PATH:=$(shell . hack/build/setup-go.sh && echo "$${PATH}")
export PATH
# work around broken PATH export
SHELL:=env PATH=$(PATH) $(SHELL)

29
hack/build/setup-go.sh Executable file
View File

@@ -0,0 +1,29 @@
#!/bin/bash
# Copyright 2020 The Kubernetes Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# script to setup go version with gimme as needed
# MUST BE RUN FROM THE REPO ROOT DIRECTORY
# read go-version file unless GO_VERSION is set
GO_VERSION="${GO_VERSION:-"$(cat .go-version)"}"
# only setup go if we haven't set FORCE_HOST_GO, or `go version` doesn't match
# go version output looks like:
# go version go1.14.5 darwin/amd64
if ! ([ -n "${FORCE_HOST_GO:-}" ] || \
(command -v go >/dev/null && [ "$(go version | cut -d' ' -f3)" = "go${GO_VERSION}" ])); then
# eval because the output of this is shell to set PATH etc.
eval "$(hack/third_party/gimme/gimme "${GO_VERSION}")"
fi