Search code examples
yoctobitbake

Wildcards in machine specific builds


Assumed I have those machines:

  • machine1a
  • machine1b
  • machine2

Is there a way to respond all machine1s at once?

For example in a *.bbappend file:

SRC_URI_machine1* += "file://file/for/machines/of/type/1"

instead of:

SRC_URI_machine1a += "file://file/for/machines/of/type/1"
SRC_URI_machine1b += "file://file/for/machines/of/type/1"

Solution

  • No,wildcards can't be used in such a way.

    You could handle it in a number of different way. One way is to add a common machine-override for your family of devices.

    One simple way to do this, is to add the following to the machine configurations of machine1a and machine1b (or a common include file).

    SOC_FAMILY = "machine1-common"
    include conf/machine/include/soc-family.inc
    

    By doing that, you could write

    SRC_URI_machine1-common += "file://file/for/machines/of/type/1"
    

    and that would apply to both machine1a and machine1b.

    What soc-family.inc does is

    # Add SOC_FAMILY to machine overrides so we get access to e.g. 'omap3' and 'ti335x'
    SOC_FAMILY ??= ""
    MACHINEOVERRIDES =. "${@['', '${SOC_FAMILY}:']['${SOC_FAMILY}' != '']}"
    

    If you're already using an SoC, whose BSP already uses SOC_FAMILY, you could instead add the following line to machine1a.conf and machine1b.conf

    MACHINEOVERRIDES =. "machine1-common:"