diff --git a/buildtools/wafsamba/samba_waf18.py b/buildtools/wafsamba/samba_waf18.py index c0bb6bfcf55..547da1996da 100644 --- a/buildtools/wafsamba/samba_waf18.py +++ b/buildtools/wafsamba/samba_waf18.py @@ -1,7 +1,7 @@ # compatibility layer for building with more recent waf versions import os, shlex, sys -from waflib import Build, Configure, Node, Utils, Options, Logs, TaskGen +from waflib import Build, Configure, Node, Utils, Options, Logs, TaskGen, Task from waflib import ConfigSet from waflib.TaskGen import feature, after from waflib.Configure import conf, ConfigurationContext @@ -429,3 +429,28 @@ def add_obj_file(self, file): if not 'process_obj_files' in self.meths: self.meths.append('process_obj_files') self.obj_files.append(file) + + +class test_exec(Task.Task): + """ + A task that runs programs after they are built. See :py:func:`waflib.Tools.c_config.test_exec_fun`. + """ + color = 'PINK' + def run(self): + exec_args = Utils.to_list(self.generator.exec_args) + + if getattr(self.generator, 'rpath', None): + if getattr(self.generator, 'define_ret', False): + self.generator.bld.retval = self.generator.bld.cmd_and_log([self.inputs[0].abspath()] + exec_args) + else: + self.generator.bld.retval = self.generator.bld.exec_command([self.inputs[0].abspath()] + exec_args) + else: + env = self.env.env or {} + env.update(dict(os.environ)) + for var in ('LD_LIBRARY_PATH', 'DYLD_LIBRARY_PATH', 'PATH'): + env[var] = self.inputs[0].parent.abspath() + os.path.pathsep + env.get(var, '') + + if getattr(self.generator, 'define_ret', False): + self.generator.bld.retval = self.generator.bld.cmd_and_log([self.inputs[0].abspath()] + exec_args, env=env) + else: + self.generator.bld.retval = self.generator.bld.exec_command([self.inputs[0].abspath()] + exec_args, env=env)