@@ -57,21 +57,23 @@ def __init__(self, build: 'build.Build', interpreter: 'Interpreter'):
5757 self .interpreter = interpreter
5858
5959 def _find_source_script (
60- self , name : str , prog : T .Union [str , mesonlib .File , build .Executable , ExternalProgram ],
61- args : T .List [str ]) -> 'ExecutableSerialisation' :
60+ self , name : str , prog : T .Union [str , mesonlib .File , build .Executable , ExternalProgram , build . LocalProgram ],
61+ args : T .List [str ], allow_built_program : bool = False ) -> 'ExecutableSerialisation' :
6262 largs : T .List [T .Union [str , build .Executable , ExternalProgram , build .LocalProgram ]] = []
6363
6464 if isinstance (prog , (build .Executable , ExternalProgram )):
6565 FeatureNew .single_use (f'Passing executable/found program object to script parameter of { name } ' ,
6666 '0.55.0' , self .subproject , location = self .current_node )
67- largs .append (prog )
68- else :
67+ elif isinstance (prog , (str , mesonlib .File )):
6968 if isinstance (prog , mesonlib .File ):
7069 FeatureNew .single_use (f'Passing file object to script parameter of { name } ' ,
7170 '0.57.0' , self .subproject , location = self .current_node )
72- found = self .interpreter .find_program_impl ([prog ])
73- largs .append (found )
71+ prog = self .interpreter .find_program_impl ([prog ])
72+
73+ if isinstance (prog , build .LocalProgram ) and not allow_built_program and not prog .run_program ():
74+ self .interpreter ._compiled_exe_error (prog )
7475
76+ largs .append (prog )
7577 largs .extend (args )
7678 es = self .interpreter .backend .get_executable_serialisation (largs , verbose = True )
7779 es .subproject = self .interpreter .subproject
@@ -116,7 +118,7 @@ def _process_script_args(
116118
117119 @typed_pos_args (
118120 'meson.add_install_script' ,
119- (str , mesonlib .File , build .Executable , ExternalProgram ),
121+ (str , mesonlib .File , build .Executable , ExternalProgram , build . LocalProgram ),
120122 varargs = (str , mesonlib .File , build .BuildTarget , build .CustomTarget , build .CustomTargetIndex , ExternalProgram )
121123 )
122124 @typed_kwargs (
@@ -132,7 +134,7 @@ def add_install_script_method(
132134 T .List [T .Union [str , mesonlib .File , build .BuildTargetTypes , ExternalProgram ]]],
133135 kwargs : 'AddInstallScriptKW' ) -> None :
134136 script_args = self ._process_script_args ('add_install_script' , args [1 ])
135- script = self ._find_source_script ('add_install_script' , args [0 ], script_args )
137+ script = self ._find_source_script ('add_install_script' , args [0 ], script_args , allow_built_program = True )
136138 script .skip_if_destdir = kwargs ['skip_if_destdir' ]
137139 script .tag = kwargs ['install_tag' ]
138140 script .dry_run = kwargs ['dry_run' ]
@@ -147,7 +149,7 @@ def add_install_script_method(
147149 @InterpreterObject .method ('add_postconf_script' )
148150 def add_postconf_script_method (
149151 self ,
150- args : T .Tuple [T .Union [str , mesonlib .File , ExternalProgram ],
152+ args : T .Tuple [T .Union [str , mesonlib .File , ExternalProgram , build . LocalProgram ],
151153 T .List [T .Union [str , mesonlib .File , ExternalProgram ]]],
152154 kwargs : 'TYPE_kwargs' ) -> None :
153155 script_args = self ._process_script_args ('add_postconf_script' , args [1 ])
@@ -164,7 +166,7 @@ def add_postconf_script_method(
164166 @InterpreterObject .method ('add_dist_script' )
165167 def add_dist_script_method (
166168 self ,
167- args : T .Tuple [T .Union [str , mesonlib .File , ExternalProgram ],
169+ args : T .Tuple [T .Union [str , mesonlib .File , ExternalProgram , build . LocalProgram ],
168170 T .List [T .Union [str , mesonlib .File , ExternalProgram ]]],
169171 kwargs : 'TYPE_kwargs' ) -> None :
170172 if args [1 ]:
0 commit comments