I want to know if there is an opportunity to create machine specific recipes just by file name in order that I have a similar layer structure like this:
\-> recipes-example
     \-> example
         \-> example_1.0.bb_machine1
         \-> example_1.0.bb_machine2
I have read almost the complete Yocto Documentation a while ago and thought I once stumbled over this opportunity to create machine specific recipes, but couldn't refind it.
Alternatives are also appreciated, however I know about the bash solutions like this example:
do_install() {
   case ${MACHINE} in
      < case statements [...] >
}
                No, there's no way to create machine-specific recipe just by their name.
Assuming there's only a few files / patches that differs, the most common way to do this would be to add the different files in a machine specific directory see e.g.:
\-> recipes-example
  \-> example
    \-> example
      \-> machine1
        \-> defconfig
        \-> mach1.patch
      \-> machine2
        \-> defconfig
    \-> defconfig
That would allow you to write things like: (Note that in my example, there's a generic defconfig file, and two machine specific ones. The correct one will automatically be chosen, due to MACHINEOVERRIDES)
SRC_URI += "file://defconfig"
SRC_URI_machine1 += "file://mach1.patch"
In this example, mach1.patch will only be applied for machine1.
If you need to do something special for a machine in e.g. the do_install, you could use:
do_install_append_machine1 () {
    do something here
}
UPDATE: (after graugans comment)
Yes, COMPATIBLE_MACHINE could also be used. One way would be to create example-mach1.bb, example-mach2.bb, and exampe-machs.bb Which would include a couple of lines such as:
PROVIDES += "virtual/example"
COMPATIBLE_MACHINE = "machine1"
and for `example-machs.bb"
PROVIDES += "virtual/example"
COMPATIBLE_MACHINE = "(machine3|machine4)"
In your image recipe, you then add IMAGE_INSTALL += "virtual/example".
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With