aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter/interpreter.py
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz@archlinux.org>2023-02-26 02:12:29 -0500
committerEli Schwartz <eschwartz@archlinux.org>2023-03-01 23:37:55 -0500
commita3f4f6c88f14ba9f176721bace861d705a11189c (patch)
treeb1f9f532a952ab9bd4b0f2937c42ba329762bebe /mesonbuild/interpreter/interpreter.py
parent314382d6ff06d1fb59118492cbd5a65fd3c58e5c (diff)
downloadmeson-a3f4f6c88f14ba9f176721bace861d705a11189c.zip
meson-a3f4f6c88f14ba9f176721bace861d705a11189c.tar.gz
meson-a3f4f6c88f14ba9f176721bace861d705a11189c.tar.bz2
interpreter: report FeatureNew for kwargs to project()
We need to know the project minimum version before evaluating the rest of the function. There's three basic approaches: - try to set it inside KwargInfo - just run a minimal version of func_project for this, then load everything after - drop down to the AST and set it before anything else In order to handle FeatureNew emitted by a FunctionNode evaluated before project() due to being inlined, such as `version: run_command()`, only option 3 suffices, the rest all happen way too late. Since we have just added AST handling support for erroring out, we can do that to set the version as well.
Diffstat (limited to 'mesonbuild/interpreter/interpreter.py')
-rw-r--r--mesonbuild/interpreter/interpreter.py2
1 files changed, 1 insertions, 1 deletions
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py
index c6602a5..0c058f6 100644
--- a/mesonbuild/interpreter/interpreter.py
+++ b/mesonbuild/interpreter/interpreter.py
@@ -528,6 +528,7 @@ class Interpreter(InterpreterBase, HoldableObject):
def handle_meson_version(self, pv: str, location: mparser.BaseNode) -> None:
if not mesonlib.version_compare(coredata.version, pv):
raise InterpreterException.from_node(f'Meson version is {coredata.version} but project requires {pv}', node=location)
+ mesonlib.project_meson_versions[self.subproject] = pv
def handle_meson_version_from_ast(self) -> None:
if not self.ast.lines:
@@ -1170,7 +1171,6 @@ class Interpreter(InterpreterBase, HoldableObject):
# for things like deprecation testing.
if kwargs['meson_version']:
self.handle_meson_version(kwargs['meson_version'], node)
- mesonlib.project_meson_versions[self.subproject] = kwargs['meson_version']
if os.path.exists(self.option_file):
oi = optinterpreter.OptionInterpreter(self.subproject)