剖析bitbake/provider

在oe/bitbake中,有provider这一概念,意思是package提供一个东西,供别人使用,自己当然提供自身的provider,也就是说,比如一个package demo ,它默认提供的provider是 demo demo-pv demo-pv-pr
也可以多个package 提供一个provider,比如前面文章提到过的virtual,下面是源码主要解决的问题

多个package提供同一个provider,如何选择?

主要方法:
      如果多个package分布在不同的分支,那么选择优先级高的分支
      如果优先级高的分支,还有多个provider,如果没有PREFERRED_VERSION变量的话,那么就选择version最高的
      如果使用了PREFERRED_VERSION的话,如果符合PREFERRED_VERSION仍然有多个的话,那么返回1,选择优先级高的,如果找不到制定的VERSION,那么就忽略这个变量,并提示要求的VERSION无法满足