aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter/interpreter.py
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2022-02-23 16:56:27 -0500
committerXavier Claessens <xclaesse@gmail.com>2022-02-28 09:03:27 -0500
commit6acfe48f32110671a0adf80ad3497a35105b265d (patch)
tree5fd822233653e9670e2aea820b59be1932aa2075 /mesonbuild/interpreter/interpreter.py
parentac4f8d0088e7be5fc37f4611a7fadb2361c945f2 (diff)
downloadmeson-6acfe48f32110671a0adf80ad3497a35105b265d.zip
meson-6acfe48f32110671a0adf80ad3497a35105b265d.tar.gz
meson-6acfe48f32110671a0adf80ad3497a35105b265d.tar.bz2
Allow setting method/separator in environment() and meson.add_devenv()
Diffstat (limited to 'mesonbuild/interpreter/interpreter.py')
-rw-r--r--mesonbuild/interpreter/interpreter.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py
index 30d0e4c..380cc1d 100644
--- a/mesonbuild/interpreter/interpreter.py
+++ b/mesonbuild/interpreter/interpreter.py
@@ -63,6 +63,8 @@ from .type_checking import (
DEPFILE_KW,
DISABLER_KW,
ENV_KW,
+ ENV_METHOD_KW,
+ ENV_SEPARATOR_KW,
INSTALL_KW,
INSTALL_MODE_KW,
CT_INSTALL_TAG_KW,
@@ -71,6 +73,7 @@ from .type_checking import (
REQUIRED_KW,
NoneType,
in_set_validator,
+ env_convertor_with_method
)
from . import primitives as P_OBJ
@@ -2610,9 +2613,9 @@ external dependencies (including libraries) must go to "dependencies".''')
for lang in kwargs['language']:
argsdict[lang] = argsdict.get(lang, []) + args
- @noKwargs
@noArgsFlattening
@typed_pos_args('environment', optargs=[(str, list, dict)])
+ @typed_kwargs('environment', ENV_METHOD_KW, ENV_SEPARATOR_KW.evolve(since='0.62.0'))
def func_environment(self, node: mparser.FunctionNode, args: T.Tuple[T.Union[None, str, T.List['TYPE_var'], T.Dict[str, 'TYPE_var']]],
kwargs: 'TYPE_kwargs') -> build.EnvironmentVariables:
init = args[0]
@@ -2621,7 +2624,9 @@ external dependencies (including libraries) must go to "dependencies".''')
msg = ENV_KW.validator(init)
if msg:
raise InvalidArguments(f'"environment": {msg}')
- return ENV_KW.convertor(init)
+ if isinstance(init, dict) and any(i for i in init.values() if isinstance(i, list)):
+ FeatureNew.single_use('List of string in dictionary value', '0.62.0', self.subproject, location=node)
+ return env_convertor_with_method(init, kwargs['method'], kwargs['separator'])
return build.EnvironmentVariables()
@typed_pos_args('join_paths', varargs=str, min_varargs=1)