diff options
| author | Xavier Claessens <xclaessens@netflix.com> | 2025-10-15 09:36:08 -0400 |
|---|---|---|
| committer | Xavier Claessens <xclaesse@gmail.com> | 2025-10-15 12:15:39 -0400 |
| commit | 80914bcf03947c02388df0067a9c3486d694865c (patch) | |
| tree | 657375b83bfd3fdfafdad4960dc25c56eb0adc07 /mesonbuild | |
| parent | 6abb678c20b1ae92e534b597b072c32a276002e6 (diff) | |
| download | meson-80914bcf03947c02388df0067a9c3486d694865c.tar.gz | |
Add support for LocalProgram to add_*_script()
Diffstat (limited to 'mesonbuild')
| -rw-r--r-- | mesonbuild/interpreter/mesonmain.py | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/mesonbuild/interpreter/mesonmain.py b/mesonbuild/interpreter/mesonmain.py index a5590320a..3afeb8647 100644 --- a/mesonbuild/interpreter/mesonmain.py +++ b/mesonbuild/interpreter/mesonmain.py @@ -57,21 +57,23 @@ class MesonMain(MesonInterpreterObject): self.interpreter = interpreter def _find_source_script( - self, name: str, prog: T.Union[str, mesonlib.File, build.Executable, ExternalProgram], - args: T.List[str]) -> 'ExecutableSerialisation': + self, name: str, prog: T.Union[str, mesonlib.File, build.Executable, ExternalProgram, build.LocalProgram], + args: T.List[str], allow_built_program: bool = False) -> 'ExecutableSerialisation': largs: T.List[T.Union[str, build.Executable, ExternalProgram, build.LocalProgram]] = [] if isinstance(prog, (build.Executable, ExternalProgram)): FeatureNew.single_use(f'Passing executable/found program object to script parameter of {name}', '0.55.0', self.subproject, location=self.current_node) - largs.append(prog) - else: + elif isinstance(prog, (str, mesonlib.File)): if isinstance(prog, mesonlib.File): FeatureNew.single_use(f'Passing file object to script parameter of {name}', '0.57.0', self.subproject, location=self.current_node) - found = self.interpreter.find_program_impl([prog]) - largs.append(found) + prog = self.interpreter.find_program_impl([prog]) + + if isinstance(prog, build.LocalProgram) and not allow_built_program and not prog.run_program(): + self.interpreter._compiled_exe_error(prog) + largs.append(prog) largs.extend(args) es = self.interpreter.backend.get_executable_serialisation(largs, verbose=True) es.subproject = self.interpreter.subproject @@ -116,7 +118,7 @@ class MesonMain(MesonInterpreterObject): @typed_pos_args( 'meson.add_install_script', - (str, mesonlib.File, build.Executable, ExternalProgram), + (str, mesonlib.File, build.Executable, ExternalProgram, build.LocalProgram), varargs=(str, mesonlib.File, build.BuildTarget, build.CustomTarget, build.CustomTargetIndex, ExternalProgram) ) @typed_kwargs( @@ -132,7 +134,7 @@ class MesonMain(MesonInterpreterObject): T.List[T.Union[str, mesonlib.File, build.BuildTargetTypes, ExternalProgram]]], kwargs: 'AddInstallScriptKW') -> None: script_args = self._process_script_args('add_install_script', args[1]) - script = self._find_source_script('add_install_script', args[0], script_args) + script = self._find_source_script('add_install_script', args[0], script_args, allow_built_program=True) script.skip_if_destdir = kwargs['skip_if_destdir'] script.tag = kwargs['install_tag'] script.dry_run = kwargs['dry_run'] @@ -147,7 +149,7 @@ class MesonMain(MesonInterpreterObject): @InterpreterObject.method('add_postconf_script') def add_postconf_script_method( self, - args: T.Tuple[T.Union[str, mesonlib.File, ExternalProgram], + args: T.Tuple[T.Union[str, mesonlib.File, ExternalProgram, build.LocalProgram], T.List[T.Union[str, mesonlib.File, ExternalProgram]]], kwargs: 'TYPE_kwargs') -> None: script_args = self._process_script_args('add_postconf_script', args[1]) @@ -164,7 +166,7 @@ class MesonMain(MesonInterpreterObject): @InterpreterObject.method('add_dist_script') def add_dist_script_method( self, - args: T.Tuple[T.Union[str, mesonlib.File, ExternalProgram], + args: T.Tuple[T.Union[str, mesonlib.File, ExternalProgram, build.LocalProgram], T.List[T.Union[str, mesonlib.File, ExternalProgram]]], kwargs: 'TYPE_kwargs') -> None: if args[1]: |
