I am trying to build the kernel(v4.3) for a 32 bit architecture. I use a custom linux kernel recipe and do not use any defconfig file explicitly. I expect yocto to assume the right config file based on the MACHINE variable specified. The config file is generated by this command in the configme script: make ARCH=$KARCH O=$BUILD_DIR \ KBUILD_DEFCONFIG=../../../$META_DIR/cfg/$KTGT/$CFGFILE \ defconfig > $META_DIR/cfg/$KTGT/config.log 2>&1
In this case, KARCH is set to x86, which leads to the expansion of make ARCH=x86 defconfig, which takes the x86-64 defconfig, and thus gives an error while compiling. I also use a config fragment which has the configs required to build a particular test suite. On the other hand, when we build linux-yocto, the KARCH is set to i386, which results in make ARCH=i386 defconfig and a 32 bit config file. Hence ,there is no error. Is there some other way to ensure a 32 bit config is generated when a 32 bit MACHINE type is selected? -----Original Message----- From: Saul Wold [mailto:s...@linux.intel.com] Sent: Tuesday, January 5, 2016 9:45 PM To: Ashfield, Bruce (Wind River) <bruce.ashfi...@windriver.com>; Dey, Megha <megha....@intel.com>; linux-yocto@yoctoproject.org Cc: Ricardo Neri <ricardo.neri-calde...@linux.intel.com> Subject: Re: [linux-yocto] [PATCH] configme : Match KARCH onto kernel.org arch On Tue, 2016-01-05 at 23:16 -0500, Bruce Ashfield wrote: > On 2016-01-05 5:12 PM, Megha Dey wrote: > > When qemux86 is selected as MACHINE type, and a custom linux kernel > > is built, yocto assumes KARCH to be x86. This leads to a 64 bit > > config file getting generated instead of a 32 bit one. Hence, always > > make KARCH as i386 when a 32 bit MACHINE type is selected. > > > > Signed-off-by: Megha Dey <megha....@intel.com> > > --- > > tools/configme | 3 +++ > > 1 file changed, 3 insertions(+) > > > > diff --git a/tools/configme b/tools/configme index 903b3c1..9651280 > > 100755 > > --- a/tools/configme > > +++ b/tools/configme > > @@ -201,6 +201,9 @@ run_board_config() > > if [ $KARCH == "mips64" ]; then > > KARCH=mips > > fi > > + if [ $KARCH == "x86" ]; then > > + KARCH=i386 > > i386 is obsolete, and x86 should be used with the appropriate > 32 bit configs. > > I purged all i386 references quite some time ago, since they can > trigger other subtle errors. > > Can you elaborate on what exactly what you are building, and what > fragments are in play that a 64 bit kernel is being generated > incorrectly ? We always go out of our way to specify > 32 or 64 bit for that reason. > Is this similar to the problem that Jianxun encountered and sent a patch before the break to the OE-Core list http://lists.openembedded.org/pipermail/openembedded-core/2015-December /113708.html It looks very close, we are working on validating this patch with a lttng-modules failures first. Sau! > Bruce > > > + fi > > > > if [ -z "$BUILD_DIR" ]; then > > echo No build dir specified. Use \"-o\" to specify one. > > > -- _______________________________________________ linux-yocto mailing list linux-yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto