summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBruce Ashfield <bruce.ashfield@windriver.com>2018-06-06 22:07:26 -0400
committerRichard Purdie <richard.purdie@linuxfoundation.org>2018-06-12 23:34:24 +0100
commit81e8a52e8e40e47c34f900db5d73e69ffc25f5d0 (patch)
treef99d903fe6625c862fc1464ce4f490059985e2ff
parente52755c23c8be659f83014902df7b830dc703bb7 (diff)
downloadpoky-81e8a52e8e40e47c34f900db5d73e69ffc25f5d0.tar.gz
kernel: specify dependencies for compilation for config tasks
With recent kernels (i.e. 4.17+) the configuration phase of the kernel will check for capabilities/options of the compiler for CVE and other mitigation support. For a general kernel, we want to ensure that CC is fully defined when the config targets are invoked (so the proper compiler will be checked). For linux-yocto, we also need to specify the compiler/tools dependencies for the configme task since it executes before configure and hence the main kernel build DEPENDS will not always be in the sysroot before it executes. Without those dependencies the kernel will be incorrectly configured (i.e. bison is missing) or the configuration will fail the mitigation tests. [YOCTO #12757] (From OE-Core rev: ff1bdd75d50f0ebac3d599e461685ace29559a82) Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes/kernel-yocto.bbclass5
-rw-r--r--meta/classes/kernel.bbclass2
2 files changed, 5 insertions, 2 deletions
diff --git a/meta/classes/kernel-yocto.bbclass b/meta/classes/kernel-yocto.bbclass
index 4ac3a39e47..82d80741a9 100644
--- a/meta/classes/kernel-yocto.bbclass
+++ b/meta/classes/kernel-yocto.bbclass
@@ -275,6 +275,9 @@ addtask kernel_metadata after do_validate_branches do_unpack before do_patch
275do_kernel_metadata[depends] = "kern-tools-native:do_populate_sysroot" 275do_kernel_metadata[depends] = "kern-tools-native:do_populate_sysroot"
276do_validate_branches[depends] = "kern-tools-native:do_populate_sysroot" 276do_validate_branches[depends] = "kern-tools-native:do_populate_sysroot"
277 277
278do_kernel_configme[depends] += "virtual/${TARGET_PREFIX}binutils:do_populate_sysroot"
279do_kernel_configme[depends] += "virtual/${TARGET_PREFIX}gcc:do_populate_sysroot"
280do_kernel_configme[depends] += "bc-native:do_populate_sysroot bison-native:do_populate_sysroot"
278do_kernel_configme[dirs] += "${S} ${B}" 281do_kernel_configme[dirs] += "${S} ${B}"
279do_kernel_configme() { 282do_kernel_configme() {
280 set +e 283 set +e
@@ -304,7 +307,7 @@ do_kernel_configme() {
304 bbfatal_log "Could not find configuration queue (${meta_dir}/config.queue)" 307 bbfatal_log "Could not find configuration queue (${meta_dir}/config.queue)"
305 fi 308 fi
306 309
307 CFLAGS="${CFLAGS} ${TOOLCHAIN_OPTIONS}" ARCH=${ARCH} merge_config.sh -O ${B} ${config_flags} ${configs} > ${meta_dir}/cfg/merge_config_build.log 2>&1 310 CFLAGS="${CFLAGS} ${TOOLCHAIN_OPTIONS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" HOSTCPP="${BUILD_CPP}" CC="${KERNEL_CC}" ARCH=${ARCH} merge_config.sh -O ${B} ${config_flags} ${configs} > ${meta_dir}/cfg/merge_config_build.log 2>&1
308 if [ $? -ne 0 ]; then 311 if [ $? -ne 0 ]; then
309 bbfatal_log "Could not configure ${KMACHINE}-${LINUX_KERNEL_TYPE}" 312 bbfatal_log "Could not configure ${KMACHINE}-${LINUX_KERNEL_TYPE}"
310 fi 313 fi
diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
index 68d218584a..972ac52814 100644
--- a/meta/classes/kernel.bbclass
+++ b/meta/classes/kernel.bbclass
@@ -494,7 +494,7 @@ sysroot_stage_all () {
494 : 494 :
495} 495}
496 496
497KERNEL_CONFIG_COMMAND ?= "oe_runmake_call -C ${S} O=${B} oldnoconfig" 497KERNEL_CONFIG_COMMAND ?= "oe_runmake_call -C ${S} CC="${KERNEL_CC}" O=${B} oldnoconfig"
498 498
499python check_oldest_kernel() { 499python check_oldest_kernel() {
500 oldest_kernel = d.getVar('OLDEST_KERNEL') 500 oldest_kernel = d.getVar('OLDEST_KERNEL')