Add dist-hook to ensure that every file gets distributed.
authorBen Pfaff <blp@nicira.com>
Thu, 27 May 2010 17:00:03 +0000 (10:00 -0700)
committerBen Pfaff <blp@nicira.com>
Thu, 27 May 2010 17:11:51 +0000 (10:11 -0700)
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
debian/automake.mk

index 58b79a4af10f6a3371a4051b89ded7c09e3905b0..37d98f601bc7794794f01eb74bf3ee6a483cf61d 100644 (file)
@@ -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
+
index 2658e392da421c8d025de3b46cc3820ba32203dc..ad347df75fbeabf1a5a9b1e10917181ecb8778ee 100644 (file)
@@ -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