# We invoke make recursively only to force ordering of our phony
# targets in the case of parallel invocation of make (-j).
.PHONY: release
-release: verify-version
+release: verify-no-dirty-code
$(MAKE) test
$(MAKE) $(GPG_FILE)
$(MAKE) verify-newer
mv $(TAR_FILE) $(SHA1_FILE) $(GPG_FILE) releases
git tag -s -m "$(PACKAGE) $(VERSION) release" $(VERSION)
git push origin $(VERSION)
- @echo "Please send a release announcement as follows:"
- @echo ""
- $(MAKE) release-message
$(MAKE) release-message > $(PACKAGE)-$(VERSION).announce
- @echo "(This message is also available in $(PACKAGE)-$(VERSION).announce"
+ @echo "Please send a release announcement using $(PACKAGE)-$(VERSION).announce as a template."
.PHONY: release-message
release-message:
@echo ""
@echo "What's new in notmuch $(VERSION)"
@echo "========================="
- @sed -ne '/^[Nn]otmuch 0.1/{n;n;b NEWS}; d; :NEWS /^===/q; {p;n;b NEWS}' < NEWS | head -n -2
+ @sed -ne '/^[Nn]otmuch $(VERSION)/{n;n;b NEWS}; d; :NEWS /^===/q; {p;n;b NEWS}' < NEWS | head -n -2
@echo ""
@echo "What is notmuch"
@echo "==============="
@echo ""
@echo "For more about notmuch, see http://notmuchmail.org"
+.PHONY: verify-no-dirty-code
+verify-no-dirty-code: verify-version
+ @printf "Checking that source tree is clean..."
+ifneq ($(shell git ls-files -m),)
+ @echo "No"
+ @echo "The following files have been modified since the most recent git commit:"
+ @echo ""
+ @git ls-files -m
+ @echo ""
+ @echo "The release will be made from the committed state, but perhaps you meant"
+ @echo "to commit this code first? Please clean this up to make it more clear."
+ @false
+else
+ @echo "Good"
+endif
.PHONY: verify-version
verify-version: