aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter.py
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2021-02-20 12:04:01 -0500
committerXavier Claessens <xclaesse@gmail.com>2021-03-16 09:00:50 -0400
commit598e968993da58c89f773dc732c708a54b0ec8db (patch)
tree7aff62faa24d580ea64fdcf65922c7f0d109a712 /mesonbuild/interpreter.py
parent567c96b68b1dfe3cd6b52b0d26dfc78e5c0e6b76 (diff)
downloadmeson-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.py19
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