blob: b17c9ac1aab6769215e758490b87951a3dd738f4 [file] [log] [blame]
#!/usr/bin/env python3
# Copyright 2021 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Wrapper for platform2_test for meson packages.
This mostly sets some environment variables that can't easily be set
in meson.eclass.
"""
import os
from pathlib import Path
import sys
def translate_path(sysroot, path):
"""Remove the SYSROOT prefix from paths that have it"""
if path.startswith(sysroot):
return path[len(sysroot):]
return path
def append_env_path(real_argv, sysroot, env_name):
"""Translate the path in |env_name| and add it to |real_argv|"""
if env_name in os.environ:
translated_path = translate_path(sysroot, os.environ[env_name])
real_argv += ['--env', f'{env_name}={translated_path}']
def main(argv):
DIR = Path(__file__).resolve().parent
real_argv = [DIR / 'platform2_test.py']
sysroot = os.environ['SYSROOT']
real_argv += ['--sysroot', sysroot]
# MALLOC_PERTURB_ is used by meson to increase test reproducibility.
if 'MALLOC_PERTURB_' in os.environ:
real_argv += ['--env', f'MALLOC_PERTURB_={os.environ["MALLOC_PERTURB_"]}']
# Several meson packages pass the path to the build or source
# directory into their tests using an environment variable so they
# can read data files or execute other test programs. These paths
# will be from the perspective of the cros chroot, not from the
# build sysroot that the test is actually going to run from. We
# can translate these paths by just stripping the ${SYSROOT}
# prefix from the start.
#
# Unfortunately there doesn't seem to be any standard approach to
# this, so we just have to look at all the env variables we have
# observed being used in this way.
# Used by dev-libs/wayland
append_env_path(real_argv, sysroot, 'TEST_BUILD_DIR')
append_env_path(real_argv, sysroot, 'TEST_SRC_DIR')
# Used by media-libs/harfbuzz, dev-libs/json-glib, app-arch/gcab,
# dev-libs/glib
append_env_path(real_argv, sysroot, 'G_TEST_BUILDDIR')
append_env_path(real_argv, sysroot, 'G_TEST_SRCDIR')
# Used by x11-libs/libxkbcommon
append_env_path(real_argv, sysroot, 'top_builddir')
append_env_path(real_argv, sysroot, 'top_srcdir')
real_argv += ['--']
real_argv += argv
print(f'Running {real_argv}', flush=True)
os.execv(real_argv[0], real_argv)
if __name__ == '__main__':
sys.exit(main(sys.argv[1:]))