summaryrefslogtreecommitdiff
path: root/mesonbuild/compilers
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2023-11-06 08:07:07 -0500
committerXavier Claessens <xclaesse@gmail.com>2024-03-15 11:38:54 -0400
commit6b569527bca9354be77769f91a0607cfd692d861 (patch)
tree27496fdf3fff8ad902557e72d393e04501156ad9 /mesonbuild/compilers
parentb1358ef61f12f86b900bfa8071ae24c8d3468845 (diff)
downloadmeson-6b569527bca9354be77769f91a0607cfd692d861.tar.gz
compilers: Allow setting env and workdir for run checks
This is not exposed in API, but will be used internally.
Diffstat (limited to 'mesonbuild/compilers')
-rw-r--r--mesonbuild/compilers/compilers.py6
-rw-r--r--mesonbuild/compilers/d.py6
2 files changed, 8 insertions, 4 deletions
diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py
index 6b598622c..474c87eb5 100644
--- a/mesonbuild/compilers/compilers.py
+++ b/mesonbuild/compilers/compilers.py
@@ -625,7 +625,9 @@ class Compiler(HoldableObject, metaclass=abc.ABCMeta):
def run(self, code: 'mesonlib.FileOrString', env: 'Environment',
extra_args: T.Union[T.List[str], T.Callable[[CompileCheckMode], T.List[str]], None] = None,
- dependencies: T.Optional[T.List['Dependency']] = None) -> RunResult:
+ dependencies: T.Optional[T.List['Dependency']] = None,
+ run_env: T.Optional[T.Dict[str, str]] = None,
+ run_cwd: T.Optional[str] = None) -> RunResult:
need_exe_wrapper = env.need_exe_wrapper(self.for_machine)
if need_exe_wrapper and self.exe_wrapper is None:
raise CrossNoRunException('Can not run test applications in this cross environment.')
@@ -638,7 +640,7 @@ class Compiler(HoldableObject, metaclass=abc.ABCMeta):
else:
cmdlist = [p.output_name]
try:
- pe, so, se = mesonlib.Popen_safe(cmdlist)
+ pe, so, se = mesonlib.Popen_safe(cmdlist, env=run_env, cwd=run_cwd)
except Exception as e:
mlog.debug(f'Could not run: {cmdlist} (error: {e})\n')
return RunResult(False)
diff --git a/mesonbuild/compilers/d.py b/mesonbuild/compilers/d.py
index 0ebeef4be..8425ae22d 100644
--- a/mesonbuild/compilers/d.py
+++ b/mesonbuild/compilers/d.py
@@ -572,9 +572,11 @@ class DCompiler(Compiler):
def run(self, code: 'mesonlib.FileOrString', env: 'Environment',
extra_args: T.Union[T.List[str], T.Callable[[CompileCheckMode], T.List[str]], None] = None,
- dependencies: T.Optional[T.List['Dependency']] = None) -> compilers.RunResult:
+ dependencies: T.Optional[T.List['Dependency']] = None,
+ run_env: T.Optional[T.Dict[str, str]] = None,
+ run_cwd: T.Optional[str] = None) -> compilers.RunResult:
extra_args = self._get_compile_extra_args(extra_args)
- return super().run(code, env, extra_args, dependencies)
+ return super().run(code, env, extra_args, dependencies, run_env, run_cwd)
def sizeof(self, typename: str, prefix: str, env: 'Environment', *,
extra_args: T.Union[None, T.List[str], T.Callable[[CompileCheckMode], T.List[str]]] = None,