summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSalamandar <felix@piedallu.me>2018-04-26 15:12:20 +0200
committerSalamandar <felix@piedallu.me>2018-06-01 14:23:24 +0200
commitee2f8a0416f6973d03d36601f5dd99db7825ef7f (patch)
tree710ec5a2b148cddf0eae595c2cd6b013fce93959
parent583e9c4af6fabaf9e61f16a7422160ae2977fce4 (diff)
downloadmeson-ee2f8a0416f6973d03d36601f5dd99db7825ef7f.tar.gz
Add basic code for feature version detection:
* store target version * Add empty method decorator
-rw-r--r--mesonbuild/coredata.py1
-rw-r--r--mesonbuild/interpreter.py1
-rw-r--r--mesonbuild/interpreterbase.py17
3 files changed, 19 insertions, 0 deletions
diff --git a/mesonbuild/coredata.py b/mesonbuild/coredata.py
index f3313f3f9..6540455a8 100644
--- a/mesonbuild/coredata.py
+++ b/mesonbuild/coredata.py
@@ -23,6 +23,7 @@ import ast
import argparse
version = '0.47.0.dev1'
+target_version = ''
backendlist = ['ninja', 'vs', 'vs2010', 'vs2015', 'vs2017', 'xcode']
default_yielding = False
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 4f2d45eae..21f66cdea 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -2285,6 +2285,7 @@ to directly access options of other subprojects.''')
if 'meson_version' in kwargs:
cv = coredata.version
pv = kwargs['meson_version']
+ coredata.target_version = pv
if not mesonlib.version_compare(cv, pv):
raise InterpreterException('Meson version is %s but project requires %s.' % (cv, pv))
self.build.projects[self.subproject] = proj_name
diff --git a/mesonbuild/interpreterbase.py b/mesonbuild/interpreterbase.py
index 9f323d113..52dad724d 100644
--- a/mesonbuild/interpreterbase.py
+++ b/mesonbuild/interpreterbase.py
@@ -17,6 +17,7 @@
from . import mparser, mesonlib, mlog
from . import environment, dependencies
+from . import coredata
import os, copy, re, types
from functools import wraps
@@ -123,6 +124,22 @@ class permittedKwargs:
return f(*wrapped_args, **wrapped_kwargs)
return wrapped
+class featureVersion:
+ """Checks for newer/deprecated features"""
+
+ def __init__(self, feature_name, wanted_version):
+ self.feature_name = feature_name
+ self.wanted_version = wanted_version
+
+ def __call__(self, f):
+ @wraps(f)
+ def wrapped(*wrapped_args, **wrapped_kwargs):
+ tv = coredata.target_version
+ if tv == '':
+ return
+ return f(*wrapped_args, **wrapped_kwargs)
+ return wrapped
+
class InterpreterException(mesonlib.MesonException):
pass