aboutsummaryrefslogtreecommitdiff
path: root/Makefile.am
diff options
context:
space:
mode:
authorBen Pfaff <blp@nicira.com>2010-12-13 14:32:55 -0800
committerBen Pfaff <blp@nicira.com>2010-12-13 14:32:55 -0800
commit39376d06ffe60b4352e7d1a6f0a8d3b662d9aa39 (patch)
tree1bee6efa76263606ba1a9124ba556310b8918ae3 /Makefile.am
parentee45ad81ab7e9ff6034352b6743985e28fedd649 (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.am43
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)