diff options
author | Nirbheek Chauhan <nirbheek@centricular.com> | 2018-07-21 11:37:33 +0530 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek@centricular.com> | 2018-07-21 14:53:44 +0530 |
commit | 7462b0655e714a11e4edb1e0c3ef72c74556c4e8 (patch) | |
tree | d2618a2f072c8823fef82f6f8ec6f4ec87b424c2 /config/windows.config | |
parent | 461803fec5700087ff0e91f6c16444729855b92a (diff) |
cerbero: Rework environment modification in recipes
Environment variable modification in a recipe used to be done with:
self.append_env, self.prepend_env, or self.new_env
All of these were dictionaries of {string:string} mappings, which
means that if a recipe wanted to, say, append to `CFLAGS` from
multiple places within the recipe (f.ex., `glib.recipe`), you had to
carefully juggle `=` and `+=` in recipes, which was error-prone
(f.ex., `gstreamer-1.0.recipe` `variants.nodebug` was broken).
Now that we also conditionally use `self.append_env['CFLAGS']` in
`cerbero/build/build.py` for bitcode support with make-based build
systems, it's impossible to get this right in recipes. This was
causing the cross-ios-universal builds to fail on recipes that
directly set `self.append_env['CFLAGS'] = 'foo'` such as pixman.
The dictionaries have now been replaced with the following functions:
self.append_env(varname, value1, value2, ..., sep=separator)
self.prepend_env(varname, value1, value2, ..., sep=separator)
self.set_env(varname, value1, value2, ..., sep=separator)
The separator is used to join value1, value2, etc and also while
appending/prepending to the value in the env. It is optional, and
defaults to ` ` (space).
Most often the usage is very simple to translate:
self.append_env['CFLAGS'] = ' -funroll-loops '
=>
self.append_env('CFLAGS', '-funroll-loops')
If values are omitted with `self.set_env()`, the variable is unset:
self.new_env['MAKEFLAGS'] = None
=>
self.set_env('MAKEFLAGS')
An important intended feature is that multiple calls to these
functions all take effect sequentially at build time for each build
step. So, you can call append and prepend multiple times on the same
variable, and the values will be appended and prepended in that order
to the value at build time.
Note that if you call `self.set_env()` on a variable, the variable will,
of course, be set to that value and previous append/prepend
declarations will be overriden.
Reviewed-by: Jan Schmidt <jan@centricular.com>
Diffstat (limited to 'config/windows.config')
-rw-r--r-- | config/windows.config | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/config/windows.config b/config/windows.config index 44b73a8e..8c9c17bf 100644 --- a/config/windows.config +++ b/config/windows.config @@ -96,6 +96,7 @@ if platform == Platform.WINDOWS: from cerbero.ide.vs.env import vcvarsall, get_msvc_env, append_path # Contains only the env vars that MSVC needs, including any existing vars # that were appended/prepended and have new values + # FIXME: Use EnvVarOp class from cerbero/build/build.py msvc_toolchain_env = {} for key, value in get_msvc_env(vcvarsall, arch, target_arch).items(): if key in ('PATH', 'PATHEXT', 'INCLUDE', 'LIB'): |