diff options
author | Nirbheek Chauhan <nirbheek@centricular.com> | 2018-06-29 17:12:49 +0530 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek.chauhan@gmail.com> | 2018-07-01 13:59:48 +0000 |
commit | ae8d044cb6dca20c1d6504a27660bcbed16db438 (patch) | |
tree | 9e014e61387e087c5e7efc09499efff1f4af7306 | |
parent | 6bdacba001739983a9e5b7f78ba9d33ac7ebe6c9 (diff) | |
download | meson-ae8d044cb6dca20c1d6504a27660bcbed16db438.zip meson-ae8d044cb6dca20c1d6504a27660bcbed16db438.tar.gz meson-ae8d044cb6dca20c1d6504a27660bcbed16db438.tar.bz2 |
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
-rw-r--r-- | mesonbuild/interpreter.py | 8 | ||||
-rwxr-xr-x | run_unittests.py | 5 | ||||
-rw-r--r-- | 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 79fc9fb..8f6f79d 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 0abe419..8b664a3 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 e628701..a7adeb2 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) |