diff options
author | Xavier Claessens <xavier.claessens@collabora.com> | 2018-04-10 15:01:05 -0400 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2018-10-23 22:09:55 +0300 |
commit | 61348da069bd3afe28a9de03e7792e20a9cb2eac (patch) | |
tree | 1db7fc90efbda6f95d7c5332788ca7b3da88e95f /mesonbuild/interpreterbase.py | |
parent | 87355c81326edd253f433f08e8d58f9df059951f (diff) | |
download | meson-61348da069bd3afe28a9de03e7792e20a9cb2eac.zip meson-61348da069bd3afe28a9de03e7792e20a9cb2eac.tar.gz meson-61348da069bd3afe28a9de03e7792e20a9cb2eac.tar.bz2 |
Add 'disabler' argument to functions returning not-found objects
When dependency(), find_library(), find_program(), or
python.find_installation() return a not-found object and disabler is
true, they return a Disabler object instead.
Diffstat (limited to 'mesonbuild/interpreterbase.py')
-rw-r--r-- | mesonbuild/interpreterbase.py | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/mesonbuild/interpreterbase.py b/mesonbuild/interpreterbase.py index c0064ab..aee1c87 100644 --- a/mesonbuild/interpreterbase.py +++ b/mesonbuild/interpreterbase.py @@ -145,6 +145,17 @@ def noArgsFlattening(f): setattr(f, 'no-args-flattening', True) return f +def disablerIfNotFound(f): + @wraps(f) + def wrapped(*wrapped_args, **wrapped_kwargs): + kwargs = _get_callee_args(wrapped_args)[3] + disabler = kwargs.pop('disabler', False) + ret = f(*wrapped_args, **wrapped_kwargs) + if disabler and not ret.held_object.found(): + return Disabler() + return ret + return wrapped + class permittedKwargs: def __init__(self, permitted): |