blob: 2ab05729fb5f671107d79e015a5667c9373d57a2 [file] [log] [blame]
#!/usr/bin/env python3
# Copyright 2021 The ChromiumOS Authors
# 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"]
real_argv += [
"--strategy=unprivileged",
"--user=root",
"--bind-mount-dev",
"--quiet",
]
sysroot = os.environ["SYSROOT"]
real_argv += ["--sysroot", sysroot]
# 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
os.execv(real_argv[0], real_argv)
if __name__ == "__main__":
sys.exit(main(sys.argv[1:]))