diff mbox series

[RFC,v3,13/15] t: allow overriding build dir

Message ID 542b01515e186203ea12b0a69fc1dcb619df2f73.1729254070.git.ps@pks.im (mailing list archive)
State New
Headers show
Series Modernize the build system | expand

Commit Message

Patrick Steinhardt Oct. 18, 2024, 12:24 p.m. UTC
Our "test-lib.sh" assumes that our build directory is the parent
directory of "t/". While true when using our Makefile, it's not when
using build systems that support out-of-tree builds.

In commit ee9e66e4e7 (cmake: avoid editing t/test-lib.sh, 2022-10-18),
we have introduce support for overriding the GIT_BIULD_DIR by creating
the file "$GIT_BUILD_DIR/GIT-BUILD-DIR" with its contents pointing to
the location of the build directory. The intent was to stop modifying
"t/test-lib.sh" with the CMake build systems while allowing out-of-tree
builds. But "$GIT_BUILD_DIR" is somewhat misleadingly named, as it in
fact points to the _source_ directory. So while that commit solved part
of the problem for out-of-tree builds, CMake still has to write files
into the source tree.

Solve the second part of the problem, namely not having to write any
data into the source directory at all, by also supporting an environment
variable that allows us to point to a different build directory. This
allows us to perform properly self-contained out-of-tree builds.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
 t/test-lib.sh | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Eric Sunshine Oct. 19, 2024, 5:11 a.m. UTC | #1
On Fri, Oct 18, 2024 at 8:24 AM Patrick Steinhardt <ps@pks.im> wrote:
> Our "test-lib.sh" assumes that our build directory is the parent
> directory of "t/". While true when using our Makefile, it's not when
> using build systems that support out-of-tree builds.
>
> In commit ee9e66e4e7 (cmake: avoid editing t/test-lib.sh, 2022-10-18),
> we have introduce support for overriding the GIT_BIULD_DIR by creating

s/GIT_BIULD_DIR/GIT_BUILD_DIR/

> the file "$GIT_BUILD_DIR/GIT-BUILD-DIR" with its contents pointing to
> the location of the build directory. The intent was to stop modifying
> "t/test-lib.sh" with the CMake build systems while allowing out-of-tree
> builds. But "$GIT_BUILD_DIR" is somewhat misleadingly named, as it in
> fact points to the _source_ directory. So while that commit solved part
> of the problem for out-of-tree builds, CMake still has to write files
> into the source tree.
>
> Solve the second part of the problem, namely not having to write any
> data into the source directory at all, by also supporting an environment
> variable that allows us to point to a different build directory. This
> allows us to perform properly self-contained out-of-tree builds.
>
> Signed-off-by: Patrick Steinhardt <ps@pks.im>
diff mbox series

Patch

diff --git a/t/test-lib.sh b/t/test-lib.sh
index 677424ced06..096af9be6b1 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -35,7 +35,7 @@  else
 	# needing to exist.
 	TEST_DIRECTORY=$(cd "$TEST_DIRECTORY" && pwd) || exit 1
 fi
-GIT_BUILD_DIR="${TEST_DIRECTORY%/t}"
+GIT_BUILD_DIR="${GIT_BUILD_DIR:-${TEST_DIRECTORY%/t}}"
 if test "$TEST_DIRECTORY" = "$GIT_BUILD_DIR"
 then
 	echo "PANIC: Running in a $TEST_DIRECTORY that doesn't end in '/t'?" >&2
@@ -513,6 +513,7 @@  unset VISUAL EMAIL LANGUAGE $("$PERL_PATH" -e '
 		PERF_
 		CURL_VERBOSE
 		TRACE_CURL
+		BUILD_DIR
 	));
 	my @vars = grep(/^GIT_/ && !/^GIT_($ok)/o, @env);
 	print join("\n", @vars);