从源码阐述Bitbake Collections
时间:2007-10-16 来源:linuxGentoo
BBFILE_COLLECTIONS = "upstream local"
BBFILE_PATTERN_upstream = "^${OEDIR}/openembedded/packages/"
BBFILE_PATTERN_local = "^${LOCALDIR}/packages/"
BBFILE_PRIORITY_upstream = "5"
BBFILE_PRIORITY_local = "10"
官方OE有一个分支,这算成third party,我们自己需要开发自己的oe package,所以我们也需要一个分支,但是又不希望更改OE的分支,这也就是bitbake collections的来历吧 BBFILE_COLLECTIONS定义有多少个分支,这里有upstream和local BBFILE_PATTERN,为每个分支定义正则表达式, BBFILE_PRIORITY为每个分支定义优先级 我们来看源码
def handleCollections( self, collections ): |
传进来的参数就是BBFILE_COLLECTIONS 变量值,函数的主要功能就是为每个分支计算出正则表达式匹配和优先级,填充bbfile_config_priorities,比如如上面说定义的BBFILE_COLLECTIONS,
bbfile_config_priorities[(re.compile("^${OEDIR}/openembedded/packages/"),5),(re.compile("^${LOCALDIR}/packages/"),10)]
这就是这个函数的task
我们继续看如何计算每个bbfile 的priorities
def calc_bbfile_priority(filename):
for (regex, pri) in self.status.bbfile_config_priorities:
if regex.match(filename):
return pri
return 0
每个bb文件,如果能够和bbfile_config_priorities里的正则表达式匹配,那么就赋予这个bb文件伴随的priorities