From ae8d044cb6dca20c1d6504a27660bcbed16db438 Mon Sep 17 00:00:00 2001 From: Nirbheek Chauhan Date: Fri, 29 Jun 2018 17:12:49 +0530 Subject: Allow command lists for find_program cross file overrides This is accepted by all other binaries in the cross file. With this change, we also don't check whether the specified command exists at configure time, but that's probably a feature anyway. Fixes https://github.com/mesonbuild/meson/issues/3737 --- mesonbuild/interpreter.py | 8 ++++++-- run_unittests.py | 5 +++-- test cases/unit/12 cross prog/meson.build | 4 ++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index 79fc9fb40..8f6f79dcb 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -2627,8 +2627,12 @@ external dependencies (including libraries) must go to "dependencies".''') if not isinstance(p, str): raise InterpreterException('Executable name must be a string.') if p in bins: - exename = bins[p] - extprog = dependencies.ExternalProgram(exename, silent=silent) + command = bins[p] + if isinstance(command, (list, str)): + extprog = dependencies.ExternalProgram(p, command=command, silent=silent) + else: + raise InterpreterException('Invalid type {!r} for binary {!r} in cross file' + ''.format(command, p)) progobj = ExternalProgramHolder(extprog) return progobj diff --git a/run_unittests.py b/run_unittests.py index 0abe419e6..8b664a30c 100755 --- a/run_unittests.py +++ b/run_unittests.py @@ -3207,7 +3207,8 @@ class LinuxlikeTests(BasePlatformTests): c = '/usr/bin/cc' ar = '/usr/bin/ar' strip = '/usr/bin/ar' -sometool.py = '%s' +sometool.py = ['{0}'] +someothertool.py = '{0}' [properties] @@ -3216,7 +3217,7 @@ system = 'linux' cpu_family = 'arm' cpu = 'armv7' # Not sure if correct. endian = 'little' -''' % os.path.join(testdir, 'some_cross_tool.py')) +'''.format(os.path.join(testdir, 'some_cross_tool.py'))) crossfile.flush() self.meson_cross_file = crossfile.name self.init(testdir) diff --git a/test cases/unit/12 cross prog/meson.build b/test cases/unit/12 cross prog/meson.build index e62870130..a7adeb284 100644 --- a/test cases/unit/12 cross prog/meson.build +++ b/test cases/unit/12 cross prog/meson.build @@ -2,11 +2,15 @@ project('cross find program', 'c') native_exe = find_program('sometool.py', native : true) cross_exe = find_program('sometool.py') +cross_other_exe = find_program('someothertool.py') native_out = run_command(native_exe).stdout().strip() cross_out = run_command(cross_exe).stdout().strip() +cross_other_out = run_command(cross_other_exe).stdout().strip() assert(native_out == 'native', 'Native output incorrect:' + native_out) assert(cross_out == 'cross', 'Cross output incorrect:' + cross_out) +assert(cross_out == cross_other_out, + 'Cross output incorrect:' + cross_other_out) -- cgit v1.2.3