From 32ce58e9e97723958d43e09fc3203a302c1eb4b5 Mon Sep 17 00:00:00 2001 From: Andres Freund Date: Fri, 21 Feb 2025 11:16:57 -0500 Subject: [PATCH] Make test portlock logic work with meson Previously the portlock logic, added in 9b4eafcaf41, didn't actually work properly when the tests were run via meson. 9b4eafcaf41 used the MESON_BUILD_ROOT environment variable to determine the directory for the port lock directory, but that's never set for running the tests. That meant that each test used its own portlock dir, unless the PG_TEST_PORT_DIR environment variable was set. Fix the problem by setting top_builddir for the environment. That's also used for the autoconf/make build. Backpatch back to 16, where meson support was added. Reported-by: Zharkov Roman Reviewed-by: Andrew Dunstan Backpatch-through: 16 --- meson.build | 2 ++ src/test/perl/PostgreSQL/Test/Cluster.pm | 4 +--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/meson.build b/meson.build index 574f992ed49..13c13748e5d 100644 --- a/meson.build +++ b/meson.build @@ -3401,6 +3401,8 @@ test_initdb_template = meson.build_root() / 'tmp_install' / 'initdb-template' test_env.set('PG_REGRESS', pg_regress.full_path()) test_env.set('REGRESS_SHLIB', regress_module.full_path()) test_env.set('INITDB_TEMPLATE', test_initdb_template) +# for Cluster.pm's portlock logic +test_env.set('top_builddir', meson.build_root()) # Add the temporary installation to the library search path on platforms where # that works (everything but windows, basically). On windows everything diff --git a/src/test/perl/PostgreSQL/Test/Cluster.pm b/src/test/perl/PostgreSQL/Test/Cluster.pm index f31af70edb6..b105cba05a6 100644 --- a/src/test/perl/PostgreSQL/Test/Cluster.pm +++ b/src/test/perl/PostgreSQL/Test/Cluster.pm @@ -168,9 +168,7 @@ INIT $portdir = $ENV{PG_TEST_PORT_DIR}; # Otherwise, try to use a directory at the top of the build tree # or as a last resort use the tmp_check directory - my $build_dir = - $ENV{MESON_BUILD_ROOT} - || $ENV{top_builddir} + my $build_dir = $ENV{top_builddir} || $PostgreSQL::Test::Utils::tmp_check; $portdir ||= "$build_dir/portlock"; $portdir =~ s!\\!/!g;