diff options
author | David Robillard <d@drobilla.net> | 2019-03-15 22:36:13 +0100 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2019-03-17 00:31:46 +0100 |
commit | b1d95050a447acc12cf169652315754911c8cecf (patch) | |
tree | 1a0df151106c13abe11bb18ae1bc39b26b7cf9e4 | |
parent | 387c1dfa6fbebc9d75bd80231f69baf94346dce1 (diff) | |
download | autowaf-b1d95050a447acc12cf169652315754911c8cecf.tar.gz autowaf-b1d95050a447acc12cf169652315754911c8cecf.tar.bz2 autowaf-b1d95050a447acc12cf169652315754911c8cecf.zip |
Add ExecutionContext for setting runtime environment
-rw-r--r-- | extras/autowaf.py | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/extras/autowaf.py b/extras/autowaf.py index 91edfee..07200fd 100644 --- a/extras/autowaf.py +++ b/extras/autowaf.py @@ -762,6 +762,30 @@ def build_i18n(bld, srcdir, dir, name, sources, copyright_holder=None): build_i18n_po(bld, srcdir, dir, name, sources, copyright_holder) build_i18n_mo(bld, srcdir, dir, name, sources, copyright_holder) +class ExecutionEnvironment: + """Context that sets system environment variables for program execution""" + def __init__(self, changes): + self.original_environ = os.environ.copy() + + self.diff = {} + for path_name, paths in changes.items(): + value = os.pathsep.join(paths) + if path_name in os.environ: + value += os.pathsep + os.environ[path_name] + + self.diff[path_name] = value + + os.environ.update(self.diff) + + def __str__(self): + return '\n'.join({'%s="%s"' % (k, v) for k, v in self.diff.items()}) + + def __enter__(self): + return self + + def __exit__(self, type, value, traceback): + os.environ = self.original_environ + def cd_to_build_dir(ctx, appname): top_level = (len(ctx.stack_path) > 1) if top_level: |