implementation of environment variable passthrough
With this its possible to create custom environment variables within the kas configuration file, that are passed through to the build environment: env: VARIABLE_NAME: "default variable value" Those variables can be overwritten by variables of the environment kas is started in: $ VARIABLE_NAME="overwritten variable value" kas shell ... Those variables are also added to the 'BB_ENV_EXTRAWHITE' variable list to make them available to bitbake. This is useful for instance storing sensitive information, that should not be part of the configuration files or bitbake recipes. Signed-off-by: Claudius Heine <ch@denx.de>
This commit is contained in:
parent
cd076101f4
commit
95015045db
@ -48,3 +48,12 @@ Changed behavior
|
|||||||
|
|
||||||
- Using ``multiconfig:*`` targets adds appropriate ``BBMULTICONFIG`` entries to
|
- Using ``multiconfig:*`` targets adds appropriate ``BBMULTICONFIG`` entries to
|
||||||
the ``local.conf`` automatically.
|
the ``local.conf`` automatically.
|
||||||
|
|
||||||
|
Version 6
|
||||||
|
---------
|
||||||
|
|
||||||
|
Added
|
||||||
|
~~~~~
|
||||||
|
|
||||||
|
- ``env`` key now allows to pass custom environment variables to the bitbake
|
||||||
|
build process.
|
||||||
|
@ -294,6 +294,11 @@ Configuration reference
|
|||||||
``core-image-minimal``. Space is used as a delimiter if multiple targets
|
``core-image-minimal``. Space is used as a delimiter if multiple targets
|
||||||
should be specified via the environment variable.
|
should be specified via the environment variable.
|
||||||
|
|
||||||
|
* ``env``: dict [optional]
|
||||||
|
Contains environment variable names with the default values. These
|
||||||
|
variables are made available to bitbake via ``BB_ENV_EXTRAWHITE`` and can
|
||||||
|
be overwritten by the variables of the environment in which kas is started.
|
||||||
|
|
||||||
* ``task``: string [optional]
|
* ``task``: string [optional]
|
||||||
Contains the task to build by bitbake. Can be overwritten by the
|
Contains the task to build by bitbake. Can be overwritten by the
|
||||||
``KAS_TASK`` environment variable and defaults to ``build``.
|
``KAS_TASK`` environment variable and defaults to ``build``.
|
||||||
|
@ -28,5 +28,5 @@ __copyright__ = 'Copyright (c) Siemens AG, 2017'
|
|||||||
__version__ = '0.14.0'
|
__version__ = '0.14.0'
|
||||||
|
|
||||||
# Please update docs/format-changelog.rst when changing the file version.
|
# Please update docs/format-changelog.rst when changing the file version.
|
||||||
__file_version__ = 5
|
__file_version__ = 6
|
||||||
__compatible_file_version__ = 1
|
__compatible_file_version__ = 1
|
||||||
|
@ -277,6 +277,14 @@ class Config:
|
|||||||
return os.environ.get('KAS_DISTRO',
|
return os.environ.get('KAS_DISTRO',
|
||||||
self._config.get('distro', 'poky'))
|
self._config.get('distro', 'poky'))
|
||||||
|
|
||||||
|
def get_environment(self):
|
||||||
|
"""
|
||||||
|
Returns the configured environment variables from the configuration
|
||||||
|
file, with possible overwritten values from the environment.
|
||||||
|
"""
|
||||||
|
env = self._config.get('env', {})
|
||||||
|
return {var: os.environ.get(var, env[var]) for var in env}
|
||||||
|
|
||||||
def get_multiconfig(self):
|
def get_multiconfig(self):
|
||||||
"""
|
"""
|
||||||
Returns the multiconfig array as bitbake string
|
Returns the multiconfig array as bitbake string
|
||||||
|
@ -78,6 +78,12 @@ CONFIGSCHEMA = {
|
|||||||
'distro': {
|
'distro': {
|
||||||
'type': 'string',
|
'type': 'string',
|
||||||
},
|
},
|
||||||
|
'env': {
|
||||||
|
'type': 'object',
|
||||||
|
'additionalProperties': {
|
||||||
|
'type': 'string',
|
||||||
|
},
|
||||||
|
},
|
||||||
'target': {
|
'target': {
|
||||||
'oneOf': [
|
'oneOf': [
|
||||||
{
|
{
|
||||||
|
@ -306,7 +306,13 @@ def get_build_environ(config, build_dir):
|
|||||||
except ValueError:
|
except ValueError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
conf_env = config.get_environment()
|
||||||
|
|
||||||
env_vars = ['SSTATE_DIR', 'DL_DIR', 'TMPDIR']
|
env_vars = ['SSTATE_DIR', 'DL_DIR', 'TMPDIR']
|
||||||
|
env_vars.extend(conf_env)
|
||||||
|
|
||||||
|
env.update(conf_env)
|
||||||
|
|
||||||
if 'BB_ENV_EXTRAWHITE' in env:
|
if 'BB_ENV_EXTRAWHITE' in env:
|
||||||
extra_white = env['BB_ENV_EXTRAWHITE'] + ' '.join(env_vars)
|
extra_white = env['BB_ENV_EXTRAWHITE'] + ' '.join(env_vars)
|
||||||
env.update({'BB_ENV_EXTRAWHITE': extra_white})
|
env.update({'BB_ENV_EXTRAWHITE': extra_white})
|
||||||
|
Loading…
Reference in New Issue
Block a user