aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/build.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/build.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/build.py')
-rw-r--r--mesonbuild/build.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index 35e5e66..6bb487b 100644
--- a/mesonbuild/build.py
+++ b/mesonbuild/build.py
@@ -46,6 +46,7 @@ from .linkers import StaticLinker
from .interpreterbase import FeatureNew, FeatureDeprecated
if T.TYPE_CHECKING:
+ from typing_extensions import Literal
from ._typing import ImmutableListProtocol, ImmutableSetProtocol
from .backend.backends import Backend, ExecutableSerialisation
from .interpreter.interpreter import Test, SourceOutputs, Interpreter
@@ -451,15 +452,19 @@ class ExtractedObjects(HoldableObject):
for source in self.get_sources(self.srclist, self.genlist)
]
+EnvInitValueType = T.Dict[str, T.Union[str, T.List[str]]]
+
class EnvironmentVariables(HoldableObject):
- def __init__(self, values: T.Optional[T.Dict[str, str]] = None) -> None:
+ def __init__(self, values: T.Optional[EnvValueType] = None,
+ init_method: Literal['set', 'prepend', 'append'] = 'set', separator: str = os.pathsep) -> None:
self.envvars: T.List[T.Tuple[T.Callable[[T.Dict[str, str], str, T.List[str], str], str], str, T.List[str], str]] = []
# The set of all env vars we have operations for. Only used for self.has_name()
self.varnames: T.Set[str] = set()
if values:
+ init_func = getattr(self, init_method)
for name, value in values.items():
- self.set(name, [value])
+ init_func(name, listify(value), separator)
def __repr__(self) -> str:
repr_str = "<{0}: {1}>"