Skip to content

Commit 4638e88

Browse files
pks-tgitster
authored andcommitted
Makefile: use common template for GIT-BUILD-OPTIONS
The "GIT-BUILD-OPTIONS" file is generated by our build systems to propagate built-in features and paths to our tests. The generation is done ad-hoc, where both our Makefile and the CMake build instructions simply echo a bunch of strings into the file. This makes it very hard to figure out what variables are expected to exist and what format they have, and the written variables can easily get out of sync between build systems. Introduce a new "GIT-BUILD-OPTIONS.in" template to address this issue. This has multiple advantages: - It demonstrates which built options exist in the first place. - It can serve as a spot to document the build options. - Some build systems complain when not all variables could be substituted, alerting us of mismatches. Others don't, but if we forgot to substitute such variables we now have a bogus string that will likely cause our tests to fail, if they have any meaning in the first place. Backfill values that we didn't yet set in our CMake build instructions. While at it, remove the `SUPPORTS_SIMPLE_IPC` variable that we only set up in CMake as it isn't used anywhere. This change requires us to adapt the setup of TEST_OUTPUT_DIRECTORY in "test-lib.sh" such that it does not get overwritten after sourcing when it has been set up via the environment. This is the only instance I could find where we rely on ordering on variables. Signed-off-by: Patrick Steinhardt <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent e66fd72 commit 4638e88

File tree

4 files changed

+136
-95
lines changed

4 files changed

+136
-95
lines changed

GIT-BUILD-OPTIONS.in

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
SHELL_PATH=@SHELL_PATH@
2+
TEST_SHELL_PATH=@TEST_SHELL_PATH@
3+
PERL_PATH=@PERL_PATH@
4+
DIFF=@DIFF@
5+
PYTHON_PATH=@PYTHON_PATH@
6+
TAR=@TAR@
7+
NO_CURL=@NO_CURL@
8+
NO_ICONV=@NO_ICONV@
9+
NO_EXPAT=@NO_EXPAT@
10+
USE_LIBPCRE2=@USE_LIBPCRE2@
11+
NO_PERL=@NO_PERL@
12+
NO_PTHREADS=@NO_PTHREADS@
13+
NO_PYTHON=@NO_PYTHON@
14+
NO_REGEX=@NO_REGEX@
15+
NO_UNIX_SOCKETS=@NO_UNIX_SOCKETS@
16+
PAGER_ENV=@PAGER_ENV@
17+
SANITIZE_LEAK=@SANITIZE_LEAK@
18+
SANITIZE_ADDRESS=@SANITIZE_ADDRESS@
19+
X=@X@
20+
FSMONITOR_DAEMON_BACKEND=@FSMONITOR_DAEMON_BACKEND@
21+
FSMONITOR_OS_SETTINGS=@FSMONITOR_OS_SETTINGS@
22+
TEST_OUTPUT_DIRECTORY=@TEST_OUTPUT_DIRECTORY@
23+
GIT_TEST_OPTS=@GIT_TEST_OPTS@
24+
GIT_TEST_CMP=@GIT_TEST_CMP@
25+
GIT_TEST_CMP_USE_COPIED_CONTEXT=@GIT_TEST_CMP_USE_COPIED_CONTEXT@
26+
GIT_TEST_UTF8_LOCALE=@GIT_TEST_UTF8_LOCALE@
27+
NO_GETTEXT=@NO_GETTEXT@
28+
GIT_PERF_REPEAT_COUNT=@GIT_PERF_REPEAT_COUNT@
29+
GIT_PERF_REPO=@GIT_PERF_REPO@
30+
GIT_PERF_LARGE_REPO=@GIT_PERF_LARGE_REPO@
31+
GIT_PERF_MAKE_OPTS=@GIT_PERF_MAKE_OPTS@
32+
GIT_PERF_MAKE_COMMAND=@GIT_PERF_MAKE_COMMAND@
33+
GIT_INTEROP_MAKE_OPTS=@GIT_INTEROP_MAKE_OPTS@
34+
GIT_TEST_INDEX_VERSION=@GIT_TEST_INDEX_VERSION@
35+
GIT_TEST_PERL_FATAL_WARNINGS=@GIT_TEST_PERL_FATAL_WARNINGS@
36+
RUNTIME_PREFIX=@RUNTIME_PREFIX@

Makefile

+45-70
Original file line numberDiff line numberDiff line change
@@ -3160,80 +3160,55 @@ GIT-LDFLAGS: FORCE
31603160
echo "$$FLAGS" >GIT-LDFLAGS; \
31613161
fi
31623162

3163+
ifdef RUNTIME_PREFIX
3164+
RUNTIME_PREFIX_OPTION = true
3165+
else
3166+
RUNTIME_PREFIX_OPTION = false
3167+
endif
3168+
31633169
# We need to apply sq twice, once to protect from the shell
31643170
# that runs GIT-BUILD-OPTIONS, and then again to protect it
31653171
# and the first level quoting from the shell that runs "echo".
31663172
GIT-BUILD-OPTIONS: FORCE
3167-
@echo SHELL_PATH=\''$(subst ','\'',$(SHELL_PATH_SQ))'\' >$@+
3168-
@echo TEST_SHELL_PATH=\''$(subst ','\'',$(TEST_SHELL_PATH_SQ))'\' >>$@+
3169-
@echo PERL_PATH=\''$(subst ','\'',$(PERL_PATH_SQ))'\' >>$@+
3170-
@echo DIFF=\''$(subst ','\'',$(subst ','\'',$(DIFF)))'\' >>$@+
3171-
@echo PYTHON_PATH=\''$(subst ','\'',$(PYTHON_PATH_SQ))'\' >>$@+
3172-
@echo TAR=\''$(subst ','\'',$(subst ','\'',$(TAR)))'\' >>$@+
3173-
@echo NO_CURL=\''$(subst ','\'',$(subst ','\'',$(NO_CURL)))'\' >>$@+
3174-
@echo NO_ICONV=\''$(subst ','\'',$(subst ','\'',$(NO_ICONV)))'\' >>$@+
3175-
@echo NO_EXPAT=\''$(subst ','\'',$(subst ','\'',$(NO_EXPAT)))'\' >>$@+
3176-
@echo USE_LIBPCRE2=\''$(subst ','\'',$(subst ','\'',$(USE_LIBPCRE2)))'\' >>$@+
3177-
@echo NO_PERL=\''$(subst ','\'',$(subst ','\'',$(NO_PERL)))'\' >>$@+
3178-
@echo NO_PTHREADS=\''$(subst ','\'',$(subst ','\'',$(NO_PTHREADS)))'\' >>$@+
3179-
@echo NO_PYTHON=\''$(subst ','\'',$(subst ','\'',$(NO_PYTHON)))'\' >>$@+
3180-
@echo NO_REGEX=\''$(subst ','\'',$(subst ','\'',$(NO_REGEX)))'\' >>$@+
3181-
@echo NO_UNIX_SOCKETS=\''$(subst ','\'',$(subst ','\'',$(NO_UNIX_SOCKETS)))'\' >>$@+
3182-
@echo PAGER_ENV=\''$(subst ','\'',$(subst ','\'',$(PAGER_ENV)))'\' >>$@+
3183-
@echo SANITIZE_LEAK=\''$(subst ','\'',$(subst ','\'',$(SANITIZE_LEAK)))'\' >>$@+
3184-
@echo SANITIZE_ADDRESS=\''$(subst ','\'',$(subst ','\'',$(SANITIZE_ADDRESS)))'\' >>$@+
3185-
@echo X=\'$(X)\' >>$@+
3186-
ifdef FSMONITOR_DAEMON_BACKEND
3187-
@echo FSMONITOR_DAEMON_BACKEND=\''$(subst ','\'',$(subst ','\'',$(FSMONITOR_DAEMON_BACKEND)))'\' >>$@+
3188-
endif
3189-
ifdef FSMONITOR_OS_SETTINGS
3190-
@echo FSMONITOR_OS_SETTINGS=\''$(subst ','\'',$(subst ','\'',$(FSMONITOR_OS_SETTINGS)))'\' >>$@+
3191-
endif
3192-
ifdef TEST_OUTPUT_DIRECTORY
3193-
@echo TEST_OUTPUT_DIRECTORY=\''$(subst ','\'',$(subst ','\'',$(TEST_OUTPUT_DIRECTORY)))'\' >>$@+
3194-
endif
3195-
ifdef GIT_TEST_OPTS
3196-
@echo GIT_TEST_OPTS=\''$(subst ','\'',$(subst ','\'',$(GIT_TEST_OPTS)))'\' >>$@+
3197-
endif
3198-
ifdef GIT_TEST_CMP
3199-
@echo GIT_TEST_CMP=\''$(subst ','\'',$(subst ','\'',$(GIT_TEST_CMP)))'\' >>$@+
3200-
endif
3201-
ifdef GIT_TEST_CMP_USE_COPIED_CONTEXT
3202-
@echo GIT_TEST_CMP_USE_COPIED_CONTEXT=YesPlease >>$@+
3203-
endif
3204-
ifdef GIT_TEST_UTF8_LOCALE
3205-
@echo GIT_TEST_UTF8_LOCALE=\''$(subst ','\'',$(subst ','\'',$(GIT_TEST_UTF8_LOCALE)))'\' >>$@+
3206-
endif
3207-
@echo NO_GETTEXT=\''$(subst ','\'',$(subst ','\'',$(NO_GETTEXT)))'\' >>$@+
3208-
ifdef GIT_PERF_REPEAT_COUNT
3209-
@echo GIT_PERF_REPEAT_COUNT=\''$(subst ','\'',$(subst ','\'',$(GIT_PERF_REPEAT_COUNT)))'\' >>$@+
3210-
endif
3211-
ifdef GIT_PERF_REPO
3212-
@echo GIT_PERF_REPO=\''$(subst ','\'',$(subst ','\'',$(GIT_PERF_REPO)))'\' >>$@+
3213-
endif
3214-
ifdef GIT_PERF_LARGE_REPO
3215-
@echo GIT_PERF_LARGE_REPO=\''$(subst ','\'',$(subst ','\'',$(GIT_PERF_LARGE_REPO)))'\' >>$@+
3216-
endif
3217-
ifdef GIT_PERF_MAKE_OPTS
3218-
@echo GIT_PERF_MAKE_OPTS=\''$(subst ','\'',$(subst ','\'',$(GIT_PERF_MAKE_OPTS)))'\' >>$@+
3219-
endif
3220-
ifdef GIT_PERF_MAKE_COMMAND
3221-
@echo GIT_PERF_MAKE_COMMAND=\''$(subst ','\'',$(subst ','\'',$(GIT_PERF_MAKE_COMMAND)))'\' >>$@+
3222-
endif
3223-
ifdef GIT_INTEROP_MAKE_OPTS
3224-
@echo GIT_INTEROP_MAKE_OPTS=\''$(subst ','\'',$(subst ','\'',$(GIT_INTEROP_MAKE_OPTS)))'\' >>$@+
3225-
endif
3226-
ifdef GIT_TEST_INDEX_VERSION
3227-
@echo GIT_TEST_INDEX_VERSION=\''$(subst ','\'',$(subst ','\'',$(GIT_TEST_INDEX_VERSION)))'\' >>$@+
3228-
endif
3229-
ifdef GIT_TEST_PERL_FATAL_WARNINGS
3230-
@echo GIT_TEST_PERL_FATAL_WARNINGS=\''$(subst ','\'',$(subst ','\'',$(GIT_TEST_PERL_FATAL_WARNINGS)))'\' >>$@+
3231-
endif
3232-
ifdef RUNTIME_PREFIX
3233-
@echo RUNTIME_PREFIX=\'true\' >>$@+
3234-
else
3235-
@echo RUNTIME_PREFIX=\'false\' >>$@+
3236-
endif
3173+
@sed \
3174+
-e "s|@SHELL_PATH@|\'$(SHELL_PATH_SQ)\'|" \
3175+
-e "s|@TEST_SHELL_PATH@|\'$(TEST_SHELL_PATH_SQ)\'|" \
3176+
-e "s|@PERL_PATH@|\'$(PERL_PATH_SQ)\'|" \
3177+
-e "s|@DIFF@|\'$(DIFF)\'|" \
3178+
-e "s|@PYTHON_PATH@|\'$(PYTHON_PATH_SQ)\'|" \
3179+
-e "s|@TAR@|\'$(TAR)\'|" \
3180+
-e "s|@NO_CURL@|\'$(NO_CURL)\'|" \
3181+
-e "s|@NO_ICONV@|\'$(NO_ICONV)\'|" \
3182+
-e "s|@NO_EXPAT@|\'$(NO_EXPAT)\'|" \
3183+
-e "s|@USE_LIBPCRE2@|\'$(USE_LIBPCRE2)\'|" \
3184+
-e "s|@NO_PERL@|\'$(NO_PERL)\'|" \
3185+
-e "s|@NO_PTHREADS@|\'$(NO_PTHREADS)\'|" \
3186+
-e "s|@NO_PYTHON@|\'$(NO_PYTHON)\'|" \
3187+
-e "s|@NO_REGEX@|\'$(NO_REGEX)\'|" \
3188+
-e "s|@NO_UNIX_SOCKETS@|\'$(NO_UNIX_SOCKETS)\'|" \
3189+
-e "s|@PAGER_ENV@|\'$(PAGER_ENV)\'|" \
3190+
-e "s|@SANITIZE_LEAK@|\'$(SANITIZE_LEAK)\'|" \
3191+
-e "s|@SANITIZE_ADDRESS@|\'$(SANITIZE_ADDRESS)\'|" \
3192+
-e "s|@X@|\'$(X)\'|" \
3193+
-e "s|@FSMONITOR_DAEMON_BACKEND@|\'$(FSMONITOR_DAEMON_BACKEND)\'|" \
3194+
-e "s|@FSMONITOR_OS_SETTINGS@|\'$(FSMONITOR_OS_SETTINGS)\'|" \
3195+
-e "s|@TEST_OUTPUT_DIRECTORY@|\'$(TEST_OUTPUT_DIRECTORY)\'|" \
3196+
-e "s|@GIT_TEST_OPTS@|\'$(GIT_TEST_OPTS)\'|" \
3197+
-e "s|@GIT_TEST_CMP@|\'$(GIT_TEST_CMP)\'|" \
3198+
-e "s|@GIT_TEST_CMP_USE_COPIED_CONTEXT@|\'$(GIT_TEST_CMP_USE_COPIED_CONTEXT)\'|" \
3199+
-e "s|@GIT_TEST_UTF8_LOCALE@|\'$(GIT_TEST_UTF8_LOCALE)\'|" \
3200+
-e "s|@NO_GETTEXT@|\'$(NO_GETTEXT)\'|" \
3201+
-e "s|@GIT_PERF_REPEAT_COUNT@|\'$(GIT_PERF_REPEAT_COUNT)\'|" \
3202+
-e "s|@GIT_PERF_REPO@|\'$(GIT_PERF_REPO)\'|" \
3203+
-e "s|@GIT_PERF_LARGE_REPO@|\'$(GIT_PERF_LARGE_REPO)\'|" \
3204+
-e "s|@GIT_PERF_MAKE_OPTS@|\'$(GIT_PERF_MAKE_OPTS)\'|" \
3205+
-e "s|@GIT_PERF_MAKE_COMMAND@|\'$(GIT_PERF_MAKE_COMMAND)\'|" \
3206+
-e "s|@GIT_INTEROP_MAKE_OPTS@|\'$(GIT_INTEROP_MAKE_OPTS)\'|" \
3207+
-e "s|@GIT_TEST_INDEX_VERSION@|\'$(GIT_TEST_INDEX_VERSION)\'|" \
3208+
-e "s|@GIT_TEST_PERL_FATAL_WARNINGS@|\'$(GIT_TEST_PERL_FATAL_WARNINGS)\'|" \
3209+
-e "s|@RUNTIME_PREFIX@|\'$(RUNTIME_PREFIX_OPTION)\'|" \
3210+
GIT-BUILD-OPTIONS.in >$@+
3211+
@if grep -q '^[A-Z][A-Z_]*=@.*@$$' $@+; then echo "Unsubstituted build options in $@" >&2 && exit 1; fi
32373212
@if cmp $@+ $@ >/dev/null 2>&1; then $(RM) $@+; else mv $@+ $@; fi
32383213
@if test -f GIT-BUILD-DIR; then rm GIT-BUILD-DIR; fi
32393214

contrib/buildsystems/CMakeLists.txt

+39-19
Original file line numberDiff line numberDiff line change
@@ -1125,27 +1125,47 @@ if(NOT PYTHON_TESTS)
11251125
set(NO_PYTHON 1)
11261126
endif()
11271127

1128-
file(WRITE ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "SHELL_PATH='${SHELL_PATH}'\n")
1129-
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "TEST_SHELL_PATH='${TEST_SHELL_PATH}'\n")
1130-
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "PERL_PATH='${PERL_PATH}'\n")
1131-
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "DIFF='${DIFF}'\n")
1132-
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "PYTHON_PATH='${PYTHON_PATH}'\n")
1133-
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "TAR='${TAR}'\n")
1134-
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "NO_CURL='${NO_CURL}'\n")
1135-
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "NO_ICONV='${NO_ICONV}'\n")
1136-
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "NO_EXPAT='${NO_EXPAT}'\n")
1137-
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "NO_PERL='${NO_PERL}'\n")
1138-
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "NO_PTHREADS='${NO_PTHREADS}'\n")
1139-
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "NO_UNIX_SOCKETS='${NO_UNIX_SOCKETS}'\n")
1140-
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "PAGER_ENV='${PAGER_ENV}'\n")
1141-
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "X='${EXE_EXTENSION}'\n")
1142-
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "NO_GETTEXT='${NO_GETTEXT}'\n")
1143-
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "RUNTIME_PREFIX='${RUNTIME_PREFIX}'\n")
1144-
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "NO_PYTHON='${NO_PYTHON}'\n")
1145-
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "SUPPORTS_SIMPLE_IPC='${SUPPORTS_SIMPLE_IPC}'\n")
1128+
file(STRINGS ${CMAKE_SOURCE_DIR}/GIT-BUILD-OPTIONS.in git_build_options NEWLINE_CONSUME)
1129+
string(REPLACE "@SHELL_PATH@" "'${SHELL_PATH}'" git_build_options "${git_build_options}")
1130+
string(REPLACE "@TEST_SHELL_PATH@" "'${TEST_SHELL_PATH}'" git_build_options "${git_build_options}")
1131+
string(REPLACE "@PERL_PATH@" "'${PERL_PATH}'" git_build_options "${git_build_options}")
1132+
string(REPLACE "@DIFF@" "'${DIFF}'" git_build_options "${git_build_options}")
1133+
string(REPLACE "@PYTHON_PATH@" "'${PYTHON_PATH}'" git_build_options "${git_build_options}")
1134+
string(REPLACE "@TAR@" "'${TAR}'" git_build_options "${git_build_options}")
1135+
string(REPLACE "@NO_CURL@" "${NO_CURL}" git_build_options "${git_build_options}")
1136+
string(REPLACE "@NO_ICONV@" "${NO_ICONV}" git_build_options "${git_build_options}")
1137+
string(REPLACE "@NO_EXPAT@" "${NO_EXPAT}" git_build_options "${git_build_options}")
1138+
string(REPLACE "@USE_LIBPCRE2@" "" git_build_options "${git_build_options}")
1139+
string(REPLACE "@NO_PERL@" "${NO_PERL}" git_build_options "${git_build_options}")
1140+
string(REPLACE "@NO_PTHREADS@" "${NO_PTHREADS}" git_build_options "${git_build_options}")
1141+
string(REPLACE "@NO_PYTHON@" "${NO_PYTHON}" git_build_options "${git_build_options}")
1142+
string(REPLACE "@NO_REGEX@" "" git_build_options "${git_build_options}")
1143+
string(REPLACE "@NO_UNIX_SOCKETS@" "${NO_UNIX_SOCKETS}" git_build_options "${git_build_options}")
1144+
string(REPLACE "@PAGER_ENV@" "'${PAGER_ENV}'" git_build_options "${git_build_options}")
1145+
string(REPLACE "@SANITIZE_LEAK@" "" git_build_options "${git_build_options}")
1146+
string(REPLACE "@SANITIZE_ADDRESS@" "" git_build_options "${git_build_options}")
1147+
string(REPLACE "@X@" "${EXE_EXTENSION}" git_build_options "${git_build_options}")
1148+
string(REPLACE "@FSMONITOR_DAEMON_BACKEND@" "win32" git_build_options "${git_build_options}")
1149+
string(REPLACE "@FSMONITOR_OS_SETTINGS@" "win32" git_build_options "${git_build_options}")
1150+
string(REPLACE "@TEST_OUTPUT_DIRECTORY@" "" git_build_options "${git_build_options}")
1151+
string(REPLACE "@GIT_TEST_OPTS@" "" git_build_options "${git_build_options}")
1152+
string(REPLACE "@GIT_TEST_CMP@" "" git_build_options "${git_build_options}")
1153+
string(REPLACE "@GIT_TEST_CMP_USE_COPIED_CONTEXT@" "" git_build_options "${git_build_options}")
1154+
string(REPLACE "@GIT_TEST_UTF8_LOCALE@" "" git_build_options "${git_build_options}")
1155+
string(REPLACE "@NO_GETTEXT@" "${NO_GETTEXT}" git_build_options "${git_build_options}")
1156+
string(REPLACE "@GIT_PERF_REPEAT_COUNT@" "" git_build_options "${git_build_options}")
1157+
string(REPLACE "@GIT_PERF_REPO@" "" git_build_options "${git_build_options}")
1158+
string(REPLACE "@GIT_PERF_LARGE_REPO@" "" git_build_options "${git_build_options}")
1159+
string(REPLACE "@GIT_PERF_MAKE_OPTS@" "" git_build_options "${git_build_options}")
1160+
string(REPLACE "@GIT_PERF_MAKE_COMMAND@" "" git_build_options "${git_build_options}")
1161+
string(REPLACE "@GIT_INTEROP_MAKE_OPTS@" "" git_build_options "${git_build_options}")
1162+
string(REPLACE "@GIT_TEST_INDEX_VERSION@" "" git_build_options "${git_build_options}")
1163+
string(REPLACE "@GIT_TEST_PERL_FATAL_WARNINGS@" "" git_build_options "${git_build_options}")
1164+
string(REPLACE "@RUNTIME_PREFIX@" "'${RUNTIME_PREFIX}'" git_build_options "${git_build_options}")
11461165
if(USE_VCPKG)
1147-
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "PATH=\"$PATH:$TEST_DIRECTORY/../compat/vcbuild/vcpkg/installed/x64-windows/bin\"\n")
1166+
string(APPEND git_build_options "PATH=\"$PATH:$TEST_DIRECTORY/../compat/vcbuild/vcpkg/installed/x64-windows/bin\"\n")
11481167
endif()
1168+
file(WRITE ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS ${git_build_options})
11491169

11501170
#Make the tests work when building out of the source tree
11511171
get_filename_component(CACHE_PATH ${CMAKE_CURRENT_LIST_DIR}/../../CMakeCache.txt ABSOLUTE)

t/test-lib.sh

+16-6
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,6 @@ else
3535
# needing to exist.
3636
TEST_DIRECTORY=$(cd "$TEST_DIRECTORY" && pwd) || exit 1
3737
fi
38-
if test -z "$TEST_OUTPUT_DIRECTORY"
39-
then
40-
# Similarly, override this to store the test-results subdir
41-
# elsewhere
42-
TEST_OUTPUT_DIRECTORY=$TEST_DIRECTORY
43-
fi
4438
GIT_BUILD_DIR="${TEST_DIRECTORY%/t}"
4539
if test "$TEST_DIRECTORY" = "$GIT_BUILD_DIR"
4640
then
@@ -92,6 +86,15 @@ export LSAN_OPTIONS
9286
prepend_var UBSAN_OPTIONS : $GIT_SAN_OPTIONS
9387
export UBSAN_OPTIONS
9488

89+
# The TEST_OUTPUT_DIRECTORY will be overwritten via GIT-BUILD-OPTIONS. So in
90+
# case the caller has manually set up this variable via the environment we must
91+
# make sure to not overwrite that value, and thus we save it into
92+
# TEST_OUTPUT_DIRECTORY_OVERRIDE here.
93+
if test -n "$TEST_OUTPUT_DIRECTORY" && test -z "$TEST_OUTPUT_DIRECTORY_OVERRIDE"
94+
then
95+
TEST_OUTPUT_DIRECTORY_OVERRIDE=$TEST_OUTPUT_DIRECTORY
96+
fi
97+
9598
if test ! -f "$GIT_BUILD_DIR"/GIT-BUILD-OPTIONS
9699
then
97100
echo >&2 'error: GIT-BUILD-OPTIONS missing (has Git been built?).'
@@ -100,6 +103,13 @@ fi
100103
. "$GIT_BUILD_DIR"/GIT-BUILD-OPTIONS
101104
export PERL_PATH SHELL_PATH
102105

106+
if test -z "$TEST_OUTPUT_DIRECTORY"
107+
then
108+
# Similarly, override this to store the test-results subdir
109+
# elsewhere
110+
TEST_OUTPUT_DIRECTORY=$TEST_DIRECTORY
111+
fi
112+
103113
# In t0000, we need to override test directories of nested testcases. In case
104114
# the developer has TEST_OUTPUT_DIRECTORY part of his build options, then we'd
105115
# reset this value to instead contain what the developer has specified. We thus

0 commit comments

Comments
 (0)