Preferring and providing recipes
Dependency is a relation between two things; one side can only be fulfilled if the other side exists. However, a dependency only specifies that some functionality or characteristic is needed to be fulfilled, not precisely how it must be fulfilled.
For example, when a recipe depends on A
, the first thought is that it depends on a recipe called A
. However, there are two possible ways to satisfy the dependency requirement of A
:
- A recipe called
A
- A recipe that provides a functionality or characteristic called
A
For a recipe to communicate to BitBake that it can fulfill a functionality or characteristic requirement, it must use the PROVIDES
keyword. A subtle consequence is that two or more recipes can deliver the same functionality or characteristic. We must inform BitBake which recipe should fulfill that requirement using the PREFERRED_PROVIDER
keyword.
So, if a recipe called foo_1.0.bb
depends on bar
, BitBake lists all recipes...