Skip to content

Commit

Permalink
ExternalProgram: add cmd_array to complete the offfering
Browse files Browse the repository at this point in the history
In case of python and especially in the case of pyInstaller
where the python command is meson.exe runpython, it should
not be full path to be used but cmd_array.

Fixing #13834
  • Loading branch information
dabrain34 committed Nov 4, 2024
1 parent 1feb771 commit 20af42f
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 1 deletion.
5 changes: 5 additions & 0 deletions docs/yaml/objects/external_program.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -56,3 +56,8 @@ methods:
```meson
run_command(find_program('foo'), 'arg1', 'arg2')
```
- name: cmd_array
returns: list[str]
description: Returns an array containing the command(s) for the program.
since: 1.7.0
16 changes: 15 additions & 1 deletion mesonbuild/interpreter/interpreterobjects.py
Original file line number Diff line number Diff line change
Expand Up @@ -618,7 +618,8 @@ def __init__(self, ep: _EXTPROG, interpreter: 'Interpreter') -> None:
self.methods.update({'found': self.found_method,
'path': self.path_method,
'version': self.version_method,
'full_path': self.full_path_method})
'full_path': self.full_path_method,
'cmd_array': self.cmd_array_method})

@noPosargs
@noKwargs
Expand All @@ -645,6 +646,19 @@ def _full_path(self) -> str:
assert path is not None
return path

@noPosargs
@noKwargs
@FeatureNew('ExternalProgram.cmd_array', '1.6.1')
def cmd_array_method(self, args: T.List[TYPE_var], kwargs: TYPE_kwargs) -> T.List[str]:
return self._cmd_array()

def _cmd_array(self) -> T.List[str]:
if not self.found():
raise InterpreterException('Unable to get the path of a not-found external program')
cmd = self.held_object.get_command()
assert cmd is not None
return cmd

@noPosargs
@noKwargs
@FeatureNew('ExternalProgram.version', '0.62.0')
Expand Down

0 comments on commit 20af42f

Please sign in to comment.