@@ -62,7 +62,7 @@ ARCH := $(if $(GOARCH),$(GOARCH),$(shell go env GOARCH))
62
62
# Specific packages can be excluded from each of the tests below by setting the *_FILTER_CMD variables
63
63
# to something like "| grep -v 'github.com/kubernetes-csi/project/pkg/foobar'". See usage below.
64
64
65
- build-% :
65
+ build-% : check-go-version-go
66
66
mkdir -p bin
67
67
CGO_ENABLED=0 GOOS=linux go build -a -ldflags ' -X main.version=$(REV) -extldflags "-static"' -o ./bin/$* ./cmd/$*
68
68
if [ " $$ ARCH" = " amd64" ]; then \
@@ -97,7 +97,7 @@ push: $(CMDS:%=push-%)
97
97
clean :
98
98
-rm -rf bin
99
99
100
- test :
100
+ test : check-go-version-go
101
101
102
102
.PHONY : test-go
103
103
test : test-go
@@ -154,43 +154,7 @@ test-fmt:
154
154
test : test-vendor
155
155
test-vendor :
156
156
@ 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
194
158
195
159
.PHONY : test-subtree
196
160
test : test-subtree
@@ -216,3 +180,11 @@ test-shellcheck:
216
180
./release-tools/verify-shellcheck.sh "$$dir" || ret=1; \
217
181
done; \
218
182
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