diff options
author | Xavier Claessens <xavier.claessens@collabora.com> | 2021-02-20 12:04:01 -0500 |
---|---|---|
committer | Xavier Claessens <xclaesse@gmail.com> | 2021-03-16 09:00:50 -0400 |
commit | 598e968993da58c89f773dc732c708a54b0ec8db (patch) | |
tree | 7aff62faa24d580ea64fdcf65922c7f0d109a712 /mesonbuild/interpreter.py | |
parent | 567c96b68b1dfe3cd6b52b0d26dfc78e5c0e6b76 (diff) | |
download | meson-598e968993da58c89f773dc732c708a54b0ec8db.zip meson-598e968993da58c89f773dc732c708a54b0ec8db.tar.gz meson-598e968993da58c89f773dc732c708a54b0ec8db.tar.bz2 |
Add `meson devenv` command and meson.add_devenv()
Diffstat (limited to 'mesonbuild/interpreter.py')
-rw-r--r-- | mesonbuild/interpreter.py | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index 84d5e5c..3e39720 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -32,7 +32,6 @@ from .interpreterbase import InterpreterObject, MutableInterpreterObject, Disabl from .interpreterbase import FeatureNew, FeatureDeprecated, FeatureNewKwargs, FeatureDeprecatedKwargs from .interpreterbase import ObjectHolder, MesonVersionString from .interpreterbase import TYPE_var, TYPE_nkwargs -from .interpreterbase import typed_pos_args from .modules import ModuleReturnValue, ModuleObject, ModuleState from .cmake import CMakeInterpreter from .backend.backends import TestProtocol, Backend, ExecutableSerialisation @@ -256,8 +255,8 @@ class EnvironmentVariablesHolder(MutableInterpreterObject, ObjectHolder[build.En if isinstance(initial_values, dict): for k, v in initial_values.items(): self.set_method([k, v], {}) - elif isinstance(initial_values, list): - for e in initial_values: + elif initial_values is not None: + for e in mesonlib.stringlistify(initial_values): if '=' not in e: raise InterpreterException('Env var definition must be of type key=val.') (k, val) = e.split('=', 1) @@ -266,8 +265,6 @@ class EnvironmentVariablesHolder(MutableInterpreterObject, ObjectHolder[build.En if ' ' in k: raise InterpreterException('Env var key must not have spaces in it.') self.set_method([k, val], {}) - elif initial_values: - raise AssertionError('Unsupported EnvironmentVariablesHolder initial_values') def __repr__(self) -> str: repr_str = "<{0}: {1}>" @@ -1915,6 +1912,7 @@ class MesonMain(InterpreterObject): 'get_external_property': self.get_external_property_method, 'has_external_property': self.has_external_property_method, 'backend': self.backend_method, + 'add_devenv': self.add_devenv_method, }) def _find_source_script(self, prog: T.Union[str, mesonlib.File, ExecutableHolder], args): @@ -2241,6 +2239,16 @@ class MesonMain(InterpreterObject): for_machine = self.interpreter.machine_from_native_kwarg(kwargs) return prop_name in self.interpreter.environment.properties[for_machine] + @FeatureNew('add_devenv', '0.58.0') + @noKwargs + @typed_pos_args('add_devenv', (str, list, dict, EnvironmentVariablesHolder)) + def add_devenv_method(self, args: T.Union[str, list, dict, EnvironmentVariablesHolder], kwargs: T.Dict[str, T.Any]) -> None: + env = args[0] + if isinstance(env, (str, list, dict)): + env = EnvironmentVariablesHolder(env) + self.build.devenv.append(env.held_object) + + known_library_kwargs = ( build.known_shlib_kwargs | build.known_stlib_kwargs @@ -4084,7 +4092,6 @@ This will become a hard error in the future.''' % kwargs['input'], location=self env = EnvironmentVariablesHolder(envlist) env = env.held_object else: - envlist = listify(envlist) # Convert from array to environment object env = EnvironmentVariablesHolder(envlist) env = env.held_object |