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)
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)
ifeq (,$(golang_version_min))
$(error "ERROR: cannot determine minimum golang version")
endif
golang_version_min_fields=$(subst ., ,$(golang_version_min))
golang_version_min_major=$(word 1,$(golang_version_min_fields))
golang_version_min_minor=$(word 2,$(golang_version_min_fields))
# for error messages
golang_version_needed=$(golang_version_min_major).$(golang_version_min_minor)
golang_version_raw=$(shell go version 2>/dev/null) golang_version_raw=$(shell go version 2>/dev/null)
not_check_version=
ifeq (,$(GOPATH))
golang_version_raw=
endif
ifeq (,$(golang_version_raw)) ifeq (,$(golang_version_raw))
$(error "ERROR: cannot determine golang version") not_check_version=y
endif
ifneq (,$(SKIP_GO_VERSION_CHECK))
not_check_version=y
endif endif
# determine actual version of golang ifeq (,$(not_check_version))
golang_version=$(subst go,,$(word 3,$(golang_version_raw))) 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_fields=$(subst ., ,$(golang_version)) ifeq (,$(golang_version_min))
$(error "ERROR: cannot determine minimum golang version")
endif
golang_version_major=$(word 1,$(golang_version_fields)) golang_version_min_fields=$(subst ., ,$(golang_version_min))
golang_version_minor=$(word 2,$(golang_version_fields))
golang_major_ok=$(shell test $(golang_version_major) -ge $(golang_version_min_major) && echo ok) golang_version_min_major=$(word 1,$(golang_version_min_fields))
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_min_minor=$(word 2,$(golang_version_min_fields))
ifeq (,$(golang_major_ok)) # for error messages
$(error "ERROR: golang major version too old: got $(golang_version), need atleast $(golang_version_needed)") golang_version_needed=$(golang_version_min_major).$(golang_version_min_minor)
endif
# determine actual version of golang
ifeq (,$(golang_minor_ok)) golang_version=$(subst go,,$(word 3,$(golang_version_raw)))
$(error "ERROR: golang minor version too old: got $(golang_version), need atleast $(golang_version_needed)")
golang_version_fields=$(subst ., ,$(golang_version))
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)
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)")
endif
endif endif