public inbox for openembedded-core@lists.openembedded.org
 help / color / mirror / Atom feed
* [PATCH] kernel-yocto: do_kernel_configme: Fix silent sysroot poisoning error
@ 2016-08-29  9:19 Ioan-Adrian Ratiu
  2016-08-29 12:10 ` Bruce Ashfield
  0 siblings, 1 reply; 11+ messages in thread
From: Ioan-Adrian Ratiu @ 2016-08-29  9:19 UTC (permalink / raw)
  To: openembedded-core

do_kernel_configme calls merge_config.sh (installed in the sysroot by
the kern-tools-native recipe) which calls make to fill in any missing
symbols from the resulting merged config.

This errors out on my system because of sysroot poisoning [1]. Here is
a partial output from my .kernel-meta/cfg/merge_config_build.log (this
file is created in do_kernel_configme() while callig merge_config.sh):

make[1]: Entering directory '/media/adi/ssd/nilrt-master/build/tmp-glibc/work/x64-nilrt-linux/linux-nilrt/4.1+gitAUTOINC+a7e53ecc27-r0/linux-x64-standard-build'
  HOSTCC  scripts/basic/fixdep
/media/adi/ssd/nilrt-master/build/tmp-glibc/work-shared/x64/kernel-source/scripts/basic/fixdep.c:106:23: fatal error: sys/types.h: No such file or directory
compilation terminated.
make[2]: *** [/media/adi/ssd/nilrt-master/build/tmp-glibc/work-shared/x64/kernel-source/scripts/basic/Makefile:22: scripts/basic/x86_64-nilrt-linux-fixdep] Error 1

This issue is hard to debug because merge_config.sh does NOT check the
error output of its make call (this is added in the second patch) and
even though make errors out, the build continues as if nothing happened
and compiles a kernel with garbage configs (the .config generated by
do_kernel_configme is empty and gets filled later) which doesn't boot.

Adding $TOOLCHAIN_OPTIONS to $CFLAGS before calling merge_configs.sh
fixes the error because $TOOLCHAIN_OPTIONS defines the sysroot and make
uses it to correctly compile & fill all missing kernel config options.

[1] http://lists.openembedded.org/pipermail/openembedded-core/2014-October/098253.html

Signed-off-by: Ioan-Adrian Ratiu <adrian.ratiu@ni.com>
---
 meta/classes/kernel-yocto.bbclass | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/meta/classes/kernel-yocto.bbclass b/meta/classes/kernel-yocto.bbclass
index 8650e55..4397a9d 100644
--- a/meta/classes/kernel-yocto.bbclass
+++ b/meta/classes/kernel-yocto.bbclass
@@ -249,7 +249,7 @@ do_kernel_configme() {
 		bbfatal_log "Could not find configuration queue (${meta_dir}/config.queue)"
 	fi
 
-	ARCH=${ARCH} merge_config.sh -O ${B} ${config_flags} ${configs} > ${meta_dir}/cfg/merge_config_build.log 2>&1
+	CFLAGS="${CFLAGS} ${TOOLCHAIN_OPTIONS}"	ARCH=${ARCH} merge_config.sh -O ${B} ${config_flags} ${configs} > ${meta_dir}/cfg/merge_config_build.log 2>&1
 	if [ $? -ne 0 ]; then
 		bbfatal_log "Could not configure ${KMACHINE}-${LINUX_KERNEL_TYPE}"
 	fi
-- 
2.9.3



^ permalink raw reply related	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2016-08-29 15:39 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-08-29  9:19 [PATCH] kernel-yocto: do_kernel_configme: Fix silent sysroot poisoning error Ioan-Adrian Ratiu
2016-08-29 12:10 ` Bruce Ashfield
2016-08-29 13:14   ` Ioan-Adrian Ratiu
2016-08-29 13:23     ` Bruce Ashfield
2016-08-29 13:51       ` Ioan-Adrian Ratiu
2016-08-29 14:44         ` Bruce Ashfield
2016-08-29 14:05   ` Ioan-Adrian Ratiu
2016-08-29 14:46     ` Bruce Ashfield
2016-08-29 15:01       ` Bruce Ashfield
2016-08-29 15:34       ` Ioan-Adrian Ratiu
2016-08-29 15:39         ` Bruce Ashfield

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox