diff --git a/meta-arm/lib/fvp/runner.py b/meta-arm/lib/fvp/runner.py index 4f5f88ca..7ca3673d 100644 --- a/meta-arm/lib/fvp/runner.py +++ b/meta-arm/lib/fvp/runner.py @@ -99,11 +99,16 @@ class FVPRunner: if name in os.environ: env[name] = os.environ[name] + # Allow filepath to be relative to fvp configuration file + cwd = os.path.dirname(fvpconf) + self._logger.debug(f"FVP call will be executed in working directory: {cwd}") + self._logger.debug(f"Constructed FVP call: {shlex_join(cli)}") self._fvp_process = subprocess.Popen( cli, stdin=subprocess.DEVNULL, stdout=stdout, stderr=subprocess.STDOUT, - env=env) + env=env, + cwd=cwd) def stop(self): if self._fvp_process: diff --git a/meta-arm/lib/oeqa/selftest/cases/runfvp.py b/meta-arm/lib/oeqa/selftest/cases/runfvp.py index 2d2cdc80..d60aa3c4 100644 --- a/meta-arm/lib/oeqa/selftest/cases/runfvp.py +++ b/meta-arm/lib/oeqa/selftest/cases/runfvp.py @@ -102,6 +102,7 @@ class RunnerTests(OESelftestTestCase): with tempfile.NamedTemporaryFile('w') as fvpconf: json.dump(config, fvpconf) fvpconf.flush() + cwd_mock = os.path.dirname(fvpconf.name) fvp.start(fvpconf.name) m.assert_called_once_with(['/usr/bin/FVP_Binary', @@ -112,7 +113,8 @@ class RunnerTests(OESelftestTestCase): stdin=unittest.mock.ANY, stdout=unittest.mock.ANY, stderr=unittest.mock.ANY, - env={"FOO":"BAR", "PATH": "/path-42:/usr/sbin:/usr/bin:/sbin:/bin"}) + env={"FOO":"BAR", "PATH": "/path-42:/usr/sbin:/usr/bin:/sbin:/bin"}, + cwd=cwd_mock) @unittest.mock.patch.dict(os.environ, {"DISPLAY": ":42", "WAYLAND_DISPLAY": "wayland-42", "PATH": "/path-42:/usr/sbin:/usr/bin:/sbin:/bin"}) def test_env_passthrough(self): @@ -132,10 +134,12 @@ class RunnerTests(OESelftestTestCase): with tempfile.NamedTemporaryFile('w') as fvpconf: json.dump(config, fvpconf) fvpconf.flush() + cwd_mock = os.path.dirname(fvpconf.name) fvp.start(fvpconf.name) m.assert_called_once_with(['/usr/bin/FVP_Binary'], stdin=unittest.mock.ANY, stdout=unittest.mock.ANY, stderr=unittest.mock.ANY, - env={"DISPLAY":":42", "FOO": "BAR", "WAYLAND_DISPLAY": "wayland-42", "PATH": "/path-42:/usr/sbin:/usr/bin:/sbin:/bin"}) + env={"DISPLAY":":42", "FOO": "BAR", "WAYLAND_DISPLAY": "wayland-42", "PATH": "/path-42:/usr/sbin:/usr/bin:/sbin:/bin"}, + cwd=cwd_mock)