github.com/kata-containers/runtime@v0.0.0-20210505125100-04f29832a923/golang.mk (about)

     1  #
     2  # Copyright (c) 2018 Intel Corporation
     3  #
     4  # SPDX-License-Identifier: Apache-2.0
     5  #
     6  # Check that the system golang version is within the required version range
     7  # for this project.
     8  
     9  golang_version_raw=$(shell go version 2>/dev/null)
    10  not_check_version=
    11  ifeq (,$(GOPATH))
    12      golang_version_raw=
    13  endif
    14  ifeq (,$(golang_version_raw))
    15      not_check_version=y
    16  endif
    17  ifneq (,$(SKIP_GO_VERSION_CHECK))
    18      not_check_version=y
    19  endif
    20  
    21  ifeq (,$(not_check_version))
    22      have_yq=$(shell if [ -x "$(GOPATH)/bin/yq" ]; then echo "true"; else echo ""; fi)
    23      ifeq (,$(have_yq))
    24          $(info INFO: yq was not found, installing it)
    25          install_yq=$(shell .ci/install-yq.sh)
    26      endif
    27      ifneq (,$(install_yq))
    28          $(error "ERROR: install yq failed")
    29      endif
    30      golang_version_min=$(shell $(GOPATH)/bin/yq r versions.yaml languages.golang.version)
    31  
    32      ifeq (,$(golang_version_min))
    33          $(error "ERROR: cannot determine minimum golang version")
    34      endif
    35  
    36      golang_version_min_fields=$(subst ., ,$(golang_version_min))
    37  
    38      golang_version_min_major=$(word 1,$(golang_version_min_fields))
    39      golang_version_min_minor=$(word 2,$(golang_version_min_fields))
    40  
    41      # for error messages
    42      golang_version_needed=$(golang_version_min_major).$(golang_version_min_minor)
    43  
    44      # determine actual version of golang
    45      golang_version=$(subst go,,$(word 3,$(golang_version_raw)))
    46  
    47      golang_version_fields=$(subst ., ,$(golang_version))
    48  
    49      golang_version_major=$(word 1,$(golang_version_fields))
    50      golang_version_minor=$(word 2,$(golang_version_fields))
    51  
    52      golang_major_ok=$(shell test $(golang_version_major) -ge $(golang_version_min_major) && echo ok)
    53      golang_minor_ok=$(shell test $(golang_version_major) -eq $(golang_version_min_major) -a $(golang_version_minor) -ge $(golang_version_min_minor) && echo ok)
    54  
    55      ifeq (,$(golang_major_ok))
    56          $(error "ERROR: golang major version too old: got $(golang_version), need atleast $(golang_version_needed)")
    57      endif
    58  
    59      ifeq (,$(golang_minor_ok))
    60          $(error "ERROR: golang minor version too old: got $(golang_version), need atleast $(golang_version_needed)")
    61      endif
    62  endif