From b6a0d469cae4410a05b5e109748278065a931b68 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Fri, 3 Mar 2023 07:18:20 +0100 Subject: [PATCH] meson: Prevent installation of test files during main install Previously, meson installed modules under src/test/modules/ as part of a normal installation, even though these files are only meant for use by tests. This is because there is no way to set up up the build system to install extra things only when told. This patch fixes that with a workaround: We don't install these modules as part of meson install, but we create a new "test" that runs before the real tests whose action it is to install these files. The installation is done by manual copies using a small helper script. Author: Nazir Bilal Yavuz Discussion: https://www.postgresql.org/message-id/flat/2a039e8e-f31f-31e8-afe7-bab3130ad2de%40enterprisedb.com --- meson.build | 32 ++++++++++++++++++- src/backend/meson.build | 7 ++++ src/test/modules/delay_execution/meson.build | 6 ++-- src/test/modules/dummy_index_am/meson.build | 9 ++---- src/test/modules/dummy_seclabel/meson.build | 9 ++---- src/test/modules/plsample/meson.build | 10 ++---- src/test/modules/spgist_name_ops/meson.build | 10 ++---- .../ssl_passphrase_callback/meson.build | 6 ++-- src/test/modules/test_bloomfilter/meson.build | 9 ++---- .../modules/test_copy_callbacks/meson.build | 9 ++---- .../modules/test_custom_rmgrs/meson.build | 9 ++---- src/test/modules/test_ddl_deparse/meson.build | 9 ++---- src/test/modules/test_extensions/meson.build | 4 +-- .../modules/test_ginpostinglist/meson.build | 9 ++---- src/test/modules/test_integerset/meson.build | 9 ++---- src/test/modules/test_lfind/meson.build | 9 ++---- src/test/modules/test_oat_hooks/meson.build | 6 ++-- src/test/modules/test_parser/meson.build | 9 ++---- .../test_pg_db_role_setting/meson.build | 9 ++---- src/test/modules/test_pg_dump/meson.build | 4 +-- src/test/modules/test_predtest/meson.build | 9 ++---- src/test/modules/test_rbtree/meson.build | 9 ++---- src/test/modules/test_regex/meson.build | 9 ++---- src/test/modules/test_rls_hooks/meson.build | 6 ++-- src/test/modules/test_shm_mq/meson.build | 9 ++---- src/test/modules/test_slru/meson.build | 9 ++---- src/test/modules/worker_spi/meson.build | 9 ++---- src/test/regress/meson.build | 18 ++++------- src/tools/install_test_files | 28 ++++++++++++++++ 29 files changed, 139 insertions(+), 151 deletions(-) create mode 100644 src/tools/install_test_files diff --git a/meson.build b/meson.build index 26be83afb6..87cb974ad7 100644 --- a/meson.build +++ b/meson.build @@ -2801,6 +2801,10 @@ backend_code = declare_dependency( dependencies: os_deps + backend_both_deps + backend_deps, ) +# install these files only during test, not main install +test_install_data = [] +test_install_libs = [] + # src/backend/meson.build defines backend_mod_code used for extension # libraries. @@ -2821,6 +2825,10 @@ subdir('doc/src/sgml') generated_sources_ac += {'': ['GNUmakefile']} +# After processing src/test, add test_install_libs to the testprep_targets +# to build them +testprep_targets += test_install_libs + # If there are any files in the source directory that we also generate in the # build directory, they might get preferred over the newly generated files, @@ -2903,14 +2911,36 @@ meson_install_args = meson_args + ['install'] + { 'muon': [] }[meson_impl] +# setup tests should be run first, +# so define priority for these +setup_tests_priority = 100 test('tmp_install', meson_bin, args: meson_install_args , env: {'DESTDIR':test_install_destdir}, - priority: 100, + priority: setup_tests_priority, timeout: 300, is_parallel: false, suite: ['setup']) +# get full paths of test_install_libs to copy them +test_install_libs_fp = [] +foreach lib: test_install_libs + test_install_libs_fp += lib.full_path() +endforeach + +install_test_files = files('src/tools/install_test_files') +test('install_test_files', + python, args: [ + install_test_files, + '--datadir', test_install_location / contrib_data_args['install_dir'], + '--libdir', test_install_location / dir_lib_pkg, + '--install-data', test_install_data, + '--install-libs', test_install_libs_fp, + ], + priority: setup_tests_priority, + is_parallel: false, + suite: ['setup']) + test_result_dir = meson.build_root() / 'testrun' diff --git a/src/backend/meson.build b/src/backend/meson.build index 4fdd209b82..ccfc382fcf 100644 --- a/src/backend/meson.build +++ b/src/backend/meson.build @@ -180,12 +180,19 @@ backend_mod_code = declare_dependency( dependencies: backend_mod_deps, ) +# normal extension modules pg_mod_args = default_mod_args + { 'dependencies': [backend_mod_code], 'cpp_args': pg_mod_cpp_args, 'link_depends': pg_mod_link_depend, } +# extension modules that shouldn't be installed by default, as they're only +# for testing +pg_test_mod_args = pg_mod_args + { + 'install': false +} + # Shared modules that, on some system, link against the server binary. Only diff --git a/src/test/modules/delay_execution/meson.build b/src/test/modules/delay_execution/meson.build index a7165d7506..9f33b19cb7 100644 --- a/src/test/modules/delay_execution/meson.build +++ b/src/test/modules/delay_execution/meson.build @@ -1,7 +1,5 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -# FIXME: prevent install during main install, but not during test :/ - delay_execution_sources = files( 'delay_execution.c', ) @@ -14,9 +12,9 @@ endif delay_execution = shared_module('delay_execution', delay_execution_sources, - kwargs: pg_mod_args, + kwargs: pg_test_mod_args, ) -testprep_targets += delay_execution +test_install_libs += delay_execution tests += { 'name': 'delay_execution', diff --git a/src/test/modules/dummy_index_am/meson.build b/src/test/modules/dummy_index_am/meson.build index 4e02a34f18..86bbc641bc 100644 --- a/src/test/modules/dummy_index_am/meson.build +++ b/src/test/modules/dummy_index_am/meson.build @@ -1,7 +1,5 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -# FIXME: prevent install during main install, but not during test :/ - dummy_index_am_sources = files( 'dummy_index_am.c', ) @@ -14,14 +12,13 @@ endif dummy_index_am = shared_module('dummy_index_am', dummy_index_am_sources, - kwargs: pg_mod_args, + kwargs: pg_test_mod_args, ) -testprep_targets += dummy_index_am +test_install_libs += dummy_index_am -install_data( +test_install_data += files( 'dummy_index_am.control', 'dummy_index_am--1.0.sql', - kwargs: contrib_data_args, ) tests += { diff --git a/src/test/modules/dummy_seclabel/meson.build b/src/test/modules/dummy_seclabel/meson.build index 2a6a114b91..a804caf569 100644 --- a/src/test/modules/dummy_seclabel/meson.build +++ b/src/test/modules/dummy_seclabel/meson.build @@ -1,7 +1,5 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -# FIXME: prevent install during main install, but not during test :/ - dummy_seclabel_sources = files( 'dummy_seclabel.c', ) @@ -14,14 +12,13 @@ endif dummy_seclabel = shared_module('dummy_seclabel', dummy_seclabel_sources, - kwargs: pg_mod_args, + kwargs: pg_test_mod_args, ) -testprep_targets += dummy_seclabel +test_install_libs += dummy_seclabel -install_data( +test_install_data += files( 'dummy_seclabel.control', 'dummy_seclabel--1.0.sql', - kwargs: contrib_data_args, ) tests += { diff --git a/src/test/modules/plsample/meson.build b/src/test/modules/plsample/meson.build index 99acf8f658..44fa107595 100644 --- a/src/test/modules/plsample/meson.build +++ b/src/test/modules/plsample/meson.build @@ -1,7 +1,5 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -# FIXME: prevent install during main install, but not during test :/ - plsample_sources = files( 'plsample.c', ) @@ -14,16 +12,14 @@ endif plsample = shared_module('plsample', plsample_sources, - kwargs: pg_mod_args, + kwargs: pg_test_mod_args, ) -testprep_targets += plsample +test_install_libs += plsample -install_data( +test_install_data += files( 'plsample.control', 'plsample--1.0.sql', - kwargs: contrib_data_args, ) - tests += { 'name': 'plsample', 'sd': meson.current_source_dir(), diff --git a/src/test/modules/spgist_name_ops/meson.build b/src/test/modules/spgist_name_ops/meson.build index 76405055c4..c8b7a6efb4 100644 --- a/src/test/modules/spgist_name_ops/meson.build +++ b/src/test/modules/spgist_name_ops/meson.build @@ -1,7 +1,5 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -# FIXME: prevent install during main install, but not during test :/ - spgist_name_ops_sources = files( 'spgist_name_ops.c', ) @@ -14,16 +12,14 @@ endif spgist_name_ops = shared_module('spgist_name_ops', spgist_name_ops_sources, - kwargs: pg_mod_args, + kwargs: pg_test_mod_args, ) -testprep_targets += spgist_name_ops +test_install_libs += spgist_name_ops -install_data( +test_install_data += files( 'spgist_name_ops.control', 'spgist_name_ops--1.0.sql', - kwargs: contrib_data_args, ) - tests += { 'name': 'spgist_name_ops', 'sd': meson.current_source_dir(), diff --git a/src/test/modules/ssl_passphrase_callback/meson.build b/src/test/modules/ssl_passphrase_callback/meson.build index de016b0280..c2a022b4f1 100644 --- a/src/test/modules/ssl_passphrase_callback/meson.build +++ b/src/test/modules/ssl_passphrase_callback/meson.build @@ -4,8 +4,6 @@ if not ssl.found() subdir_done() endif -# FIXME: prevent install during main install, but not during test :/ - ssl_passphrase_callback_sources = files( 'ssl_passphrase_func.c', ) @@ -18,11 +16,11 @@ endif ssl_passphrase_callback = shared_module('ssl_passphrase_func', ssl_passphrase_callback_sources, - kwargs: pg_mod_args + { + kwargs: pg_test_mod_args + { 'dependencies': [ssl, pg_mod_args['dependencies']], }, ) -testprep_targets += ssl_passphrase_callback +test_install_libs += ssl_passphrase_callback # Targets to generate or remove the ssl certificate and key. Need to be copied # to the source afterwards. Normally not needed. diff --git a/src/test/modules/test_bloomfilter/meson.build b/src/test/modules/test_bloomfilter/meson.build index 924966bb1e..5353958eeb 100644 --- a/src/test/modules/test_bloomfilter/meson.build +++ b/src/test/modules/test_bloomfilter/meson.build @@ -1,7 +1,5 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -# FIXME: prevent install during main install, but not during test :/ - test_bloomfilter_sources = files( 'test_bloomfilter.c', ) @@ -14,14 +12,13 @@ endif test_bloomfilter = shared_module('test_bloomfilter', test_bloomfilter_sources, - kwargs: pg_mod_args, + kwargs: pg_test_mod_args, ) -testprep_targets += test_bloomfilter +test_install_libs += test_bloomfilter -install_data( +test_install_data += files( 'test_bloomfilter.control', 'test_bloomfilter--1.0.sql', - kwargs: contrib_data_args, ) tests += { diff --git a/src/test/modules/test_copy_callbacks/meson.build b/src/test/modules/test_copy_callbacks/meson.build index 20b052ec86..849b58e7c4 100644 --- a/src/test/modules/test_copy_callbacks/meson.build +++ b/src/test/modules/test_copy_callbacks/meson.build @@ -1,7 +1,5 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -# FIXME: prevent install during main install, but not during test :/ - test_copy_callbacks_sources = files( 'test_copy_callbacks.c', ) @@ -14,14 +12,13 @@ endif test_copy_callbacks = shared_module('test_copy_callbacks', test_copy_callbacks_sources, - kwargs: pg_mod_args, + kwargs: pg_test_mod_args, ) -testprep_targets += test_copy_callbacks +test_install_libs += test_copy_callbacks -install_data( +test_install_data += files( 'test_copy_callbacks.control', 'test_copy_callbacks--1.0.sql', - kwargs: contrib_data_args, ) tests += { diff --git a/src/test/modules/test_custom_rmgrs/meson.build b/src/test/modules/test_custom_rmgrs/meson.build index 3e887af4bc..a826efe1af 100644 --- a/src/test/modules/test_custom_rmgrs/meson.build +++ b/src/test/modules/test_custom_rmgrs/meson.build @@ -1,7 +1,5 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -# FIXME: prevent install during main install, but not during test :/ - test_custom_rmgrs_sources = files( 'test_custom_rmgrs.c', ) @@ -14,14 +12,13 @@ endif test_custom_rmgrs = shared_module('test_custom_rmgrs', test_custom_rmgrs_sources, - kwargs: pg_mod_args, + kwargs: pg_test_mod_args, ) -testprep_targets += test_custom_rmgrs +test_install_libs += test_custom_rmgrs -install_data( +test_install_data += files( 'test_custom_rmgrs.control', 'test_custom_rmgrs--1.0.sql', - kwargs: contrib_data_args, ) tests += { diff --git a/src/test/modules/test_ddl_deparse/meson.build b/src/test/modules/test_ddl_deparse/meson.build index f23e246aca..dfd31df124 100644 --- a/src/test/modules/test_ddl_deparse/meson.build +++ b/src/test/modules/test_ddl_deparse/meson.build @@ -1,7 +1,5 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -# FIXME: prevent install during main install, but not during test :/ - test_ddl_deparse_sources = files( 'test_ddl_deparse.c', ) @@ -14,14 +12,13 @@ endif test_ddl_deparse = shared_module('test_ddl_deparse', test_ddl_deparse_sources, - kwargs: pg_mod_args, + kwargs: pg_test_mod_args, ) -testprep_targets += test_ddl_deparse +test_install_libs += test_ddl_deparse -install_data( +test_install_data += files( 'test_ddl_deparse.control', 'test_ddl_deparse--1.0.sql', - kwargs: contrib_data_args, ) tests += { diff --git a/src/test/modules/test_extensions/meson.build b/src/test/modules/test_extensions/meson.build index 45597ddc23..c3af3e1721 100644 --- a/src/test/modules/test_extensions/meson.build +++ b/src/test/modules/test_extensions/meson.build @@ -1,7 +1,6 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -# FIXME: prevent install during main install, but not during test :/ -install_data( +test_install_data += files( 'test_ext1--1.0.sql', 'test_ext1.control', 'test_ext2--1.0.sql', @@ -31,7 +30,6 @@ install_data( 'test_ext_evttrig--1.0--2.0.sql', 'test_ext_evttrig--1.0.sql', 'test_ext_evttrig.control', - kwargs: contrib_data_args, ) tests += { diff --git a/src/test/modules/test_ginpostinglist/meson.build b/src/test/modules/test_ginpostinglist/meson.build index 3afb7b1b7e..338296267c 100644 --- a/src/test/modules/test_ginpostinglist/meson.build +++ b/src/test/modules/test_ginpostinglist/meson.build @@ -1,7 +1,5 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -# FIXME: prevent install during main install, but not during test :/ - test_ginpostinglist_sources = files( 'test_ginpostinglist.c', ) @@ -14,14 +12,13 @@ endif test_ginpostinglist = shared_module('test_ginpostinglist', test_ginpostinglist_sources, - kwargs: pg_mod_args, + kwargs: pg_test_mod_args, ) -testprep_targets += test_ginpostinglist +test_install_libs += test_ginpostinglist -install_data( +test_install_data += files( 'test_ginpostinglist.control', 'test_ginpostinglist--1.0.sql', - kwargs: contrib_data_args, ) tests += { diff --git a/src/test/modules/test_integerset/meson.build b/src/test/modules/test_integerset/meson.build index 7223435a27..7aa7bf8001 100644 --- a/src/test/modules/test_integerset/meson.build +++ b/src/test/modules/test_integerset/meson.build @@ -1,7 +1,5 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -# FIXME: prevent install during main install, but not during test :/ - test_integerset_sources = files( 'test_integerset.c', ) @@ -14,14 +12,13 @@ endif test_integerset = shared_module('test_integerset', test_integerset_sources, - kwargs: pg_mod_args, + kwargs: pg_test_mod_args, ) -testprep_targets += test_integerset +test_install_libs += test_integerset -install_data( +test_install_data += files( 'test_integerset.control', 'test_integerset--1.0.sql', - kwargs: contrib_data_args, ) tests += { diff --git a/src/test/modules/test_lfind/meson.build b/src/test/modules/test_lfind/meson.build index 7992535975..646ab4ab00 100644 --- a/src/test/modules/test_lfind/meson.build +++ b/src/test/modules/test_lfind/meson.build @@ -1,7 +1,5 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -# FIXME: prevent install during main install, but not during test :/ - test_lfind_sources = files( 'test_lfind.c', ) @@ -14,14 +12,13 @@ endif test_lfind = shared_module('test_lfind', test_lfind_sources, - kwargs: pg_mod_args, + kwargs: pg_test_mod_args, ) -testprep_targets += test_lfind +test_install_libs += test_lfind -install_data( +test_install_data += files( 'test_lfind.control', 'test_lfind--1.0.sql', - kwargs: contrib_data_args, ) tests += { diff --git a/src/test/modules/test_oat_hooks/meson.build b/src/test/modules/test_oat_hooks/meson.build index 054dda3646..9c69a1eaf9 100644 --- a/src/test/modules/test_oat_hooks/meson.build +++ b/src/test/modules/test_oat_hooks/meson.build @@ -1,7 +1,5 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -# FIXME: prevent install during main install, but not during test :/ - test_oat_hooks_sources = files( 'test_oat_hooks.c', ) @@ -14,9 +12,9 @@ endif test_oat_hooks = shared_module('test_oat_hooks', test_oat_hooks_sources, - kwargs: pg_mod_args, + kwargs: pg_test_mod_args, ) -testprep_targets += test_oat_hooks +test_install_libs += test_oat_hooks tests += { 'name': 'test_oat_hooks', diff --git a/src/test/modules/test_parser/meson.build b/src/test/modules/test_parser/meson.build index 9cd664e81c..0dcbd788c1 100644 --- a/src/test/modules/test_parser/meson.build +++ b/src/test/modules/test_parser/meson.build @@ -1,7 +1,5 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -# FIXME: prevent install during main install, but not during test :/ - test_parser_sources = files( 'test_parser.c', ) @@ -14,14 +12,13 @@ endif test_parser = shared_module('test_parser', test_parser_sources, - kwargs: pg_mod_args, + kwargs: pg_test_mod_args, ) -testprep_targets += test_parser +test_install_libs += test_parser -install_data( +test_install_data += files( 'test_parser.control', 'test_parser--1.0.sql', - kwargs: contrib_data_args, ) tests += { diff --git a/src/test/modules/test_pg_db_role_setting/meson.build b/src/test/modules/test_pg_db_role_setting/meson.build index fa0e691d79..8b5881735c 100644 --- a/src/test/modules/test_pg_db_role_setting/meson.build +++ b/src/test/modules/test_pg_db_role_setting/meson.build @@ -1,7 +1,5 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -# FIXME: prevent install during main install, but not during test :/ - test_pg_db_role_setting_sources = files( 'test_pg_db_role_setting.c', ) @@ -14,14 +12,13 @@ endif test_pg_db_role_setting = shared_module('test_pg_db_role_setting', test_pg_db_role_setting_sources, - kwargs: pg_mod_args, + kwargs: pg_test_mod_args, ) -testprep_targets += test_pg_db_role_setting +test_install_libs += test_pg_db_role_setting -install_data( +test_install_data += files( 'test_pg_db_role_setting.control', 'test_pg_db_role_setting--1.0.sql', - kwargs: contrib_data_args, ) tests += { diff --git a/src/test/modules/test_pg_dump/meson.build b/src/test/modules/test_pg_dump/meson.build index b90046b79b..8f61050c29 100644 --- a/src/test/modules/test_pg_dump/meson.build +++ b/src/test/modules/test_pg_dump/meson.build @@ -1,10 +1,8 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -# FIXME: prevent install during main install, but not during test :/ -install_data( +test_install_data += files( 'test_pg_dump.control', 'test_pg_dump--1.0.sql', - kwargs: contrib_data_args, ) tests += { diff --git a/src/test/modules/test_predtest/meson.build b/src/test/modules/test_predtest/meson.build index 7f5e523449..5ec87269b2 100644 --- a/src/test/modules/test_predtest/meson.build +++ b/src/test/modules/test_predtest/meson.build @@ -1,7 +1,5 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -# FIXME: prevent install during main install, but not during test :/ - test_predtest_sources = files( 'test_predtest.c', ) @@ -14,14 +12,13 @@ endif test_predtest = shared_module('test_predtest', test_predtest_sources, - kwargs: pg_mod_args, + kwargs: pg_test_mod_args, ) -testprep_targets += test_predtest +test_install_libs += test_predtest -install_data( +test_install_data += files( 'test_predtest.control', 'test_predtest--1.0.sql', - kwargs: contrib_data_args, ) tests += { diff --git a/src/test/modules/test_rbtree/meson.build b/src/test/modules/test_rbtree/meson.build index 3e42e4caad..47a921da90 100644 --- a/src/test/modules/test_rbtree/meson.build +++ b/src/test/modules/test_rbtree/meson.build @@ -1,7 +1,5 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -# FIXME: prevent install during main install, but not during test :/ - test_rbtree_sources = files( 'test_rbtree.c', ) @@ -14,14 +12,13 @@ endif test_rbtree = shared_module('test_rbtree', test_rbtree_sources, - kwargs: pg_mod_args, + kwargs: pg_test_mod_args, ) -testprep_targets += test_rbtree +test_install_libs += test_rbtree -install_data( +test_install_data += files( 'test_rbtree.control', 'test_rbtree--1.0.sql', - kwargs: contrib_data_args, ) tests += { diff --git a/src/test/modules/test_regex/meson.build b/src/test/modules/test_regex/meson.build index 486d586dc8..bb0557078b 100644 --- a/src/test/modules/test_regex/meson.build +++ b/src/test/modules/test_regex/meson.build @@ -1,7 +1,5 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -# FIXME: prevent install during main install, but not during test :/ - test_regex_sources = files( 'test_regex.c', ) @@ -14,14 +12,13 @@ endif test_regex = shared_module('test_regex', test_regex_sources, - kwargs: pg_mod_args, + kwargs: pg_test_mod_args, ) -testprep_targets += test_regex +test_install_libs += test_regex -install_data( +test_install_data += files( 'test_regex.control', 'test_regex--1.0.sql', - kwargs: contrib_data_args, ) tests += { diff --git a/src/test/modules/test_rls_hooks/meson.build b/src/test/modules/test_rls_hooks/meson.build index 7adf23ed77..382e9933e6 100644 --- a/src/test/modules/test_rls_hooks/meson.build +++ b/src/test/modules/test_rls_hooks/meson.build @@ -1,7 +1,5 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -# FIXME: prevent install during main install, but not during test :/ - test_rls_hooks_sources = files( 'test_rls_hooks.c', ) @@ -14,9 +12,9 @@ endif test_rls_hooks = shared_module('test_rls_hooks', test_rls_hooks_sources, - kwargs: pg_mod_args, + kwargs: pg_test_mod_args, ) -testprep_targets += test_rls_hooks +test_install_libs += test_rls_hooks tests += { 'name': 'test_rls_hooks', diff --git a/src/test/modules/test_shm_mq/meson.build b/src/test/modules/test_shm_mq/meson.build index 52b3c5b58c..f24a2ba7f7 100644 --- a/src/test/modules/test_shm_mq/meson.build +++ b/src/test/modules/test_shm_mq/meson.build @@ -1,7 +1,5 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -# FIXME: prevent install during main install, but not during test :/ - test_shm_mq_sources = files( 'setup.c', 'test.c', @@ -16,14 +14,13 @@ endif test_shm_mq = shared_module('test_shm_mq', test_shm_mq_sources, - kwargs: pg_mod_args, + kwargs: pg_test_mod_args, ) -testprep_targets += test_shm_mq +test_install_libs += test_shm_mq -install_data( +test_install_data += files( 'test_shm_mq.control', 'test_shm_mq--1.0.sql', - kwargs: contrib_data_args, ) tests += { diff --git a/src/test/modules/test_slru/meson.build b/src/test/modules/test_slru/meson.build index 707897e6b0..ecf64ed4a9 100644 --- a/src/test/modules/test_slru/meson.build +++ b/src/test/modules/test_slru/meson.build @@ -1,7 +1,5 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -# FIXME: prevent install during main install, but not during test :/ - test_slru_sources = files( 'test_slru.c', ) @@ -14,14 +12,13 @@ endif test_slru = shared_module('test_slru', test_slru_sources, - kwargs: pg_mod_args, + kwargs: pg_test_mod_args, ) -testprep_targets += test_slru +test_install_libs += test_slru -install_data( +test_install_data += files( 'test_slru.control', 'test_slru--1.0.sql', - kwargs: contrib_data_args, ) tests += { diff --git a/src/test/modules/worker_spi/meson.build b/src/test/modules/worker_spi/meson.build index f6ffe947eb..a8cdfdeb36 100644 --- a/src/test/modules/worker_spi/meson.build +++ b/src/test/modules/worker_spi/meson.build @@ -1,7 +1,5 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -# FIXME: prevent install during main install, but not during test :/ - test_worker_spi_sources = files( 'worker_spi.c', ) @@ -14,14 +12,13 @@ endif test_worker_spi = shared_module('worker_spi', test_worker_spi_sources, - kwargs: pg_mod_args, + kwargs: pg_test_mod_args, ) -testprep_targets += test_worker_spi +test_install_libs += test_worker_spi -install_data( +test_install_data += files( 'worker_spi.control', 'worker_spi--1.0.sql', - kwargs: contrib_data_args, ) tests += { diff --git a/src/test/regress/meson.build b/src/test/regress/meson.build index 6a0584d415..a045c00c1f 100644 --- a/src/test/regress/meson.build +++ b/src/test/regress/meson.build @@ -39,11 +39,9 @@ bin_targets += pg_regress regress_module = shared_module('regress', ['regress.c'], - kwargs: pg_mod_args + { - 'install': false, - }, + kwargs: pg_test_mod_args, ) -testprep_targets += regress_module +test_install_libs += regress_module # Get some extra C modules from contrib/spi but mark them as not to be # installed. @@ -51,20 +49,16 @@ testprep_targets += regress_module autoinc_regress = shared_module('autoinc', ['../../../contrib/spi/autoinc.c'], - kwargs: pg_mod_args + { - 'install': false, - }, + kwargs: pg_test_mod_args, ) -testprep_targets += autoinc_regress +test_install_libs += autoinc_regress refint_regress = shared_module('refint', ['../../../contrib/spi/refint.c'], c_args: refint_cflags, - kwargs: pg_mod_args + { - 'install': false, - }, + kwargs: pg_test_mod_args, ) -testprep_targets += refint_regress +test_install_libs += refint_regress tests += { diff --git a/src/tools/install_test_files b/src/tools/install_test_files new file mode 100644 index 0000000000..e6ecdae10f --- /dev/null +++ b/src/tools/install_test_files @@ -0,0 +1,28 @@ +#!/usr/bin/env python3 + +# Helper to install additional files into the temporary installation +# for tests, beyond those that are installed by meson/ninja install. + +import argparse +import shutil +import os + +parser = argparse.ArgumentParser() + +parser.add_argument('--datadir', type=str) +parser.add_argument('--libdir', type=str) +parser.add_argument('--install-data', type=str, nargs='*') +parser.add_argument('--install-libs', type=str, nargs='*') + +args = parser.parse_args() + + +def copy_files(src_list: list, dest: str): + os.makedirs(dest, exist_ok=True) + + for src in src_list: + shutil.copy2(src, dest) + + +copy_files(args.install_data, args.datadir) +copy_files(args.install_libs, args.libdir) -- 2.30.2