From a1ddf53df418d6d75f21cbdc78a59ac740ce9205 Mon Sep 17 00:00:00 2001 From: Hui Zhu Date: Tue, 26 Feb 2019 22:01:38 +0800 Subject: [PATCH] Makefile: Change "GOPATH not set" to "No GO command or GOPATH not set" The cause that make "sudo make install" fail is not "GOPATH not set", but no go command in path. But the commit still keep the "GOPATH not set" because execute "unset GOPATH; make" will fail because "go build" cannot work without GOPATH. Fixes: #1285 Signed-off-by: Hui Zhu --- Makefile | 18 ++++---------- golang.mk | 70 +++++++++++++++++++++++++++++++------------------------ 2 files changed, 44 insertions(+), 44 deletions(-) diff --git a/Makefile b/Makefile index 51e5fd0f97..d7e29da1f4 100644 --- a/Makefile +++ b/Makefile @@ -12,19 +12,11 @@ for file in /etc/os-release /usr/lib/os-release; do \ fi \ done) -HOST_ARCH=$(shell arch) -ifeq ($(GOPATH),) - SKIP_GO_VERSION_CHECK=y -else - SKIP_GO_VERSION_CHECK= -endif - -ifeq ($(SKIP_GO_VERSION_CHECK),) - include golang.mk -endif +SKIP_GO_VERSION_CHECK= +include golang.mk #Get ARCH. -ifneq ($(GOPATH),) +ifneq (,$(golang_version_raw)) GOARCH=$(shell go env GOARCH) ifeq ($(ARCH),) ARCH = $(GOARCH) @@ -608,7 +600,7 @@ show-footer: @printf "\tBugs: $(PROJECT_BUG_URL)\n\n" show-summary: show-header -ifneq ($(GOPATH),) +ifneq (,$(golang_version_raw)) @printf "• architecture:\n" @printf "\tHost: $(HOST_ARCH)\n" @printf "\tgolang: $(GOARCH)\n" @@ -618,7 +610,7 @@ ifneq ($(GOPATH),) @printf "\t" @go version else - @printf "• GOPATH not set:\n" + @printf "• No GO command or GOPATH not set:\n" @printf "\tCan only install prebuilt binaries\n" endif @printf "\n" diff --git a/golang.mk b/golang.mk index ce70efa786..202c0bacdb 100644 --- a/golang.mk +++ b/golang.mk @@ -6,49 +6,57 @@ # Check that the system golang version is within the required version range # for this project. -have_yq=$(shell if [ -x "$(GOPATH)/bin/yq" ]; then echo "true"; else echo ""; fi) -ifeq (,$(have_yq)) - $(info INFO: yq was not found, installing it) - install_yq=$(shell .ci/install-yq.sh) +golang_version_raw=$(shell go version 2>/dev/null) +not_check_version= +ifeq (,$(GOPATH)) + golang_version_raw= endif -ifneq (,$(install_yq)) - $(error "ERROR: install yq failed") +ifeq (,$(golang_version_raw)) + not_check_version=y endif -golang_version_min=$(shell $(GOPATH)/bin/yq r versions.yaml languages.golang.version) - -ifeq (,$(golang_version_min)) - $(error "ERROR: cannot determine minimum golang version") +ifneq (,$(SKIP_GO_VERSION_CHECK)) + not_check_version=y endif -golang_version_min_fields=$(subst ., ,$(golang_version_min)) +ifeq (,$(not_check_version)) + have_yq=$(shell if [ -x "$(GOPATH)/bin/yq" ]; then echo "true"; else echo ""; fi) + ifeq (,$(have_yq)) + $(info INFO: yq was not found, installing it) + install_yq=$(shell .ci/install-yq.sh) + endif + ifneq (,$(install_yq)) + $(error "ERROR: install yq failed") + endif + golang_version_min=$(shell $(GOPATH)/bin/yq r versions.yaml languages.golang.version) -golang_version_min_major=$(word 1,$(golang_version_min_fields)) -golang_version_min_minor=$(word 2,$(golang_version_min_fields)) + ifeq (,$(golang_version_min)) + $(error "ERROR: cannot determine minimum golang version") + endif -# for error messages -golang_version_needed=$(golang_version_min_major).$(golang_version_min_minor) + golang_version_min_fields=$(subst ., ,$(golang_version_min)) -golang_version_raw=$(shell go version 2>/dev/null) + golang_version_min_major=$(word 1,$(golang_version_min_fields)) + golang_version_min_minor=$(word 2,$(golang_version_min_fields)) -ifeq (,$(golang_version_raw)) - $(error "ERROR: cannot determine golang version") -endif + # for error messages + golang_version_needed=$(golang_version_min_major).$(golang_version_min_minor) -# determine actual version of golang -golang_version=$(subst go,,$(word 3,$(golang_version_raw))) + # determine actual version of golang + golang_version=$(subst go,,$(word 3,$(golang_version_raw))) -golang_version_fields=$(subst ., ,$(golang_version)) + golang_version_fields=$(subst ., ,$(golang_version)) -golang_version_major=$(word 1,$(golang_version_fields)) -golang_version_minor=$(word 2,$(golang_version_fields)) + golang_version_major=$(word 1,$(golang_version_fields)) + golang_version_minor=$(word 2,$(golang_version_fields)) -golang_major_ok=$(shell test $(golang_version_major) -ge $(golang_version_min_major) && echo ok) -golang_minor_ok=$(shell test $(golang_version_major) -eq $(golang_version_min_major) -a $(golang_version_minor) -ge $(golang_version_min_minor) && echo ok) + golang_major_ok=$(shell test $(golang_version_major) -ge $(golang_version_min_major) && echo ok) + golang_minor_ok=$(shell test $(golang_version_major) -eq $(golang_version_min_major) -a $(golang_version_minor) -ge $(golang_version_min_minor) && echo ok) -ifeq (,$(golang_major_ok)) - $(error "ERROR: golang major version too old: got $(golang_version), need atleast $(golang_version_needed)") -endif + ifeq (,$(golang_major_ok)) + $(error "ERROR: golang major version too old: got $(golang_version), need atleast $(golang_version_needed)") + endif -ifeq (,$(golang_minor_ok)) - $(error "ERROR: golang minor version too old: got $(golang_version), need atleast $(golang_version_needed)") + ifeq (,$(golang_minor_ok)) + $(error "ERROR: golang minor version too old: got $(golang_version), need atleast $(golang_version_needed)") + endif endif