aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChen Qi <Qi.Chen@windriver.com>2015-06-29 15:30:49 +0800
committerChen Qi <Qi.Chen@windriver.com>2015-08-20 15:04:07 +0800
commite4763d07e967de6f5e64122c44f7851790686742 (patch)
tree3b0ee33e4d9c8c35fc980df5f4d5813236186e94
parentfeb9a0850e4a24335e9e0295ccab1818c43ba917 (diff)
downloadopenembedded-core-contrib-e4763d07e967de6f5e64122c44f7851790686742.tar.gz
populate_sdk_ext: consider custom configuration in local.conf
Copy the contents of local.conf under TOPDIR into the final generated local.conf. In this way, custom settings are also made into the final local.conf like IMAGE_INSTALL, DISTRO_FEATURES, VIRTUAL-RUNTIME_xxx, etc. Before this change, installing extensible SDK would usually report failure when preparing the build system if the user has custom configuration for DISTRO_FEATURES in local.conf. Also, items in IMAGE_INSTALL_append in local.conf also don't get built correctly. This patch solves the above problem by making use of the bb.utils.edit_metadata. In addition, we check to avoid any setting that might lead to host path bleeding into SDK's configuration. Basically, variables with values starting with '/' are removed. A whitelist mechanism is introduced so that users could specify variables that should not be ignored. The name of the whitelist is SDK_LOCAL_CONF_WHITELIST. The SDK_META_CONF_WHITELIST is removed as it's of no use after this change. Add SDK_INHERIT_BLACKLIST to forbit local.conf in SDK to herit certain classes like 'buildhistory' or 'icecc'. [YOCTO #7616] Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
-rw-r--r--meta/classes/populate_sdk_ext.bbclass23
1 files changed, 20 insertions, 3 deletions
diff --git a/meta/classes/populate_sdk_ext.bbclass b/meta/classes/populate_sdk_ext.bbclass
index a36bf16c78..da5ec2c33e 100644
--- a/meta/classes/populate_sdk_ext.bbclass
+++ b/meta/classes/populate_sdk_ext.bbclass
@@ -15,7 +15,8 @@ SDK_RDEPENDS_append_task-populate-sdk-ext = " ${SDK_TARGETS}"
SDK_RELOCATE_AFTER_INSTALL_task-populate-sdk-ext = "0"
-SDK_META_CONF_WHITELIST ?= "MACHINE DISTRO PACKAGE_CLASSES"
+SDK_LOCAL_CONF_WHITELIST ?= ""
+SDK_INHERIT_BLACKLIST ?= "buildhistory icecc"
SDK_TARGETS ?= "${PN}"
OE_INIT_ENV_SCRIPT ?= "oe-init-build-env"
@@ -109,15 +110,33 @@ python copy_buildsystem () {
f.write(' "\n')
# Create local.conf
+ local_conf_whitelist = d.getVar('SDK_LOCAL_CONF_WHITELIST', True).split()
+ def handle_var(varname, origvalue, op, newlines):
+ if origvalue.strip().startswith('/') and not varname in local_conf_whitelist:
+ newlines.append('# Removed original setting of %s\n' % varname)
+ return None, op, 0, True
+ else:
+ return origvalue, op, 0, True
+ varlist = ['[^#=+ ]*']
+ builddir = d.getVar('TOPDIR', True)
+ with open(builddir + '/conf/local.conf', 'r') as f:
+ oldlines = f.readlines()
+ (updated, newlines) = bb.utils.edit_metadata(oldlines, varlist, handle_var)
+
with open(baseoutpath + '/conf/local.conf', 'w') as f:
f.write('# WARNING: this configuration has been automatically generated and in\n')
f.write('# most cases should not be edited. If you need more flexibility than\n')
f.write('# this configuration provides, it is strongly suggested that you set\n')
f.write('# up a proper instance of the full build system and use that instead.\n\n')
+ for line in newlines:
+ f.write(line)
f.write('INHERIT += "%s"\n\n' % 'uninative')
f.write('CONF_VERSION = "%s"\n\n' % d.getVar('CONF_VERSION', False))
+ # Some classes are not suitable for SDK, remove them from INHERIT
+ f.write('INHERIT_remove = "%s"\n' % d.getVar('SDK_INHERIT_BLACKLIST'))
+
# This is a bit of a hack, but we really don't want these dependencies
# (we're including them in the SDK as nativesdk- versions instead)
f.write('POKYQEMUDEPS_forcevariable = ""\n\n')
@@ -134,8 +153,6 @@ python copy_buildsystem () {
# Ensure locked sstate cache objects are re-used without error
f.write('SIGGEN_LOCKEDSIGS_CHECK_LEVEL = "warn"\n\n')
- for varname in d.getVar('SDK_META_CONF_WHITELIST', True).split():
- f.write('%s = "%s"\n' % (varname, d.getVar(varname, True)))
f.write('require conf/locked-sigs.inc\n')
f.write('require conf/work-config.inc\n')