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 <teawater@hyper.sh>
This commit is contained in:
Hui Zhu 2019-02-26 22:01:38 +08:00
parent e8a8e0db79
commit a1ddf53df4
2 changed files with 50 additions and 50 deletions

View File

@ -12,19 +12,11 @@ for file in /etc/os-release /usr/lib/os-release; do \
fi \ fi \
done) done)
HOST_ARCH=$(shell arch) SKIP_GO_VERSION_CHECK=
ifeq ($(GOPATH),) include golang.mk
SKIP_GO_VERSION_CHECK=y
else
SKIP_GO_VERSION_CHECK=
endif
ifeq ($(SKIP_GO_VERSION_CHECK),)
include golang.mk
endif
#Get ARCH. #Get ARCH.
ifneq ($(GOPATH),) ifneq (,$(golang_version_raw))
GOARCH=$(shell go env GOARCH) GOARCH=$(shell go env GOARCH)
ifeq ($(ARCH),) ifeq ($(ARCH),)
ARCH = $(GOARCH) ARCH = $(GOARCH)
@ -608,7 +600,7 @@ show-footer:
@printf "\tBugs: $(PROJECT_BUG_URL)\n\n" @printf "\tBugs: $(PROJECT_BUG_URL)\n\n"
show-summary: show-header show-summary: show-header
ifneq ($(GOPATH),) ifneq (,$(golang_version_raw))
@printf "• architecture:\n" @printf "• architecture:\n"
@printf "\tHost: $(HOST_ARCH)\n" @printf "\tHost: $(HOST_ARCH)\n"
@printf "\tgolang: $(GOARCH)\n" @printf "\tgolang: $(GOARCH)\n"
@ -618,7 +610,7 @@ ifneq ($(GOPATH),)
@printf "\t" @printf "\t"
@go version @go version
else else
@printf "• GOPATH not set:\n" @printf "• No GO command or GOPATH not set:\n"
@printf "\tCan only install prebuilt binaries\n" @printf "\tCan only install prebuilt binaries\n"
endif endif
@printf "\n" @printf "\n"

View File

@ -6,49 +6,57 @@
# Check that the system golang version is within the required version range # Check that the system golang version is within the required version range
# for this project. # for this project.
have_yq=$(shell if [ -x "$(GOPATH)/bin/yq" ]; then echo "true"; else echo ""; fi) golang_version_raw=$(shell go version 2>/dev/null)
ifeq (,$(have_yq)) not_check_version=
ifeq (,$(GOPATH))
golang_version_raw=
endif
ifeq (,$(golang_version_raw))
not_check_version=y
endif
ifneq (,$(SKIP_GO_VERSION_CHECK))
not_check_version=y
endif
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) $(info INFO: yq was not found, installing it)
install_yq=$(shell .ci/install-yq.sh) install_yq=$(shell .ci/install-yq.sh)
endif endif
ifneq (,$(install_yq)) ifneq (,$(install_yq))
$(error "ERROR: install yq failed") $(error "ERROR: install yq failed")
endif endif
golang_version_min=$(shell $(GOPATH)/bin/yq r versions.yaml languages.golang.version) golang_version_min=$(shell $(GOPATH)/bin/yq r versions.yaml languages.golang.version)
ifeq (,$(golang_version_min)) ifeq (,$(golang_version_min))
$(error "ERROR: cannot determine minimum golang version") $(error "ERROR: cannot determine minimum golang version")
endif endif
golang_version_min_fields=$(subst ., ,$(golang_version_min)) golang_version_min_fields=$(subst ., ,$(golang_version_min))
golang_version_min_major=$(word 1,$(golang_version_min_fields)) golang_version_min_major=$(word 1,$(golang_version_min_fields))
golang_version_min_minor=$(word 2,$(golang_version_min_fields)) golang_version_min_minor=$(word 2,$(golang_version_min_fields))
# for error messages # for error messages
golang_version_needed=$(golang_version_min_major).$(golang_version_min_minor) golang_version_needed=$(golang_version_min_major).$(golang_version_min_minor)
golang_version_raw=$(shell go version 2>/dev/null) # determine actual version of golang
golang_version=$(subst go,,$(word 3,$(golang_version_raw)))
ifeq (,$(golang_version_raw)) golang_version_fields=$(subst ., ,$(golang_version))
$(error "ERROR: cannot determine golang version")
endif
# determine actual version of golang golang_version_major=$(word 1,$(golang_version_fields))
golang_version=$(subst go,,$(word 3,$(golang_version_raw))) golang_version_minor=$(word 2,$(golang_version_fields))
golang_version_fields=$(subst ., ,$(golang_version)) 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_version_major=$(word 1,$(golang_version_fields)) ifeq (,$(golang_major_ok))
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)
ifeq (,$(golang_major_ok))
$(error "ERROR: golang major version too old: got $(golang_version), need atleast $(golang_version_needed)") $(error "ERROR: golang major version too old: got $(golang_version), need atleast $(golang_version_needed)")
endif endif
ifeq (,$(golang_minor_ok)) ifeq (,$(golang_minor_ok))
$(error "ERROR: golang minor version too old: got $(golang_version), need atleast $(golang_version_needed)") $(error "ERROR: golang minor version too old: got $(golang_version), need atleast $(golang_version_needed)")
endif
endif endif