Skip to contentSkip to conversation

Making recipes depend on specific layers

DISCUSSION Philip Balister 2 participants 2 messages Oct 5, 2012

lore
Share & tools
lore
#0 lore raw

I run into problems (typically with BSP layers) where I want the layer to build only against oe-core, but I also would like to have recipes that depend on other layers. Typically, a "complex" image that uses packages built from other layers.

Now, I could just make a shim layer that contains the recipes that depends on a larger set of layers, but this gets annoying.

What I'd like to do is provide a way for recipes to say they depend on other layers, but if that layer is not present, parsing should not fail. Obviously, attempting to build such a recipe would fail (with a suitable error message).

Richard showed me some Python I can use to do this, but I'd like to know if this seems useful to other people.

Obviously, switching layer sin and out can lead to madness, but I'd rather not try to protect the end user from every stupid thing they can do at the expense of making thing more complex from a shear number of layers view.

Philip

#1 lore raw

Hi,

Quoted 4 lines · Philip Balister

I run into problems (typically with BSP layers) where I want the layer to build only against oe-core, but I also would like to have recipes that depend on other layers. Typically, a "complex" image that uses packages built from other layers.

Not sure if I fully understood what you are trying to do, but I'd be worried about adding yet another dependency dimension to the system as a whole.

Regarding the problems with coexisting bsp layers, I eventually came to the conclusion that it's best to avoid parsing any irrelevant bsp layers altogether. The way we handle this in Guacamayo is to keep the bsp-related recipes in dedicated directories that can be easily BBMASKed out:

recipes-bsp/ti-appends: for recipes related to meta-ti recipes-bsp/rpi-appends: for recipes related to meta-raspberrypi

For each machine we support we then have a machine conf that looks like this (e.g., for beagleboard.conf):

  # source canonical beagleboard.conf from meta-ti
  require ../../../layers/meta-ti/conf/machine/beagleboard.conf

BBMASK .= "|.*/meta-raspberrypi|.*/recipes-bsp/rpi-appends"

Consequently for any given machine only a single bsp layer is ever parsed and the layers do not interfere with each other; this currently triggers a bitbake warning about no recipes being in the masked out layers, but other than does exactly what it is meant to.

Tomas