include $(addprefix $(dir $(lastword $(MAKEFILE_LIST))), \ ../../lib/golang.mk \ ) # We need to force localle so different envs sort files the same way for recursive traversals deps_diff :=LC_COLLATE=C diff --no-dereference -N # $1 - temporary directory define restore-deps ln -s $(abspath ./) "$(1)"/current cp -R -H ./ "$(1)"/updated $(RM) -r "$(1)"/updated/vendor cd "$(1)"/updated && $(GO) mod tidy && $(GO) mod vendor && $(GO) mod verify cd "$(1)" && $(deps_diff) -r {current,updated}/vendor/ > updated/deps.diff || true endef verify-deps: tmp_dir:=$(shell mktemp -d) verify-deps: $(call restore-deps,$(tmp_dir)) $(deps_diff) "$(tmp_dir)"/{current,updated}/go.mod || ( echo '`go.mod` content is incorrect - did you run `go mod tidy`?' && false ) $(deps_diff) "$(tmp_dir)"/{current,updated}/go.sum || ( echo '`go.sum` content is incorrect - did you run `go mod tidy`?' && false ) @echo $(deps_diff) '$(tmp_dir)'/{current,updated}/deps.diff @ $(deps_diff) '$(tmp_dir)'/{current,updated}/deps.diff || ( \ echo "ERROR: Content of 'vendor/' directory doesn't match 'go.mod' configuration and the overrides in 'deps.diff'!" && \ echo 'Did you run `go mod vendor`?' && \ echo "If this is an intentional change (a carry patch) please update the 'deps.diff' using 'make update-deps-overrides'." && \ false \ ) rm -rf $(tmp_dir) .PHONY: verify-deps update-deps-overrides: tmp_dir:=$(shell mktemp -d) update-deps-overrides: $(call restore-deps,$(tmp_dir)) cp "$(tmp_dir)"/{updated,current}/deps.diff .PHONY: update-deps-overrides