diff options
author | Jeff King <peff@peff.net> | 2012-06-20 14:32:16 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-07-09 08:57:52 -0700 |
commit | e4dd89ab98466e4d8e5fdadb0576f7e074992f48 (patch) | |
tree | 8552fdbabb151c6955c96bb844e08ee2236c7a96 | |
parent | Makefile: do not replace @@GIT_VERSION@@ in shell scripts (diff) | |
download | tgif-e4dd89ab98466e4d8e5fdadb0576f7e074992f48.tar.xz |
Makefile: update scripts when build-time parameters change
Currently, running:
make SHELL_PATH=/bin/bash &&
make SHELL_PATH=/bin/sh
will not rebuild any shell scripts in the second command,
leading to incorrect results when building from an unclean
working directory.
This patch introduces a new dependency meta-file to notice
the change.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | Makefile | 16 |
2 files changed, 14 insertions, 3 deletions
diff --git a/.gitignore b/.gitignore index c60c5a323f..6535cd73ad 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ /GIT-LDFLAGS /GIT-GUI-VARS /GIT-PREFIX +/GIT-SCRIPT-DEFINES /GIT-USER-AGENT /GIT-VERSION-FILE /bin-wrappers/ @@ -2007,6 +2007,8 @@ common-cmds.h: ./generate-cmdlist.sh command-list.txt common-cmds.h: $(wildcard Documentation/git-*.txt) $(QUIET_GEN)./generate-cmdlist.sh > $@+ && mv $@+ $@ +SCRIPT_DEFINES = $(SHELL_PATH_SQ):$(DIFF_SQ):$(GIT_VERSION):\ + $(localedir_SQ):$(NO_CURL):$(USE_GETTEXT_SCHEME):$(SANE_TOOL_PATH_SQ) define cmd_munge_script $(RM) $@ $@+ && \ sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \ @@ -2019,12 +2021,20 @@ sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \ $@.sh >$@+ endef -$(patsubst %.sh,%,$(SCRIPT_SH)) : % : %.sh +GIT-SCRIPT-DEFINES: FORCE + @FLAGS='$(SCRIPT_DEFINES)'; \ + if test x"$$FLAGS" != x"`cat $@ 2>/dev/null`" ; then \ + echo 1>&2 " * new script parameters"; \ + echo "$$FLAGS" >$@; \ + fi + + +$(patsubst %.sh,%,$(SCRIPT_SH)) : % : %.sh GIT-SCRIPT-DEFINES $(QUIET_GEN)$(cmd_munge_script) && \ chmod +x $@+ && \ mv $@+ $@ -$(SCRIPT_LIB) : % : %.sh +$(SCRIPT_LIB) : % : %.sh GIT-SCRIPT-DEFINES $(QUIET_GEN)$(cmd_munge_script) && \ mv $@+ $@ @@ -2726,7 +2736,7 @@ ifndef NO_TCLTK $(MAKE) -C git-gui clean endif $(RM) GIT-VERSION-FILE GIT-CFLAGS GIT-LDFLAGS GIT-GUI-VARS GIT-BUILD-OPTIONS - $(RM) GIT-USER-AGENT GIT-PREFIX + $(RM) GIT-USER-AGENT GIT-PREFIX GIT-SCRIPT-DEFINES .PHONY: all install profile-clean clean strip .PHONY: shell_compatibility_test please_set_SHELL_PATH_to_a_more_modern_shell |