From 268f73761205c55219b96e41debd2120a29b3c43 Mon Sep 17 00:00:00 2001 From: Nirbheek Chauhan Date: Fri, 4 Nov 2016 13:18:30 +0530 Subject: [PATCH 1/2] dependency: Check that cached_dep has the 'required' attribute Closes https://github.com/mesonbuild/meson/issues/992 --- mesonbuild/interpreter.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index 3044d5175..8aedcd724 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -1856,12 +1856,10 @@ requirements use the version keyword argument instead.''') # Cached dep has the wrong version. Check if an external # dependency or a fallback dependency provides it. cached_dep = None - # Don't re-use cached dep if it wasn't required but this one is, # so we properly go into fallback/error code paths - if 'required' in kwargs and cached_dep is not None: - if not cached_dep.required and kwargs.get('required', True): - cached_dep = None + if kwargs.get('required', True) and not getattr(cached_dep, 'required', False): + cached_dep = None if cached_dep: dep = cached_dep From cb36843863e098752ce77965226fd864c6134a2a Mon Sep 17 00:00:00 2001 From: Nirbheek Chauhan Date: Fri, 4 Nov 2016 14:06:38 +0530 Subject: [PATCH 2/2] failing tests: required : true is true implicitly We need to test that the not-required then required case also works when required is True implicitly. --- .../34 dependency not-required then required/meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test cases/failing/34 dependency not-required then required/meson.build b/test cases/failing/34 dependency not-required then required/meson.build index f33c41c06..1796699e4 100644 --- a/test cases/failing/34 dependency not-required then required/meson.build +++ b/test cases/failing/34 dependency not-required then required/meson.build @@ -1,4 +1,4 @@ project('dep-test', 'c', version : '1.0') foo_dep = dependency('foo-bar-xyz-12.3', required : false) -bar_dep = dependency('foo-bar-xyz-12.3', required : true) +bar_dep = dependency('foo-bar-xyz-12.3')