Improve 'make change-history' prereq tests

* Makefile.in (gen_origin): Fix to match what's in the master branch.
(no-ChangeLog, master-branch-is-current): New rules.
(change-history): Depend on them, to avoid similar future problems.
Escape the local-variables string to pacify Emacs when editing
Makefile.in.
This commit is contained in:
Paul Eggert 2015-04-12 10:21:59 -07:00
parent fe3b5b3f45
commit 950c0027cb

View file

@ -1088,7 +1088,7 @@ bootstrap: bootstrap-clean
$(MAKE) all
# The newest revision that should not appear in the generated ChangeLog.
gen_origin = 2cdbb8983dd49ce5c31c74b26f740bcb3e5a4c5d
gen_origin = 3311ace9c54a50b83a838e2eb7fa9565176e0c4f
# Convert git commit log to ChangeLog file. make-dist uses this.
.PHONY: ChangeLog change-history unchanged-history-files
ChangeLog:
@ -1101,16 +1101,20 @@ ChangeLog:
CHANGELOG_HISTORY_INDEX_MAX = 1
CHANGELOG_N = ChangeLog.$(CHANGELOG_HISTORY_INDEX_MAX)
# Check that history-relevant files match what's in the repository.
# Otherwise, 'make change-history' might mess up the ChangeLog history files.
# Check that we are in a good state for changing history.
no-ChangeLog:
test ! -f ChangeLog
master-branch-is-current:
git branch | grep -q '^\* master$$'
unchanged-history-files:
x=$$(git diff-files --name-only $(CHANGELOG_N) Makefile.in) && \
test -z "$$x"
# Copy newer commit messages to the start of the ChangeLog history file,
# and consider them to be older.
change-history: ChangeLog unchanged-history-files
(sed '/^;; Local Variables:/,$$d' <ChangeLog && cat $(CHANGELOG_N)) \
change-history: no-ChangeLog master-branch-is-current unchanged-history-files \
ChangeLog
(sed '/^;; [L]ocal Variables:/,$$d' <ChangeLog && cat $(CHANGELOG_N)) \
>$(CHANGELOG_N).tmp
new_origin=$$(git log --pretty=format:%H HEAD^!) && \
sed 's/^\(gen_origin *= *\).*/\1'"$$new_origin/" \