On 10/15/19 2:03 PM, Davis Roman wrote:
Hi Joshua,

Thank you for replying.

Since my last email, I enabled BBMULTICONFIG and was able to build both 32bit and 64bit machine types successfully and so i have both packages available in their corresponding build folders.

build/tmp-imx6sxsabresd/deploy/rpm/imx6sxsabresd/kernel-4.14.98-r0.imx6sxsabresd.rpm
build/tmp-imx8mmevk/deploy/rpm/imx8mmevk/kernel-4.14.98-r0.imx8mmevk.rpm

I checked out mcdepends however I don't believe this helps me to do the last piece which is to pull the 64-bit kernel package into my 32-bit image. According to the yocto docs, mcdepends ensures that imageA is built only after imageB has finished building (or at least that's how I understand it).

The documentation might be a little misleading; mcdepends allows a *task* from one multiconfig to depend on a *task* from another. Using the image creation task (do_rootfs) is just an example.

I think one way to do what you want is write a recipe that mcdepends on the do_deploy task from the 64-bit kernel recipe, pulls the deployed kernel image, repackage it, and then install that recipe's package into the 32-bit rootfs. There might be other ways that someone knows about that would be better/cleaner, but that's what I would do.


In parallel, I'm studying a patch that was upstreamed in 2017 for adding support for multiple kernel packages (http://lists.openembedded.org/pipermail/openembedded-core/2017-October/143674.html) This appears to be in line with what I'm looking to do however the wrinkle is that I'm dealing with two kernels from two different machine types whereas the patch dealt with two kernels of the same machine type. I'm still trying to understand the implications of this. My feeling is that I need a hybrid approach of bbmulticonfig and the above patch for adding multiple kernel packages.

Ya, you might be able to do that if your new recipes looks like a kernel "flavor" described in that patch.... I'm not quite clear on what the advantage of doing that in this case would be; not that there isn't one to be had, I just can't see it with a cursory glance :).


Please let me know if you have any thoughts.

Thanks,

Davis

On Fri, Oct 4, 2019 at 10:59 PM Joshua Watt <jpewhac...@gmail.com <mailto:jpewhac...@gmail.com>> wrote:



    On Fri, Oct 4, 2019, 7:04 PM Davis Roman <davis.roma...@gmail.com
    <mailto:davis.roma...@gmail.com>> wrote:

        Hello,

        We're working on a Linux distro for two systems where one is
        based on
        NXP i.mx6(32-bit,armv7) and the other i.mx8(64-bit,armv8).

        I have two machine types defined in Yocto so individually I
        can build
        either one however our goal is to create a single distro that
        can run on both processors.

        So the idea is to use
        
BBMULTICONFIG(https://www.yoctoproject.org/docs/latest/ref-manual/ref-manual.html#var-BBMULTICONFIG)

        to build two separate images,

        1) a 32-bit distro for an i.mx6
        2) a 64-bit distro for an i.mx8

        and then finally, take the 32-bit distro and add the 64-bit
        kernel+modules and u-boot.

        ---------------------------------------
        |--------------------------------------|
        ||           32-bit rootfs            ||
        |--------------------------------------|
        |-----------------   ----------------- |
        || 32-bit kernel |   |  64-bit kernel ||
        |-----------------   ----------------- |
        |-----------------   ----------------- |
        || 32-bit u-boot |   |  64-bit u-boot ||
        |-----------------   ----------------- |
        ---------------------------------------
           i.mx6solo             i.mx8m mini

        We've already tried our existing 32-bit rootfs + 64-bit
        kernel/u-boot on the i.mx8 and the system runs.
        So in theory, it should just be a matter of getting yocto to
        assemble all the pieces together.

        I don't have much experience with BBMULTICONFIG so any ideas
        or comments on how to proceed would be appreciated.


    You are on the right track. Create two multiconfig files one for
    each machine, then user mcdepends
    
(https://www.yoctoproject.org/docs/current/mega-manual/mega-manual.html#dev-enabling-multiple-configuration-build-dependencies)
    to pull the 64 bit kernel, etc. into the 32 bit image.

    BBMULTICONFIG is used in local.conf to select which multiconfigs
    you want to enable. In your case it would have to list both of the
    ones that you define.


        Thank you,

        Davis
-- _______________________________________________
        yocto mailing list
        yocto@yoctoproject.org <mailto:yocto@yoctoproject.org>
        https://lists.yoctoproject.org/listinfo/yocto

--
_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto

Reply via email to