I want to add some layers fetch from upstream for a new machine (call it A) mainly just to use the machine A configure file, kernel and u-boot provided from those layers. However, the new layers have several bbappend files (with bb files as well) that the version is different with other machines' layers in my yocto project.
For example, machine A has its own gstreamer1.0_1.8.1.bb and bbappend file. Other machines are using gstreamer1.0_1.6.1.bb. What happens when I build the image for the other machine is that it builds the version 1.8.1 because Yocto will always look for the newest compatible version of package and build it. However, the gstreamer1.0_1.8.1.bbappend file is written specifically for machine A, does not apply to others and causing errors. Not only the gstreamer, there are more.
I got an idea like BBLAYERS_A += "new_layers \ ..."
in the bblayers.conf file, but unfortunately it does not work the way I want it to.
Another idea I have is like:
BBMASK_B = "new_layers \ ..."
BBMASK_C = "new_layers \ ..."
BBMASK_D = "new_layers \ ..."
BBMASK_E = "new_layers \ ..."
BBMASK_F = "new_layers \ ..."
BBMASK_G = "new_layers \ ..."
BBMASK_H = "new_layers \ ..."
BBMASK_I = "new_layers \ ..."
...
It doesn't look good to me and I doubt it won't work as well. I think the build procedure is to load the bblayers.conf file first, then the local.conf. Therefore, before knowing what machine it is going to build, the layers are deployed.
My question is how can I make those newly added layers that work with machine A only, but won't get used by the other machines.