diff options
author | Ben Pfaff <blp@nicira.com> | 2010-12-13 14:32:55 -0800 |
---|---|---|
committer | Ben Pfaff <blp@nicira.com> | 2010-12-13 14:32:55 -0800 |
commit | 39376d06ffe60b4352e7d1a6f0a8d3b662d9aa39 (patch) | |
tree | 1bee6efa76263606ba1a9124ba556310b8918ae3 /Makefile.am | |
parent | ee45ad81ab7e9ff6034352b6743985e28fedd649 (diff) |
Makefile: Check for undistributed files on every make, not just "make dist".
It's really easy to add files to the Git repository but forget to add them
to the distributions created by "make dist". I do this regularly, for
example. For some time, we've had a check that runs on "make dist" to
make sure that the distribution is complete, but I still screw up because
I don't run "make dist" all that often.
This commit improves the situation, by doing the check on every "make",
instead of just on "make dist".
Diffstat (limited to 'Makefile.am')
-rw-r--r-- | Makefile.am | 43 |
1 files changed, 24 insertions, 19 deletions
diff --git a/Makefile.am b/Makefile.am index 457513cb..eef8eb6b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -96,26 +96,31 @@ SUFFIXES += .in # If we're checked out from a Git repository, make sure that every # file that is in Git is distributed. -dist-hook-git: - if test -e $(srcdir)/.git && (git --version) >/dev/null 2>&1; then \ - rc=0; \ - for d in `cd $(srcdir) && git ls-files`; do \ - if test ! -e $(distdir)/$$d; then \ - case $$d in # ( \ - .gitignore|*/.gitignore) ;; # ( \ - *) \ - if test $$rc = 0; then \ - echo "The distribution is missing the following files:"; \ - rc=1; \ - fi; \ - echo "$$d"; \ - ;; \ - esac; \ - fi \ - done; \ - exit $$rc; \ +ALL_LOCAL += dist-hook-git +dist-hook-git: distfiles + @if test -e $(srcdir)/.git && (git --version) >/dev/null 2>&1; then \ + (cd datapath && $(MAKE) distfiles); \ + (cat distfiles; sed 's|^|datapath/|' datapath/distfiles) | \ + sort -u > all-distfiles; \ + (cd $(srcdir) && git ls-files) | grep -v '\.gitignore$$' | \ + sort -u > all-gitfiles; \ + comm -1 -3 all-distfiles all-gitfiles > missing-distfiles; \ + if test -s missing-distfiles; then \ + echo "The distribution is missing the following files:"; \ + cat missing-distfiles; \ + exit 1; \ + fi; \ fi -DIST_HOOKS += dist-hook-git +CLEANFILES += all-distfiles all-gitfiles missing-distfiles +# The following is based on commands for the Automake "distdir" target. +distfiles: Makefile + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t" | sort -u > $@ +CLEANFILES += distfiles dist-hook: $(DIST_HOOKS) all-local: $(ALL_LOCAL) |