[yocto] One kernel tree, two BSP layers, two defconfigs. How to pickup the right one based on MACHINE value?

Daniel. danielhilst at gmail.com
Tue Dec 1 05:27:19 PST 2015


Hi Saul, thanks for your reply

2015-11-30 21:29 GMT-02:00 Saul Wold <saul.wold at intel.com>:
> On Mon, 2015-11-30 at 17:25 -0200, Daniel. wrote:
>> Hi,
>>
>> I have one kernel tree where I keep all my modules in-tree. Inside
>> kernel I have two FOO_defconfig and BAR_defconfig which are
>> configurations for FOO-board and BAR-board. On Yocto I have
>> core-layer, FOO-bsp layer and BAR-bsp layer. At core-layer I have
>> linux-custom.bb file which has the URI for kernel tree with a dummy
>> defconfig. At FOO-bsp and BAR-bsp a have a .bbappend that adds a
>> folder with the right defconfig for each board.
>>
>> My doubt is: I have two .bbappends, on two distinct layers being
>> applied at same time? Both layers are pointed at
>> build/conf/bblayers.conf.
>>
> So you are including both your BSP Layers in the bblayers, that will
> probably cause problems based on your description above.
>
> Another option is to look at using overrides and have 1 layer that
> supports both boards if they are similar and share other items.
>
>> How can I have sure to pick up the right defconfig at build time?
>>
>> I've tried to delete core-layer and have two kernel recipes with
>> distinct names, but Yocto complains about two recipes being selected
>> at same time for build (because of virtual/kernel feature or
>> something
>> alike). So I want to keep one kernel recipe and select the right
>> defconfig based on MACHINE value.
>>
> You can use PREFERRED_PROVIDER_virtual/kernel to have multiple
> alternate kernel present and set it in your <machine>.conf to select
> the kernel you want.
>
> If your kernel recipe does not inherit kernel.bbclass you will need to
> set PROVIDES
>
> You should also be sure to set COMPATIBLE_MACHINE for each machine
>
>> Both defconfig are present on arch/arm/configs. Can I overwrite
>> do_config()? Is that safe? About the .bbappends: Should be two
>> .bbappends on same .bb file be avoided?
>>
> You can use a do_config_prepend() to deal with moving the correct
> defconfig.
Yeah I'm doing that. As you suggested I removed the .bbappend files and
have one recipe that support both machines, the config prepend looks
like this:

do_configure_prepend() {
    case "${MACHINE}" in
        enlace-imx6)
        bbnote "Using csi_enlace_imx6_defconfig"
        cp -v ${S}/arch/arm/configs/csi_enlace_imx6_defconfig ${S}/defconfig
        ;;
    pharosserver-imx6)
            bbnote "Using csi_pharosserver_imx6_defconfig"
        cp -v ${S}/arch/arm/configs/csi_pharosserver_imx6_defconfig
${S}/defconfig
        ;;
    esac
}

Thanks again for the help,
>
> Honestly there are many ways you can make this work and even more to
> make is fail!
>
> Sau!
>
>>
>> Regards,
>> - dhs
>> --
>> "Do or do not. There is no try"
>>   Yoda Master

BR,
- dhs

-- 
"Do or do not. There is no try"
  Yoda Master



More information about the yocto mailing list