From 87103e1fccd88e0fc8a64d774ddb620deeb90678 Mon Sep 17 00:00:00 2001
From: Ben Pfaff <blp@nicira.com>
Date: Thu, 27 May 2010 10:00:03 -0700
Subject: [PATCH] Add dist-hook to ensure that every file gets distributed.

It's easy to add a file to the repository and forget to make sure that it
is distributed.  This commit adds a hook target to the main Makefile that
causes "make dist" to fail if the tree is being built from a Git repository
and some files are not distributed.
---
 Makefile.am        | 28 ++++++++++++++++++++++++++++
 debian/automake.mk |  5 +++--
 2 files changed, 31 insertions(+), 2 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index 58b79a4a..37d98f60 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -45,6 +45,7 @@ EXTRA_DIST = \
 bin_PROGRAMS =
 sbin_PROGRAMS =
 bin_SCRIPTS =
+DIST_HOOKS =
 dist_man_MANS =
 dist_pkgdata_DATA =
 dist_pkgdata_SCRIPTS =
@@ -86,6 +87,32 @@ SUFFIXES += .in
 	fi
 	mv $@.tmp $@
 
+# 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;							      \
+	fi
+DIST_HOOKS += dist-hook-git
+
+dist-hook: $(DIST_HOOKS)
+.PHONY: $(DIST_HOOKS)
+
 include lib/automake.mk
 include ofproto/automake.mk
 include utilities/automake.mk
@@ -97,3 +124,4 @@ include vswitchd/automake.mk
 include ovsdb/automake.mk
 include xenserver/automake.mk
 include extras/ezio/automake.mk
+
diff --git a/debian/automake.mk b/debian/automake.mk
index 2658e392..ad347df7 100644
--- a/debian/automake.mk
+++ b/debian/automake.mk
@@ -62,6 +62,7 @@ EXTRA_DIST += \
 	debian/rules \
 	debian/rules.modules
 
-dist-hook:
+dist-hook-debian-changelog:
 	$(srcdir)/build-aux/update-debian-changelog '$(distdir)/debian/changelog' '$(VERSION)'
-EXTRA_DIST += build-aux/check-structs
+DIST_HOOKS += dist-hook-debian-changelog
+EXTRA_DIST += build-aux/update-debian-changelog
-- 
2.30.2