With coreutils-7.3, I mistakenly included a locally modified (i.e., not-committed -- and buggy!) version of lib/getdate.y in the release tarball.
How could it happen? While there is a rule to ensure that no version-controlled file in coreutils proper is included in a release, that rule was not extended to cover uncommitted changes in a git submodule like Gnulib/. The following addition to maint.mk is to ensure I don't repeat that mistake. I'll make a new coreutils release shortly. >From 181a69f91ee2e3699b5e4a5a21f1fc3c843568e5 Mon Sep 17 00:00:00 2001 From: Jim Meyering <meyer...@redhat.com> Date: Sat, 2 May 2009 22:20:10 +0200 Subject: [PATCH] build: ensure that a release build fails when a submodule is unclean * top/maint.mk (no-submodule-changes): New rule. (alpha beta major): Depend on it. --- ChangeLog | 6 ++++++ top/maint.mk | 14 +++++++++++++- 2 files changed, 19 insertions(+), 1 deletions(-) diff --git a/ChangeLog b/ChangeLog index aacbc0c..3d72119 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-05-02 Jim Meyering <meyer...@redhat.com> + + build: ensure that a release build fails when a submodule is unclean + * top/maint.mk (no-submodule-changes): New rule. + (alpha beta major): Depend on it. + 2009-05-02 Bruno Haible <br...@clisp.org> Remove incompatibility between modules fnmatch-posix and fnmatch-gnu. diff --git a/top/maint.mk b/top/maint.mk index b7f6868..f34f6bf 100644 --- a/top/maint.mk +++ b/top/maint.mk @@ -676,9 +676,21 @@ define emit-commit-log '* cfg.mk (old_NEWS_hash): Auto-update.' endef +.PHONY: no-submodule-changes +no-submodule-changes: + if test -d .git; then \ + diff=$$(git submodule -q foreach git diff-index --name-only HEAD) \ + || exit 1; \ + case $$diff in '') ;; \ + *) echo '$(ME): submodule files are locally modified:'; \ + echo "$$diff"; exit 1;; esac; \ + else \ + : ; \ + fi + .PHONY: alpha beta major ALL_RECURSIVE_TARGETS += alpha beta major -alpha beta major: $(local-check) writable-files +alpha beta major: $(local-check) writable-files no-submodule-changes test $@ = major \ && { echo $(VERSION) | grep -E '^[0-9]+(\.[0-9]+)+$$' \ || { echo "invalid version string: $(VERSION)" 1>&2; exit 1;};}\ -- 1.6.3.rc4.190.g4648