[OE-core] [PATCH] kernel-yocto: do_kernel_configme: Fix silent sysroot poisoning error

Bruce Ashfield bruce.ashfield at gmail.com
Mon Aug 29 14:46:50 UTC 2016


On Mon, Aug 29, 2016 at 10:05 AM, Ioan-Adrian Ratiu <adrian.ratiu at ni.com>
wrote:

> On Mon, 29 Aug 2016, Bruce Ashfield <bruce.ashfield at gmail.com> wrote:
> > On Mon, Aug 29, 2016 at 5:19 AM, Ioan-Adrian Ratiu <adrian.ratiu at ni.com>
> > wrote:
> >
> >> 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.
> >
> >
> > That's not what it does ... but that isn't important.
> >
> >
> >>
> >> 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 just means that we are missing a dependency. Everything that
> > merge_config
> > needs should be already in place before it runs, i.e. do_kernel_metadata
> > should
> > have already run and built any host tools that it needs.
> >
> > How are you managing to trigger this error ? I've done plenty of builds,
> > and haven't
> > seen this one before.
>
> Maybe some context is in order for how I build the kernel. I'm using a
> custom kernel recipe which inherits from linux-yocto.inc. My kernel
> tree contains a defconfig which is passed to OE in my kernel recipe
> using KBUILD_DEFCONFIG and KCONFIG_MODE="--alldefconfig".
>

And that would be the difference, which is what I was looking for. The tools
are always built for the linux-yocto path, hence why I can never reproduce
the issue.

I can take the kernel-yocto patch and queue it, but I'm going to leave
merge_config
untouched, since that change can go via the kernel path.

Bruce


>
> I have no configuration fragments.
>
> As expected I need the merge_configs script to automatically fill in any
> missing CONFIG symbols before building the kernel and this is where it
> fails because the sysroot is poisoned since 2014.
>
> >
> > Bruce
> >
> >
> >>
> >> 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 at 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
> >>
> >>
> >
> >
> > --
> > "Thou shalt not follow the NULL pointer, for chaos and madness await thee
> > at its end"
>



-- 
"Thou shalt not follow the NULL pointer, for chaos and madness await thee
at its end"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20160829/1ddedfff/attachment-0002.html>


More information about the Openembedded-core mailing list