aboutsummaryrefslogtreecommitdiff
path: root/interpreter.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2013-03-09 21:20:58 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2013-03-09 21:20:58 +0200
commit68b50bd7328dc3fc7f9826d2f261e3a9116e5be9 (patch)
tree50e9d67fec583856777d447614cd0a4be164dde8 /interpreter.py
parent8c237ebfebf4b094bd64d49c94b578de90b40863 (diff)
downloadmeson-68b50bd7328dc3fc7f9826d2f261e3a9116e5be9.zip
meson-68b50bd7328dc3fc7f9826d2f261e3a9116e5be9.tar.gz
meson-68b50bd7328dc3fc7f9826d2f261e3a9116e5be9.tar.bz2
Cache external programs in coredata.
Diffstat (limited to 'interpreter.py')
-rwxr-xr-xinterpreter.py4
1 files changed, 4 insertions, 0 deletions
diff --git a/interpreter.py b/interpreter.py
index 94b1c5c..1191d59 100755
--- a/interpreter.py
+++ b/interpreter.py
@@ -615,8 +615,12 @@ class Interpreter():
if not isinstance(required, bool):
raise InvalidArguments('Line %d: "required" argument must be a boolean.' % node.lineno())
exename = args[0]
+ if exename in self.coredata.ext_progs and\
+ self.coredata.ext_progs[exename].found():
+ return self.coredata.ext_progs[exename]
result = shutil.which(exename) # Does .exe appending on Windows.
progobj = ExternalProgram(exename, result)
+ self.coredata.ext_progs[exename] = progobj
if required and not progobj.found():
raise InvalidArguments('Line %d: program "%s" not found.' % (node.lineno(), exename))
return progobj