aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNirbheek Chauhan <nirbheek@centricular.com>2018-06-29 17:12:49 +0530
committerNirbheek Chauhan <nirbheek.chauhan@gmail.com>2018-07-01 13:59:48 +0000
commitae8d044cb6dca20c1d6504a27660bcbed16db438 (patch)
tree9e014e61387e087c5e7efc09499efff1f4af7306
parent6bdacba001739983a9e5b7f78ba9d33ac7ebe6c9 (diff)
downloadmeson-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.py8
-rwxr-xr-xrun_unittests.py5
-rw-r--r--test cases/unit/12 cross prog/meson.build4
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)