From 87c166db954591372bd2d34ab59d3a2d8c2b0bd7 Mon Sep 17 00:00:00 2001 From: Nirbheek Chauhan Date: Thu, 5 Apr 2018 16:46:22 +0530 Subject: find_program: Only store successful lookups Otherwise we can't do the following workflow: if not find_program('foo', required : false).found() subproject('provides-foo') endif Where 'provides-foo' has a meson.override_find_program() on a configure_file() or similar. --- mesonbuild/interpreter.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'mesonbuild/interpreter.py') diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index 0d4c37d..e2f0f88 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -2324,7 +2324,6 @@ to directly access options of other subprojects.''') required = kwargs.get('required', True) if not isinstance(required, bool): raise InvalidArguments('"required" argument must be a boolean.') - self.store_name_lookups(args) progobj = self.program_from_overrides(args) if progobj is None and self.build.environment.is_cross_build(): use_native = kwargs.get('native', False) @@ -2338,6 +2337,8 @@ to directly access options of other subprojects.''') raise InvalidArguments('Program(s) {!r} not found or not executable'.format(args)) if progobj is None: return ExternalProgramHolder(dependencies.NonExistingExternalProgram()) + # Only store successful lookups + self.store_name_lookups(args) return progobj def func_find_library(self, node, args, kwargs): -- cgit v1.1