postgres.git / summary / log / commit / refs

commit    0f7c0fb59cb71e1ecd45c6892ab184fefbfde8be
Author:   Andres Freund <andres@anarazel.de>
Date:     Fri Feb 21 16:16:57 2025 +0000
First released in: 18.0, 16.9, 17.5

    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 <r.zharkov@postgrespro.ru>
    Reviewed-by: Andrew Dunstan <andrew@dunslane.net>
    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 42a4d25bfd7..842d4f745a2 100644 --- a/meson.build +++ b/meson.build @@ -3375,6 +3375,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()) # Test suites that are not safe by default but can be run if selected # by the user via the whitespace-separated list in variable PG_TEST_EXTRA. diff --git a/src/test/perl/PostgreSQL/Test/Cluster.pm b/src/test/perl/PostgreSQL/Test/Cluster.pm index 7e97cc6e66e..f2d9afd398f 100644 --- a/src/test/perl/PostgreSQL/Test/Cluster.pm +++ b/src/test/perl/PostgreSQL/Test/Cluster.pm @@ -167,9 +167,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; [parent: 310907aaf010]