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.tar.gz | |
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 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) |
