[yocto] architecture mismatch during kernel build (40 to 3)

Bruce Ashfield bruce.ashfield at windriver.com
Tue Nov 5 18:50:47 PST 2013


On 13-11-05 8:08 PM, Maxwell Bottiger wrote:
> Turns out this is a phantom error.  Instead of building mkimage, I had
> accidentally added it to my git master branch, but deleted it from my
> local copy.  I didn't see it for the longest time, but the whole project
> compiled correctly as soon as I removed the binary from the git repo.
>

Fantastic. I was poking around in my ARM and powerpc builds today, and
couldn't for the life of me see how you managed to build mkimage as
part of a typical build.

I had a half composed email asking for details .. it seems I don't have
to send it now :)

Bruce

> Woops.
>
> -Max
>
>
>
>
> On Tue, Nov 5, 2013 at 12:46 PM, Maxwell Bottiger
> <sleepylight at jive-turkey.net <mailto:sleepylight at jive-turkey.net>> wrote:
>
>     Ok.  so, I should backtrack a bit, just so I understand the issue
>     completely.  This is my first time putting together a bitbake
>     recipe, and the kernel is a complex little beastie.
>
>     BTW, I'm building for an Atmel ARM cpu.  Sorry didn't mention that
>     in my first message.
>
>     So, when I was building my kernel by hand, here's what I was doing:
>     make ARCH=arm at91sam9x5ek_defconfig
>     make ARCH=arm menuconfig
>     make ARCH=arm
>     ./mkimage -A arm -O linux -C none -T kernel -a 20008000 -e 20008000
>     -n linux-2.6 -d arch/arm/boot/zImage uImage-2.6.39-at91sam9x5ek.bin
>
>     I took the .config file that I'd been using and placed it in
>     depconfig, then added a line to my bb file to include that
>     configuration.  So, that's good I think.
>
>     When the compile is complete, I should have an arm zImage, and
>     mkimage should run against that.  So, my understanding would be that
>     mkimage should be an x86 executable, and the kernel should be an
>     arm, and mkimage should generate a uImage kernel.  So, the complaint
>     from do_package that the executables are different architectures
>     makes sense.
>
>     Bruce, I think what you're recommending I do is remove mkImage after
>     the compile and image creation are complete but before packaging
>     takes place, as that's where the QA is complaining.  (Which makes a
>     lot of sense)  I just want to list the details so I'm sure I
>     understand the problem completely.
>
>     To this end I've added a do_install_append to the end of my recipe
>     to remove the mkImage file.  I tried it a couple of different times,
>     but it looks like I'm seeing the same error message each time.  I
>     think the issue is I just don't understand the bb process well
>     enough.  Maybe I'm trying to delete the file at the wrong stage, or
>     maybe there's something system specific I don't know about.  I
>     copied the guts of this recipe from a linux-yocto-custom_3.6 bb
>     file, which compiled cleanly for this chip.  I'll list the bb recipe
>     below.  Any advice is greatly appreciated.
>
>     linux-yocto-custom_2.6.39.bb <http://linux-yocto-custom_2.6.39.bb>
>     -------------------------------------
>     inherit kernel
>     require recipes-kernel/linux/linux-yocto.inc
>
>     LICENSE = "GPLv2"
>     LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
>     #DEFAULT_PREFERENCE = "-1"
>
>
>     LINUX_VERSION = "2.6.39"
>     LINUX_VERSION_EXTENSION ?= "-custom"
>     KBRANCH = "master"
>     META = "meta"
>
>
>     SRC_URI =
>     "git:///home/blah/blah/blah/linux-2.6.39;protocol=file;branch=master"
>     SRC_URI += "file://defconfig"
>     #SRC_URI += "file://extra-cflags-override.patch"
>
>     KERNEL_EXTRA_ARGS="LOADADDR=0x2000000  V=1
>     KCFLAGS=-mno-unaligned-access"
>
>
>     UBOOT_ENTRYPOINT="2000000"
>
>     SRCREV="master"
>
>
>     PV = "${LINUX_VERSION}"
>
>     PR = "r1"
>
>     S = "${WORKDIR}/git"
>     EXTRA_OEMAKE = "${PARALLEL_MAKE}"
>
>     KERNEL_IMAGETYPE = "uImage"
>
>
>     # Override COMPATIBLE_MACHINE to include your machine in a bbappend
>     # file. Leaving it empty here ensures an early explicit build failure.
>     #COMPATIBLE_MACHINE = "(xo1-mvs)"
>     COMPATIBLE_MACHINE = "(sama5d3xek|at91sam9x5ek)"
>
>     # clean up after module installation
>     do_install_append() {
>          rm -f mkimage
>
>     }
>
>
>     On Mon, Nov 4, 2013 at 11:28 PM, Bruce Ashfield
>     <bruce.ashfield at windriver.com <mailto:bruce.ashfield at windriver.com>>
>     wrote:
>
>         On 13-11-04 8:41 PM, Maxwell Bottiger wrote:
>
>             I'm building a custom kernel, and I think I'm nearly there.
>               I'm seeing
>             an error when running mkimage.  bitbake is complaining about an
>             architecure mismatch, but I don't know which files it is
>             comparing, or
>             if the mismatch really matters (32bit x86 vs 64bit x86 or
>             whatever)
>
>             Here's the error string:
>
>             WARNING: File '/usr/src/kernel/mkimage' from
>             linux-yocto-custom was
>             already stripped, this will prevent future debugging!
>
>             ERROR: QA Issue: Architecture did not match (40 to 3) on
>             /work/at91sam9x5ek-poky-linux-__gnueabi/linux-yocto-custom/2.__6.39-r1/packages-split/kernel-__dev/usr/src/kernel/mkimage
>
>
>         The obvious answer is .. it is mkimage that it is complaining
>         about. You
>         are packaging mkimage (which is likely an x86 elf file) into your
>         kernel-dev package (which is your target arch, likely powerpc or
>         ARM). Hence the QA error.
>
>         In your kernel recipe, you can remove the file before packaging
>         (i.e. in the do_install_append) or inhibit the QA check for your
>         recipe.
>
>         What exactly does your kernel recipe look like ? What is
>         building mkimage
>         and then getting it installed into /usr/src/kernel ?
>
>         My suggestion is to track that down, versus inhibiting the QA check.
>
>         Bruce
>
>
>             ERROR: QA run found fatal errors. Please consider fixing them.
>
>             ERROR: Function failed: do_package_qa
>
>             ERROR: Logfile of failure stored in:
>             /home/sleepylight/workspace/__yocto/poky/build-atmel/tmp/__work/at91sam9x5ek-poky-linux-__gnueabi/linux-yocto-custom/2.__6.39-r1/temp/log.do_package.__11527
>
>             ERROR: Task 18
>             (/home/sleepylight/workspace/__yocto/poky/meta-atmel/recipes-__kernel/linux/linux-yocto-__custom_2.6.39.bb
>             <http://linux-yocto-custom_2.6.39.bb>
>             <http://linux-yocto-custom_2.__6.39.bb
>             <http://linux-yocto-custom_2.6.39.bb>>, do_package) failed
>             with exit code '1'
>
>
>
>             I'm building on a 64 bit linux platform, I don't know if
>             that makes a
>             difference.
>
>             Thanks all.  I'm nearly there!
>
>             -Max
>
>
>             _________________________________________________
>             yocto mailing list
>             yocto at yoctoproject.org <mailto:yocto at yoctoproject.org>
>             https://lists.yoctoproject.__org/listinfo/yocto
>             <https://lists.yoctoproject.org/listinfo/yocto>
>
>
>
>
>
>
> _______________________________________________
> yocto mailing list
> yocto at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/yocto
>




More information about the yocto mailing list