@@ -62,7 +62,7 @@ ARCH := $(if $(GOARCH),$(GOARCH),$(shell go env GOARCH))
6262# Specific packages can be excluded from each of the tests below by setting the *_FILTER_CMD variables
6363# to something like "| grep -v 'github.com/kubernetes-csi/project/pkg/foobar'". See usage below.
6464
65- build-% :
65+ build-% : check-go-version-go
6666 mkdir -p bin
6767 CGO_ENABLED=0 GOOS=linux go build -a -ldflags ' -X main.version=$(REV) -extldflags "-static"' -o ./bin/$* ./cmd/$*
6868 if [ " $$ ARCH" = " amd64" ]; then \
@@ -97,7 +97,7 @@ push: $(CMDS:%=push-%)
9797clean :
9898 -rm -rf bin
9999
100- test :
100+ test : check-go-version-go
101101
102102.PHONY : test-go
103103test : test-go
@@ -154,43 +154,7 @@ test-fmt:
154154test : test-vendor
155155test-vendor :
156156 @ echo ; echo " ### $@ :"
157- @ if [ -f Gopkg.toml ]; then \
158- echo " Repo uses 'dep' for vendoring." ; \
159- case " $$ (dep version 2>/dev/null | grep 'version *:')" in \
160- * v0.[56789]* ) dep check && echo " vendor up-to-date" || false ;; \
161- * ) echo " skipping check, dep >= 0.5 required" ;; \
162- esac ; \
163- elif [ -f go.mod ]; then \
164- echo " Repo uses 'go mod'." ; \
165- if [ " $$ {JOB_NAME}" ] && \
166- ( [ "$${JOB_TYPE}" != "presubmit" ] || \
167- [ $$( (git diff "${PULL_BASE_SHA}..HEAD" -- go.mod go.sum vendor release-tools; \
168- git diff "${PULL_BASE_SHA}..HEAD" | grep -e '^@@.*@@ import (' -e '^[+-]import') | \
169- wc -l) -eq 0 ] ); then \
170- echo "Skipping vendor check because the Prow pre-submit job does not affect dependencies."; \
171- elif ! GO111MODULE=on go mod tidy; then \
172- echo "ERROR: vendor check failed."; \
173- false; \
174- elif [ $$(git status --porcelain -- go.mod go.sum | wc -l) -gt 0 ]; then \
175- echo "ERROR: go module files *not* up-to-date, they did get modified by 'GO111MODULE=on go mod tidy':"; \
176- git diff -- go.mod go.sum; \
177- false; \
178- elif [ -d vendor ]; then \
179- if ! GO111MODULE=on go mod vendor; then \
180- echo "ERROR: vendor check failed."; \
181- false; \
182- elif [ $$(git status --porcelain -- vendor | wc -l) -gt 0 ]; then \
183- echo "ERROR: vendor directory *not* up-to-date, it did get modified by 'GO111MODULE=on go mod vendor':"; \
184- git status -- vendor; \
185- git diff -- vendor; \
186- false; \
187- else \
188- echo "Go dependencies and vendor directory up-to-date."; \
189- fi; \
190- else \
191- echo "Go dependencies up-to-date."; \
192- fi; \
193- fi
157+ @ ./release-tools/verify-vendor.sh
194158
195159.PHONY : test-subtree
196160test : test-subtree
@@ -216,3 +180,11 @@ test-shellcheck:
216180 ./release-tools/verify-shellcheck.sh "$$dir" || ret=1; \
217181 done; \
218182 exit $$ret
183+
184+ # Targets in the makefile can depend on check-go-version-<path to go binary>
185+ # to trigger a warning if the x.y version of that binary does not match
186+ # what the project uses. Make ensures that this is only checked once per
187+ # invocation.
188+ .PHONY : check-go-version-%
189+ check-go-version-% :
190+ ./release-tools/verify-go-version.sh " $* "
0 commit comments