diff options
author | Thibault Saunier <saunierthibault@gmail.com> | 2016-09-14 17:11:27 -0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2016-09-14 23:11:27 +0300 |
commit | a2e7ebc575a47bfb3dfb774591cde3fdc6873dc9 (patch) | |
tree | bde1198cb0fde59c2ca09b78ff7a832a38aad238 /mesonbuild/build.py | |
parent | 8fd8c16a879742a840b8f3a431539a261b8552ba (diff) | |
download | meson-a2e7ebc575a47bfb3dfb774591cde3fdc6873dc9.zip meson-a2e7ebc575a47bfb3dfb774591cde3fdc6873dc9.tar.gz meson-a2e7ebc575a47bfb3dfb774591cde3fdc6873dc9.tar.bz2 |
Add a new 'environment' object to be used to build test environment (#781)
Allowing user to fine tune tests environment variables
Diffstat (limited to 'mesonbuild/build.py')
-rw-r--r-- | mesonbuild/build.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py index f95922e..7605b46 100644 --- a/mesonbuild/build.py +++ b/mesonbuild/build.py @@ -193,6 +193,41 @@ class ExtractedObjects(): self.target = target self.srclist = srclist +class EnvironmentVariables(): + def __init__(self): + self.envvars = [] + + def get_value(self, name, values, kwargs): + separator = kwargs.get('separator', os.pathsep) + + value = '' + for var in values: + value += separator + var + return separator, value.strip(separator) + + def set(self, env, name, values, kwargs): + return self.get_value(name, values, kwargs)[1] + + def append(self, env, name, values, kwargs): + sep, value = self.get_value(name, values, kwargs) + if name in env: + return env[name] + sep + value + return value + + def prepend(self, env, name, values, kwargs): + sep, value = self.get_value(name, values, kwargs) + if name in env: + return value + sep + env[name] + + return value + + def get_env(self, full_env): + env = {} + for method, name, values, kwargs in self.envvars: + env[name] = method(full_env, name, values, kwargs) + return env + + class BuildTarget(): def __init__(self, name, subdir, subproject, is_cross, sources, objects, environment, kwargs): self.name = name |