use build-time SHELL_PATH in test scripts

The top-level Makefile now creates a GIT-BUILD-OPTIONS file
which stores any options selected by the make process that
may be of use to further parts of the build process.
Specifically, we store the SHELL_PATH so that it can be used
by tests to construct shell scripts on the fly.

The format of the GIT-BUILD-OPTIONS file is Bourne shell,
and it is sourced by test-lib.sh; all tests can rely on just
having $SHELL_PATH correctly set in the environment.

The GIT-BUILD-OPTIONS file is written every time the
toplevel 'make' is invoked. Since the only users right now
are the test scripts, there's no drawback to updating its
timestamp. If something build-related depends on this, we
can do a trick similar to the one used by GIT-CFLAGS.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jeff King 2008-02-24 14:40:45 -05:00 committed by Junio C Hamano
parent 75336878c7
commit 7cf7f54a65
4 changed files with 10 additions and 3 deletions

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
GIT-BUILD-OPTIONS
GIT-CFLAGS GIT-CFLAGS
GIT-GUI-VARS GIT-GUI-VARS
GIT-VERSION-FILE GIT-VERSION-FILE

View File

@ -812,7 +812,7 @@ export TAR INSTALL DESTDIR SHELL_PATH
### Build rules ### Build rules
all:: $(ALL_PROGRAMS) $(BUILT_INS) $(OTHER_PROGRAMS) all:: $(ALL_PROGRAMS) $(BUILT_INS) $(OTHER_PROGRAMS) GIT-BUILD-OPTIONS
ifneq (,$X) ifneq (,$X)
$(foreach p,$(patsubst %$X,%,$(filter %$X,$(ALL_PROGRAMS) $(BUILT_INS) git$X)), $(RM) '$p';) $(foreach p,$(patsubst %$X,%,$(filter %$X,$(ALL_PROGRAMS) $(BUILT_INS) git$X)), $(RM) '$p';)
endif endif
@ -1011,6 +1011,9 @@ GIT-CFLAGS: .FORCE-GIT-CFLAGS
echo "$$FLAGS" >GIT-CFLAGS; \ echo "$$FLAGS" >GIT-CFLAGS; \
fi fi
GIT-BUILD-OPTIONS: .FORCE-GIT-BUILD-OPTIONS
@echo SHELL_PATH=\''$(SHELL_PATH_SQ)'\' >$@
### Detect Tck/Tk interpreter path changes ### Detect Tck/Tk interpreter path changes
ifndef NO_TCLTK ifndef NO_TCLTK
TRACK_VARS = $(subst ','\'',-DTCLTK_PATH='$(TCLTK_PATH_SQ)') TRACK_VARS = $(subst ','\'',-DTCLTK_PATH='$(TCLTK_PATH_SQ)')
@ -1166,10 +1169,11 @@ ifndef NO_TCLTK
$(MAKE) -C gitk-git clean $(MAKE) -C gitk-git clean
$(MAKE) -C git-gui clean $(MAKE) -C git-gui clean
endif endif
$(RM) GIT-VERSION-FILE GIT-CFLAGS GIT-GUI-VARS $(RM) GIT-VERSION-FILE GIT-CFLAGS GIT-GUI-VARS GIT-BUILD-OPTIONS
.PHONY: all install clean strip .PHONY: all install clean strip
.PHONY: .FORCE-GIT-VERSION-FILE TAGS tags cscope .FORCE-GIT-CFLAGS .PHONY: .FORCE-GIT-VERSION-FILE TAGS tags cscope .FORCE-GIT-CFLAGS
.PHONY: .FORCE-GIT-BUILD-OPTIONS
### Check documentation ### Check documentation
# #

View File

@ -61,7 +61,7 @@ test_expect_success 'setup' '
git tag I git tag I
' '
echo "#!$SHELL" >fake-editor echo "#!$SHELL_PATH" >fake-editor.sh
cat >> fake-editor.sh <<\EOF cat >> fake-editor.sh <<\EOF
case "$1" in case "$1" in
*/COMMIT_EDITMSG) */COMMIT_EDITMSG)

View File

@ -359,6 +359,8 @@ if ! test -x ../test-chmtime; then
exit 1 exit 1
fi fi
. ../GIT-BUILD-OPTIONS
# Test repository # Test repository
test=trash test=trash
rm -fr "$test" rm -fr "$test"