From: Ben Pfaff Date: Mon, 13 Dec 2010 22:32:55 +0000 (-0800) Subject: Makefile: Check for undistributed files on every make, not just "make dist". X-Git-Tag: v1.1.0~618 X-Git-Url: http://git.onelab.eu/?p=sliver-openvswitch.git;a=commitdiff_plain;h=39376d06ffe60b4352e7d1a6f0a8d3b662d9aa39 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". --- diff --git a/Makefile.am b/Makefile.am index 457513cb9..eef8eb6bb 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) diff --git a/datapath/Makefile.am b/datapath/Makefile.am index 71e2dc485..1c0af40c2 100644 --- a/datapath/Makefile.am +++ b/datapath/Makefile.am @@ -10,3 +10,13 @@ AUTOMAKE_OPTIONS = -Wno-portability include Modules.mk include linux-2.6/Modules.mk + +# 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