|
|
@ -29,6 +29,8 @@ GO ?= go
|
|
|
|
GOFMT ?= $(GO)fmt
|
|
|
|
GOFMT ?= $(GO)fmt
|
|
|
|
FIRST_GOPATH := $(firstword $(subst :, ,$(shell $(GO) env GOPATH)))
|
|
|
|
FIRST_GOPATH := $(firstword $(subst :, ,$(shell $(GO) env GOPATH)))
|
|
|
|
GOOPTS ?=
|
|
|
|
GOOPTS ?=
|
|
|
|
|
|
|
|
GOHOSTOS ?= $(shell $(GO) env GOHOSTOS)
|
|
|
|
|
|
|
|
GOHOSTARCH ?= $(shell $(GO) env GOHOSTARCH)
|
|
|
|
|
|
|
|
|
|
|
|
GO_VERSION ?= $(shell $(GO) version)
|
|
|
|
GO_VERSION ?= $(shell $(GO) version)
|
|
|
|
GO_VERSION_NUMBER ?= $(word 3, $(GO_VERSION))
|
|
|
|
GO_VERSION_NUMBER ?= $(word 3, $(GO_VERSION))
|
|
|
@ -62,8 +64,6 @@ PROMU := $(FIRST_GOPATH)/bin/promu
|
|
|
|
STATICCHECK := $(FIRST_GOPATH)/bin/staticcheck
|
|
|
|
STATICCHECK := $(FIRST_GOPATH)/bin/staticcheck
|
|
|
|
pkgs = ./...
|
|
|
|
pkgs = ./...
|
|
|
|
|
|
|
|
|
|
|
|
GOHOSTOS ?= $(shell $(GO) env GOHOSTOS)
|
|
|
|
|
|
|
|
GOHOSTARCH ?= $(shell $(GO) env GOHOSTARCH)
|
|
|
|
|
|
|
|
ifeq (arm, $(GOHOSTARCH))
|
|
|
|
ifeq (arm, $(GOHOSTARCH))
|
|
|
|
GOHOSTARM ?= $(shell GOARM= $(GO) env GOARM)
|
|
|
|
GOHOSTARM ?= $(shell GOARM= $(GO) env GOARM)
|
|
|
|
GO_BUILD_PLATFORM ?= $(GOHOSTOS)-$(GOHOSTARCH)v$(GOHOSTARM)
|
|
|
|
GO_BUILD_PLATFORM ?= $(GOHOSTOS)-$(GOHOSTARCH)v$(GOHOSTARM)
|
|
|
@ -73,12 +73,21 @@ endif
|
|
|
|
|
|
|
|
|
|
|
|
PROMU_VERSION ?= 0.2.0
|
|
|
|
PROMU_VERSION ?= 0.2.0
|
|
|
|
PROMU_URL := https://github.com/prometheus/promu/releases/download/v$(PROMU_VERSION)/promu-$(PROMU_VERSION).$(GO_BUILD_PLATFORM).tar.gz
|
|
|
|
PROMU_URL := https://github.com/prometheus/promu/releases/download/v$(PROMU_VERSION)/promu-$(PROMU_VERSION).$(GO_BUILD_PLATFORM).tar.gz
|
|
|
|
|
|
|
|
STATICCHECK_VERSION ?= 2019.1
|
|
|
|
|
|
|
|
STATICCHECK_URL := https://github.com/dominikh/go-tools/releases/download/$(STATICCHECK_VERSION)/staticcheck_$(GOHOSTOS)_$(GOHOSTARCH)
|
|
|
|
|
|
|
|
|
|
|
|
PREFIX ?= $(shell pwd)
|
|
|
|
PREFIX ?= $(shell pwd)
|
|
|
|
BIN_DIR ?= $(shell pwd)
|
|
|
|
BIN_DIR ?= $(shell pwd)
|
|
|
|
DOCKER_IMAGE_TAG ?= $(subst /,-,$(shell git rev-parse --abbrev-ref HEAD))
|
|
|
|
DOCKER_IMAGE_TAG ?= $(subst /,-,$(shell git rev-parse --abbrev-ref HEAD))
|
|
|
|
DOCKER_REPO ?= prom
|
|
|
|
DOCKER_REPO ?= prom
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ifeq ($(GOHOSTARCH),amd64)
|
|
|
|
|
|
|
|
ifeq ($(GOHOSTOS),$(filter $(GOHOSTOS),linux freebsd darwin windows))
|
|
|
|
|
|
|
|
# Only supported on amd64
|
|
|
|
|
|
|
|
test-flags := -race
|
|
|
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
|
|
.PHONY: all
|
|
|
|
.PHONY: all
|
|
|
|
all: precheck style staticcheck unused build test
|
|
|
|
all: precheck style staticcheck unused build test
|
|
|
|
|
|
|
|
|
|
|
@ -116,7 +125,7 @@ common-test-short:
|
|
|
|
.PHONY: common-test
|
|
|
|
.PHONY: common-test
|
|
|
|
common-test:
|
|
|
|
common-test:
|
|
|
|
@echo ">> running all tests"
|
|
|
|
@echo ">> running all tests"
|
|
|
|
GO111MODULE=$(GO111MODULE) $(GO) test -race $(GOOPTS) $(pkgs)
|
|
|
|
GO111MODULE=$(GO111MODULE) $(GO) test $(test-flags) $(GOOPTS) $(pkgs)
|
|
|
|
|
|
|
|
|
|
|
|
.PHONY: common-format
|
|
|
|
.PHONY: common-format
|
|
|
|
common-format:
|
|
|
|
common-format:
|
|
|
@ -131,8 +140,12 @@ common-vet:
|
|
|
|
.PHONY: common-staticcheck
|
|
|
|
.PHONY: common-staticcheck
|
|
|
|
common-staticcheck: $(STATICCHECK)
|
|
|
|
common-staticcheck: $(STATICCHECK)
|
|
|
|
@echo ">> running staticcheck"
|
|
|
|
@echo ">> running staticcheck"
|
|
|
|
|
|
|
|
chmod +x $(STATICCHECK)
|
|
|
|
ifdef GO111MODULE
|
|
|
|
ifdef GO111MODULE
|
|
|
|
GO111MODULE=$(GO111MODULE) $(STATICCHECK) -ignore "$(STATICCHECK_IGNORE)" -checks "SA*" $(pkgs)
|
|
|
|
# 'go list' needs to be executed before staticcheck to prepopulate the modules cache.
|
|
|
|
|
|
|
|
# Otherwise staticcheck might fail randomly for some reason not yet explained.
|
|
|
|
|
|
|
|
GO111MODULE=$(GO111MODULE) $(GO) list -e -compiled -test=true -export=false -deps=true -find=false -tags= -- ./... > /dev/null
|
|
|
|
|
|
|
|
GO111MODULE=$(GO111MODULE) $(STATICCHECK) -ignore "$(STATICCHECK_IGNORE)" $(pkgs)
|
|
|
|
else
|
|
|
|
else
|
|
|
|
$(STATICCHECK) -ignore "$(STATICCHECK_IGNORE)" $(pkgs)
|
|
|
|
$(STATICCHECK) -ignore "$(STATICCHECK_IGNORE)" $(pkgs)
|
|
|
|
endif
|
|
|
|
endif
|
|
|
@ -146,8 +159,9 @@ else
|
|
|
|
ifdef GO111MODULE
|
|
|
|
ifdef GO111MODULE
|
|
|
|
@echo ">> running check for unused/missing packages in go.mod"
|
|
|
|
@echo ">> running check for unused/missing packages in go.mod"
|
|
|
|
GO111MODULE=$(GO111MODULE) $(GO) mod tidy
|
|
|
|
GO111MODULE=$(GO111MODULE) $(GO) mod tidy
|
|
|
|
|
|
|
|
ifeq (,$(wildcard vendor))
|
|
|
|
@git diff --exit-code -- go.sum go.mod
|
|
|
|
@git diff --exit-code -- go.sum go.mod
|
|
|
|
ifneq (,$(wildcard vendor))
|
|
|
|
else
|
|
|
|
@echo ">> running check for unused packages in vendor/"
|
|
|
|
@echo ">> running check for unused packages in vendor/"
|
|
|
|
GO111MODULE=$(GO111MODULE) $(GO) mod vendor
|
|
|
|
GO111MODULE=$(GO111MODULE) $(GO) mod vendor
|
|
|
|
@git diff --exit-code -- go.sum go.mod vendor/
|
|
|
|
@git diff --exit-code -- go.sum go.mod vendor/
|
|
|
@ -192,21 +206,9 @@ proto:
|
|
|
|
@echo ">> generating code from proto files"
|
|
|
|
@echo ">> generating code from proto files"
|
|
|
|
@./scripts/genproto.sh
|
|
|
|
@./scripts/genproto.sh
|
|
|
|
|
|
|
|
|
|
|
|
.PHONY: $(STATICCHECK)
|
|
|
|
|
|
|
|
$(STATICCHECK):
|
|
|
|
$(STATICCHECK):
|
|
|
|
ifdef GO111MODULE
|
|
|
|
mkdir -p $(FIRST_GOPATH)/bin
|
|
|
|
# Get staticcheck from a temporary directory to avoid modifying the local go.{mod,sum}.
|
|
|
|
curl -s -L $(STATICCHECK_URL) > $(STATICCHECK)
|
|
|
|
# See https://github.com/golang/go/issues/27643.
|
|
|
|
|
|
|
|
# For now, we are using the next branch of staticcheck because master isn't compatible yet with Go modules.
|
|
|
|
|
|
|
|
tmpModule=$$(mktemp -d 2>&1) && \
|
|
|
|
|
|
|
|
mkdir -p $${tmpModule}/staticcheck && \
|
|
|
|
|
|
|
|
cd "$${tmpModule}"/staticcheck && \
|
|
|
|
|
|
|
|
GO111MODULE=on $(GO) mod init example.com/staticcheck && \
|
|
|
|
|
|
|
|
GO111MODULE=on GOOS= GOARCH= $(GO) get -u honnef.co/go/tools/cmd/staticcheck@next && \
|
|
|
|
|
|
|
|
rm -rf $${tmpModule};
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
GOOS= GOARCH= GO111MODULE=off $(GO) get -u honnef.co/go/tools/cmd/staticcheck
|
|
|
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ifdef GOVENDOR
|
|
|
|
ifdef GOVENDOR
|
|
|
|
.PHONY: $(GOVENDOR)
|
|
|
|
.PHONY: $(GOVENDOR)
|
|
|
|