mirror of
https://git.yoctoproject.org/poky
synced 2026-01-29 21:08:42 +01:00
classes/populate_sdk_ext: support setting vars from environment at build time
When running bitbake you may pass in values of variables from the external environment (making use of BB_ENV_EXTRAWHITE), and you may choose to do this when building the extensible SDK, for example: MACHINE=qemuarm bitbake -c populate_sdk_ext core-image-minimal You would naturally expect those settings to be reflected in the extensible SDK itself; however they were not, since we were only considering local.conf and auto.conf. Check the variables mentioned in BB_ENV_EXTRAWHITE to see if any are different than the values set in local.conf/auto.conf and add lines setting them in the SDK's local.conf if so. Fixes [YOCTO #9339]. (From OE-Core rev: 2bfed75c48a6f6596ded9cb64cb96f00510f914e) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
c37d5426b1
commit
591b97c6be
@@ -164,6 +164,9 @@ python copy_buildsystem () {
|
||||
f.write(' $' + '{SDKBASEMETAPATH}/workspace \\\n')
|
||||
f.write(' "\n')
|
||||
|
||||
env_whitelist = (d.getVar('BB_ENV_EXTRAWHITE', True) or '').split()
|
||||
env_whitelist_values = {}
|
||||
|
||||
# Create local.conf
|
||||
builddir = d.getVar('TOPDIR', True)
|
||||
if derivative:
|
||||
@@ -176,6 +179,8 @@ python copy_buildsystem () {
|
||||
newlines.append('# Removed original setting of %s\n' % varname)
|
||||
return None, op, 0, True
|
||||
else:
|
||||
if varname in env_whitelist:
|
||||
env_whitelist_values[varname] = origvalue
|
||||
return origvalue, op, 0, True
|
||||
varlist = ['[^#=+ ]*']
|
||||
with open(builddir + '/conf/local.conf', 'r') as f:
|
||||
@@ -241,6 +246,21 @@ python copy_buildsystem () {
|
||||
if line.strip() and not line.startswith('#'):
|
||||
f.write(line)
|
||||
|
||||
# Ensure any variables set from the external environment (by way of
|
||||
# BB_ENV_EXTRAWHITE) are set in the SDK's configuration
|
||||
extralines = []
|
||||
for name, value in env_whitelist_values.iteritems():
|
||||
actualvalue = d.getVar(name, True) or ''
|
||||
if value != actualvalue:
|
||||
extralines.append('%s = "%s"\n' % (name, actualvalue))
|
||||
if extralines:
|
||||
with open(baseoutpath + '/conf/local.conf', 'a') as f:
|
||||
f.write('\n')
|
||||
f.write('# Extra settings from environment:\n')
|
||||
for line in extralines:
|
||||
f.write(line)
|
||||
f.write('\n')
|
||||
|
||||
# Filter the locked signatures file to just the sstate tasks we are interested in
|
||||
excluded_targets = d.getVar('SDK_TARGETS', True)
|
||||
sigfile = d.getVar('WORKDIR', True) + '/locked-sigs.inc'
|
||||
|
||||
Reference in New Issue
Block a user