testprep_targets += test_install_libs
+# command to install files used for tests, which aren't installed by default
+install_test_files = files('src/tools/install_test_files')
+install_test_files_args = [
+ install_test_files,
+ '--prefix', dir_prefix,
+ '--install', contrib_data_dir, test_install_data,
+ '--install', dir_lib_pkg, test_install_libs,
+]
+
+# Target installing files required for installcheck of various modules
+run_target('install-test-files',
+ command: [python] + install_test_files_args,
+ depends: testprep_targets,
+)
+
+
# 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,
# e.g. because of a #include "file", which always will search in the current
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,
- ],
+ python,
+ args: install_test_files_args + ['--destdir', test_install_destdir],
priority: setup_tests_priority,
is_parallel: false,
suite: ['setup'])
import argparse
import shutil
import os
+from pathlib import PurePath
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='*')
+parser.add_argument('--destdir', type=str, default=os.environ.get('DESTDIR', None))
+parser.add_argument('--prefix', type=str)
+parser.add_argument('--install', type=str, nargs='+', action='append')
args = parser.parse_args()
+def copy_files(prefix: str, destdir: str, targetdir: str, src_list: list):
+ if not os.path.isabs(targetdir):
+ targetdir = os.path.join(prefix, targetdir)
-def copy_files(src_list: list, dest: str):
- os.makedirs(dest, exist_ok=True)
+ if destdir is not None:
+ # copy of meson's logic for joining destdir and install paths
+ targetdir = str(PurePath(destdir, *PurePath(targetdir).parts[1:]))
- for src in src_list:
- shutil.copy2(src, dest)
+ os.makedirs(targetdir, exist_ok=True)
+ for src in src_list:
+ shutil.copy2(src, targetdir)
-copy_files(args.install_data, args.datadir)
-copy_files(args.install_libs, args.libdir)
+for installs in args.install:
+ copy_files(args.prefix, args.destdir, installs[0], installs[1:])