Use gobin to fix version numbers of tools (#598)

I ran into a bunch of problems running goreleasers, and
some differences with goimports. This locks the versions
to versions that appear to work.

The goimports version is newer than the latest version run
on the repo, but it matches the version of Go used on the rest of
the project.
This commit is contained in:
Sargun Dhillon
2019-05-06 09:03:44 -07:00
committed by Brian Goff
parent eb87db8731
commit 74a16f7f9a

View File

@@ -6,6 +6,15 @@ github_repo := virtual-kubelet/virtual-kubelet
binary := virtual-kubelet binary := virtual-kubelet
include Makefile.e2e include Makefile.e2e
# Currently this looks for a globally installed gobin. When we move to modules,
# should consider installing it locally
# Also, we will want to lock our tool versions using go mod:
# https://github.com/golang/go/wiki/Modules#how-can-i-track-tool-dependencies-for-a-module
gobin_tool ?= $(shell which gobin || echo $(GOPATH)/gobin)
goimports := golang.org/x/tools/cmd/goimports@release-branch.go1.10
gocovmerge := github.com/wadey/gocovmerge@b5bfa59ec0adc420475f97f89b58045c721d761c
goreleaser := github.com/goreleaser/goreleaser@v0.82.2
gox := github.com/mitchellh/gox@v1.0.1
# comment this line out for quieter things # comment this line out for quieter things
# V := 1 # When V is set, print commands and build progress. # V := 1 # When V is set, print commands and build progress.
@@ -35,8 +44,8 @@ tags:
$Q @git tag $Q @git tag
.PHONY: release .PHONY: release
release: build $(GOPATH)/bin/goreleaser release: build goreleaser
goreleaser $(gobin_tool) -run $(goreleaser)
##### =====> Utility targets <===== ##### ##### =====> Utility targets <===== #####
@@ -84,7 +93,7 @@ list:
@echo "List..." @echo "List..."
@echo $(allpackages) @echo $(allpackages)
cover: $(GOPATH)/bin/gocovmerge cover: gocovmerge
@echo "Coverage Report..." @echo "Coverage Report..."
@echo "NOTE: make cover does not exit 1 on failure, don't use it to check for tests success!" @echo "NOTE: make cover does not exit 1 on failure, don't use it to check for tests success!"
$Q rm -f .GOPATH/cover/*.out cover/all.merged $Q rm -f .GOPATH/cover/*.out cover/all.merged
@@ -94,7 +103,7 @@ cover: $(GOPATH)/bin/gocovmerge
-coverprofile=cover/unit-`echo $$MOD|tr "/" "_"`.out \ -coverprofile=cover/unit-`echo $$MOD|tr "/" "_"`.out \
$$MOD 2>&1 | grep -v "no packages being tested depend on"; \ $$MOD 2>&1 | grep -v "no packages being tested depend on"; \
done done
$Q gocovmerge cover/*.out > cover/all.merged $Q $(gobin_tool) -run $(gocovmerge) cover/*.out > cover/all.merged
ifndef CI ifndef CI
@echo "Coverage Report..." @echo "Coverage Report..."
$Q go tool cover -html .GOPATH/cover/all.merged $Q go tool cover -html .GOPATH/cover/all.merged
@@ -107,17 +116,18 @@ endif
@echo "" @echo ""
$Q go tool cover -func .GOPATH/cover/all.merged $Q go tool cover -func .GOPATH/cover/all.merged
format: $(GOPATH)/bin/goimports format: goimports
@echo "Formatting..." @echo "Formatting..."
$Q find . -iname \*.go | grep -v \ $Q find . -iname \*.go | grep -v \
-e "^$$" $(addprefix -e ,$(IGNORED_PACKAGES)) | xargs goimports -w -e "^$$" $(addprefix -e ,$(IGNORED_PACKAGES)) | xargs $(gobin_tool) -run $(goimports) -w
##### =====> Internals <===== ##### ##### =====> Internals <===== #####
.PHONY: setup .PHONY: setup
setup: clean setup: goimports gocovmerge goreleaser gox clean
env
@echo "Setup..." @echo "Setup..."
if ! grep "/bin" .gitignore > /dev/null 2>&1; then \ if ! grep "/bin" .gitignore > /dev/null 2>&1; then \
echo "/bin" >> .gitignore; \ echo "/bin" >> .gitignore; \
@@ -129,10 +139,6 @@ setup: clean
mkdir -p bin mkdir -p bin
mkdir -p test mkdir -p test
go get -u github.com/golang/dep/cmd/dep go get -u github.com/golang/dep/cmd/dep
go get github.com/wadey/gocovmerge
go get golang.org/x/tools/cmd/goimports
go get github.com/mitchellh/gox
go get github.com/goreleaser/goreleaser
VERSION := $(shell git describe --tags --always --dirty="-dev") VERSION := $(shell git describe --tags --always --dirty="-dev")
DATE := $(shell date -u '+%Y-%m-%d-%H:%M UTC') DATE := $(shell date -u '+%Y-%m-%d-%H:%M UTC')
@@ -144,23 +150,27 @@ _allpackages = $(shell go list ./...)
# memoize allpackages, so that it's executed only once and only if used # memoize allpackages, so that it's executed only once and only if used
allpackages = $(if $(__allpackages),,$(eval __allpackages := $$(_allpackages)))$(__allpackages) allpackages = $(if $(__allpackages),,$(eval __allpackages := $$(_allpackages)))$(__allpackages)
.PHONY: goimports
goimports: $(gobin_tool)
gobin -d $(goimports)
.PHONY: gocovmerge
gocovmerge: $(gobin_tool)
gobin -d $(gocovmerge)
.PHONY: goreleaser
goreleaser: $(gobin_tool)
gobin -d $(goreleaser)
.PHONY: gox
gox: $(gobin_tool)
# We make gox globally available, for people to use by hand
gobin $(gox)
Q := $(if $V,,@) Q := $(if $V,,@)
$(gobin_tool):
$(GOPATH)/bin/gocovmerge: GO111MODULE=off go get -u github.com/myitcv/gobin
@echo "Checking Coverage Tool Installation..."
@test -d $(GOPATH)/src/github.com/wadey/gocovmerge || \
{ echo "Vendored gocovmerge not found, try running 'make setup'..."; exit 1; }
$Q go install github.com/wadey/gocovmerge
$(GOPATH)/bin/goimports:
@echo "Checking Import Tool Installation..."
@test -d $(GOPATH)/src/golang.org/x/tools/cmd/goimports || \
{ echo "Vendored goimports not found, try running 'make setup'..."; exit 1; }
$Q go install golang.org/x/tools/cmd/goimports
$(GOPATH)/bin/goreleaser:
go get -u github.com/goreleaser/goreleaser
authors: authors:
$Q git log --all --format='%aN <%cE>' | sort -u | sed -n '/github/!p' > GITAUTHORS $Q git log --all --format='%aN <%cE>' | sort -u | sed -n '/github/!p' > GITAUTHORS