Currently some heuristics are used to locate the build dir, if the
MESON_BUILD_ROOT environment variable is not set. These are not
entirely accurate, however, especially if the developer is using
nested sub-dirs under $PWD/build/...
Since the introduction of the 'run' script, we can ensure any
direct execution of the tests will have MESON_BUILD_ROOT set.
Meanwhile when meson runs the test it will also have this env
set. The only gap is when running pre-caching, and that is easily
fixed to set MESON_BUILD_ROOT.
It can thus be assumed that MESON_BUILD_ROOT will always be set
in any supported execution scenario, which allows the heuristics
to be removed.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Message-ID: <
20260310114756.146083-3-berrange@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
teststamp = testname + '.tstamp'
test_precache_env = environment()
test_precache_env.set('QEMU_TEST_PRECACHE', meson.current_build_dir() / teststamp)
+ test_precache_env.set('MESON_BUILD_ROOT', meson.project_build_root())
test_precache_env.set('PYTHONPATH', meson.project_source_root() / 'python:' +
meson.current_source_dir())
precache = custom_target('func-precache-' + testname,
root = os.getenv('MESON_BUILD_ROOT')
if root is not None:
return Path(root)
- # Makefile.mtest only exists in build dir, so if it is available, use CWD
- if os.path.exists('Makefile.mtest'):
- return Path(os.getcwd())
- root = os.path.join(_source_dir(), 'build')
- if os.path.exists(root):
- return Path(root)
-
- raise Exception("Cannot identify build dir, set MESON_BUILD_ROOT")
+ raise Exception("Missing MESON_BUILD_ROOT environment variable. " +
+ "Please use the '<BUILD-DIR>/run' script if invoking " +
+ "directly instead of via make/meson")
BUILD_DIR = _build_dir()