From 2319e65dbffeb1c6654239a58a4e17dde0380a5f Mon Sep 17 00:00:00 2001 From: Hans Ulrich Niedermann Date: Sat, 10 Nov 2007 17:06:12 +0100 Subject: Demonstrate "dist-of-git-commit" message It is certainly possible to do that in a cleaner way with less code, but at least this works. --- Makefile.am | 4 +- git-buildmsg/Makefile-files | 41 ++++++++++ git-buildmsg/README.git-buildmsg | 8 +- git-buildmsg/git-buildmsg.in | 157 ++++++++++++++++++++++++--------------- git-buildmsg/print-buildmsg.c | 11 +++ 5 files changed, 158 insertions(+), 63 deletions(-) create mode 100644 git-buildmsg/print-buildmsg.c diff --git a/Makefile.am b/Makefile.am index d83caf6..e77ad76 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,12 +1,14 @@ CLEANFILES = BUILT_SOURCES = EXTRA_DIST = -bin_SCRIPTS = man1_MANS = UPLOAD_FILES = doc_DATA = dist_doc_DATA = +bin_PROGRAMS = check_PROGRAMS = +bin_SCRIPTS = +check_SCRIPTS = TESTS = AM_INSTALLCHECK_STD_OPTIONS_EXEMPT = diff --git a/git-buildmsg/Makefile-files b/git-buildmsg/Makefile-files index ad5bcc5..e639d56 100644 --- a/git-buildmsg/Makefile-files +++ b/git-buildmsg/Makefile-files @@ -15,3 +15,44 @@ git-buildmsg/git-buildmsg-test.c: git-buildmsg/git-buildmsg mkdir -p git-buildmsg sh git-buildmsg/git-buildmsg --example --srcdir "$(top_srcdir)" \ --output git-buildmsg/git-buildmsg-test.c + +BUILT_SOURCES += git-buildmsg.stamp +GIT_BUILDMSG_CMD = $(SHELL) "git-buildmsg/git-buildmsg" --error-if-no-git +GIT_BUILDMSG_H = git-buildmsg.h +CLEANFILES += $(GIT_BUILDMSG_H) +git-buildmsg.stamp: git-buildmsg/git-buildmsg + if env GIT_DIR="$(top_srcdir)/.git" $(GIT_BUILDMSG_CMD) -s "$(top_srcdir)" -o "$(GIT_BUILDMSG_H)"; then \ + if test -s "$(srcdir)/$(GIT_BUILDMSG_H)"; then \ + if diff "$(srcdir)/$(GIT_BUILDMSG_H)" "$(GIT_BUILDMSG_H)"; then \ + echo "New $(GIT_BUILDMSG_H) does not differ from $(srcdir)/$(GIT_BUILDMSG_H)"; \ + exit 0; \ + else \ + echo "Error: $(srcdir)/$(GIT_BUILDMSG_H) and $(GIT_BUILDMSG_H) differ."; \ + echo " You probably want to remove the former."; \ + exit 1; \ + fi; \ + fi; \ + else \ + if test -s "$(srcdir)/$(GIT_BUILDMSG_H)"; then \ + echo "Not a git worktree."; \ + echo "Keep using the $(GIT_BUILDMSG_H) from $(top_srcdir)"; \ + rm -f "$(GIT_BUILDMSG_H)"; \ + exit 0; \ + else \ + echo "Warning: $(GIT_BUILDMSG_H) without git workdir."; \ + exit 0; \ + fi; \ + fi + +TESTS += print-buildmsg +bin_PROGRAMS += print-buildmsg +check_PROGRAMS += print-buildmsg +print_buildmsg_SOURCES = git-buildmsg/print-buildmsg.c +print_buildmsg_SOURCES += $(GIT_BUILDMSG_H) + +dist-hook: + if test -e "$(GIT_BUILDMSG_H)"; then \ + $(SED) -e 's|^#undef GIT_IS_DIST.*|#define GIT_IS_DIST 1|' \ + "$(GIT_BUILDMSG_H)" > "$(GIT_BUILDMSG_H).new"; \ + mv -f "$(GIT_BUILDMSG_H).new" "$(GIT_BUILDMSG_H)"; \ + fi diff --git a/git-buildmsg/README.git-buildmsg b/git-buildmsg/README.git-buildmsg index c95f5e7..dc9a7cd 100644 --- a/git-buildmsg/README.git-buildmsg +++ b/git-buildmsg/README.git-buildmsg @@ -7,12 +7,12 @@ EXTRA_DIST += git-buildmsg ---[ END top-level Makefile.am ]--- ---[ BEGIN Makefile.am where information is needed ]--- -BUILT_SOURCES += git-buildmsgstamp +BUILT_SOURCES += git-buildmsg.stamp GIT_BUILDMSG_CMD = $(SHELL) "$(top_srcdir)/git-buildmsg" GIT_BUILDMSG_H = git-buildmsg.h CLEANFILES += $(GIT_BUILDMSG_H) -git_version.stamp: - env GIT_DIR="$(top_srcdir)/.git" $(GIT_VERSION_CMD) -s "$(top_srcdir)" -o "$(GIT_BUILDMSG_H)" +git-buildmsg.stamp: + env GIT_DIR="$(top_srcdir)/.git" $(GIT_BUILDMSG_CMD) -s "$(top_srcdir)" -o "$(GIT_BUILDMSG_H)" @if test -s "$(srcdir)/$(GIT_BUILDMSG_H)"; then \ if cmp "$(srcdir)/$(GIT_BUILDMSG_H)" "$(GIT_BUILDMSG_H)"; then :; \ else \ @@ -24,7 +24,7 @@ git_version.stamp: bin_PROGRAMS += foo foo_SOURCES = foo.c -ndist_foo_SOURCES = $(GIT_BUILDMSG_H) +nodist_foo_SOURCES = $(GIT_BUILDMSG_H) ---[ END Makefile.am where information is needed ]--- diff --git a/git-buildmsg/git-buildmsg.in b/git-buildmsg/git-buildmsg.in index 7cb53dd..1f7d5ea 100644 --- a/git-buildmsg/git-buildmsg.in +++ b/git-buildmsg/git-buildmsg.in @@ -48,11 +48,12 @@ working_dir="$(pwd)" # Who am I? self="$(basename "$0")" -# Defaults +# Default settings ifndef_symbol="GIT_BUILDMSG_H" outfile="-" print_example=false srcdir="$(pwd)" +error_if_no_git=false # Help messages USAGE="[