aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2021-06-10 09:28:05 -0400
committerXavier Claessens <xclaesse@gmail.com>2021-06-11 09:40:21 -0400
commitd5917c1b87aa38b8297f17586b470bcf07da0594 (patch)
tree1b6762cfeb7ed7d518b23babdb148d393484137e
parent636bf915861b94a3353a5b9a770e235f0a3784a2 (diff)
downloadmeson-d5917c1b87aa38b8297f17586b470bcf07da0594.zip
meson-d5917c1b87aa38b8297f17586b470bcf07da0594.tar.gz
meson-d5917c1b87aa38b8297f17586b470bcf07da0594.tar.bz2
coredata: Invalidate deps cache when changing wrap_mode option
Fixes: #8858
-rw-r--r--mesonbuild/coredata.py9
-rw-r--r--mesonbuild/mconf.py3
2 files changed, 10 insertions, 2 deletions
diff --git a/mesonbuild/coredata.py b/mesonbuild/coredata.py
index f34f7b8..89cec46 100644
--- a/mesonbuild/coredata.py
+++ b/mesonbuild/coredata.py
@@ -634,6 +634,15 @@ class CoreData:
if key.name == 'buildtype':
self._set_others_from_buildtype(value)
+ elif key.name in {'wrap_mode', 'force_fallback_for'}:
+ # We could have the system dependency cached for a dependency that
+ # is now forced to use subproject fallback. We probably could have
+ # more fine grained cache invalidation, but better be safe.
+ self.clear_deps_cache()
+
+ def clear_deps_cache(self):
+ self.deps.host.clear()
+ self.deps.build.clear()
def get_nondefault_buildtype_args(self):
result= []
diff --git a/mesonbuild/mconf.py b/mesonbuild/mconf.py
index 20f31d1..4b3f331 100644
--- a/mesonbuild/mconf.py
+++ b/mesonbuild/mconf.py
@@ -85,8 +85,7 @@ class Conf:
raise ConfException(f'Directory {build_dir} is neither a Meson build directory nor a project source directory.')
def clear_cache(self):
- self.coredata.deps.host.clear()
- self.coredata.deps.build.clear()
+ self.coredata.clear_deps_cache()
def set_options(self, options):
self.coredata.set_options(options)