aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2017-02-19 12:37:56 -0500
committerGitHub <noreply@github.com>2017-02-19 12:37:56 -0500
commit0cf18eb3bc6f872324971610f92d54d63049b9c9 (patch)
tree002840679e8cb2d179adb156c3c92f69bca3ae00 /mesonbuild/interpreter.py
parentaba099a4910c2e578c0aefbd20bda666b6a6856e (diff)
parentf23a4a8b27b2a2e46185869bb736b1ab843cdcf3 (diff)
downloadmeson-0cf18eb3bc6f872324971610f92d54d63049b9c9.zip
meson-0cf18eb3bc6f872324971610f92d54d63049b9c9.tar.gz
meson-0cf18eb3bc6f872324971610f92d54d63049b9c9.tar.bz2
Merge pull request #1356 from centricular/cross-platform-unit-tests
Run unit tests on more platforms, and more
Diffstat (limited to 'mesonbuild/interpreter.py')
-rw-r--r--mesonbuild/interpreter.py28
1 files changed, 19 insertions, 9 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 224f98e..f6065d5 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -285,16 +285,16 @@ class ExternalProgramHolder(InterpreterObject):
return self.found()
def path_method(self, args, kwargs):
- return self.get_command()
+ return self.held_object.get_path()
def found(self):
return self.held_object.found()
def get_command(self):
- return self.held_object.fullpath
+ return self.held_object.get_command()
def get_name(self):
- return self.held_object.name
+ return self.held_object.get_name()
class ExternalLibraryHolder(InterpreterObject):
def __init__(self, el):
@@ -308,9 +308,6 @@ class ExternalLibraryHolder(InterpreterObject):
def found_method(self, args, kwargs):
return self.found()
- def get_filename(self):
- return self.held_object.fullpath
-
def get_name(self):
return self.held_object.name
@@ -1424,7 +1421,8 @@ class Interpreter(InterpreterBase):
elif isinstance(cmd, str):
cmd = [cmd]
else:
- raise InterpreterException('First argument is of incorrect type.')
+ raise InterpreterException('First argument should be find_program() '
+ 'or string, not {!r}'.format(cmd))
expanded_args = []
for a in mesonlib.flatten(cargs):
if isinstance(a, str):
@@ -1759,7 +1757,6 @@ class Interpreter(InterpreterBase):
break
self.coredata.base_options[optname] = oobj
- @stringArgs
def func_find_program(self, node, args, kwargs):
if len(args) == 0:
raise InterpreterException('No program name specified.')
@@ -1769,8 +1766,21 @@ class Interpreter(InterpreterBase):
# Search for scripts relative to current subdir.
# Do not cache found programs because find_program('foobar')
# might give different results when run from different source dirs.
- search_dir = os.path.join(self.environment.get_source_dir(), self.subdir)
+ source_dir = os.path.join(self.environment.get_source_dir(), self.subdir)
for exename in args:
+ if isinstance(exename, mesonlib.File):
+ if exename.is_built:
+ search_dir = os.path.join(self.environment.get_build_dir(),
+ exename.subdir)
+ else:
+ search_dir = os.path.join(self.environment.get_source_dir(),
+ exename.subdir)
+ exename = exename.fname
+ elif isinstance(exename, str):
+ search_dir = source_dir
+ else:
+ raise InvalidArguments('find_program only accepts strings and '
+ 'files, not {!r}'.format(exename))
extprog = dependencies.ExternalProgram(exename, search_dir=search_dir)
progobj = ExternalProgramHolder(extprog)
if progobj.found():