aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/optinterpreter.py
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2021-10-13 10:45:23 -0400
committerXavier Claessens <xclaesse@gmail.com>2021-10-14 14:17:50 -0400
commit8a0d12ec295780977d0e2cb7e2f64f1e3a3e0067 (patch)
treed9e8cff75f657c7282459e18c0bb8408a4ec430e /mesonbuild/optinterpreter.py
parent5e96730d7d9f1f6bebf66d04381bc5ec0f80a1cc (diff)
downloadmeson-8a0d12ec295780977d0e2cb7e2f64f1e3a3e0067.zip
meson-8a0d12ec295780977d0e2cb7e2f64f1e3a3e0067.tar.gz
meson-8a0d12ec295780977d0e2cb7e2f64f1e3a3e0067.tar.bz2
optinterpreter: Fix builtin option names not being reserved anymore
Diffstat (limited to 'mesonbuild/optinterpreter.py')
-rw-r--r--mesonbuild/optinterpreter.py20
1 files changed, 2 insertions, 18 deletions
diff --git a/mesonbuild/optinterpreter.py b/mesonbuild/optinterpreter.py
index 7818915..64c4af2 100644
--- a/mesonbuild/optinterpreter.py
+++ b/mesonbuild/optinterpreter.py
@@ -15,7 +15,6 @@
import re
import typing as T
-from . import compilers
from . import coredata
from . import mesonlib
from . import mparser
@@ -43,21 +42,6 @@ if T.TYPE_CHECKING:
})
-forbidden_option_names = set(coredata.BUILTIN_OPTIONS.keys())
-forbidden_prefixes = [lang + '_' for lang in compilers.all_languages] + ['b_', 'backend_']
-reserved_prefixes = ['cross_']
-
-def is_invalid_name(name: str, *, log: bool = True) -> bool:
- if name in forbidden_option_names:
- return True
- pref = name.split('_')[0] + '_'
- if pref in forbidden_prefixes:
- return True
- if pref in reserved_prefixes:
- if log:
- mlog.deprecation('Option uses prefix "%s", which is reserved for Meson. This will become an error in the future.' % pref)
- return False
-
class OptionException(mesonlib.MesonException):
pass
@@ -176,7 +160,8 @@ class OptionInterpreter:
opt_name = args[0]
if optname_regex.search(opt_name) is not None:
raise OptionException('Option names can only contain letters, numbers or dashes.')
- if is_invalid_name(opt_name):
+ key = mesonlib.OptionKey.from_string(opt_name).evolve(subproject=self.subproject)
+ if not key.is_project():
raise OptionException('Option name %s is reserved.' % opt_name)
opt_type = kwargs['type']
@@ -192,7 +177,6 @@ class OptionInterpreter:
opt = parser(description, T.cast('ParserArgs', parser_kwargs))
opt.deprecated = kwargs['deprecated']
- key = mesonlib.OptionKey(opt_name, self.subproject)
if key in self.options:
mlog.deprecation(f'Option {opt_name} already exists.')
self.options[key] = opt