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-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=39376d06ffe60b4352e7d1a6f0a8d3b662d9aa39;p=openvswitch 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 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) diff --git a/datapath/Makefile.am b/datapath/Makefile.am index 71e2dc48..1c0af40c 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