加载中…
个人资料
峯挚
峯挚
  • 博客等级:
  • 博客积分:0
  • 博客访问:13,236
  • 关注人气:1
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

BitBake元数据文件类别

(2019-12-16 10:13:07)
标签:

it

分类: 笔记
BitBake元数据文件被划分成2大类文件:配置文件、菜谱文件。

一,配置文件
配置文件包含简单变量赋值形式的全局构建系统设置。BitBake在全局数据字典中维护变量设定,并且它们可以在任何元数据文件中被访问到。变量可以被设置在配置文件中并且被另外的配置文件覆盖。菜谱可以设置和覆盖变量,但是在菜谱中所做的赋值对于菜谱来说仍然是本地的。BitBake对于赋值元数据变量采用了特殊的语法。赋值和覆盖元数据变量的优先级由多个因素决定,例如层结构、层优先级,文件解析顺序以及赋值语法。
BitBake区分多个不同类型的配置文件,但是都有相同的文件扩展名.conf。

BitBake主配置文件(bitbake.conf)
BitBake的主要配置文件被命名为bitbake.conf。BitBake期望这个文件存在于他的元数据搜索路径下列出的所有目录中。这个文件包含所有默认配置设置。其他配置文件和菜谱通常根据它们的特定需求而覆盖这个文件中的一些变量设置。
文件bitbake.conf是OpenEmbedded核心元数据层的部分,并且可以在那个层的conf配置文件子目录中找到。

层配置文件(layer.conf)
OpenEmbedded构建系统使用层来组织元数据。层本质上是目录和文件的层级结构。每个层有自己名字为layer.conf的配置文件。这个文件包含了针对这个层的菜谱文件的路径设置和文件模式。文件layer.conf可以在层的conf子目录中找到。

构建环境层配置(bblayers.conf)
构建环境需要告诉BitBake它需要什么层来针对它的构建过程。文件bblayers.conf提供BitBake关于什么层要包含在构建过程中以及哪里找到文件路径的信息。每个构建环境有自己的bblayers.conf文件,它可以在构建环境的conf子目录中找到。

构建环境配置(local.conf)
构建环境的本地配置是通过名为local.conf的配置来提供的。文件local.conf包含应用到特定构建环境的设置,例如到下载位置、构建输出和其他文件的路径;针对目标系统的配置设置,例如目标机器、包管理系统以及分发策略;和许多其他设置。文件local.conf可以在构建环境的conf子目录中找到。

发行版配置(.conf)
发行版配置文件包含反映应用到有OpenEmbedded构建系统构建的特殊发行版的策略的变量设置。对于Poky参考发行版,默认的镜像名字也是Poky,它的配置设置包含在名为poky.conf的文件中。发行版策略设置通常包含工具链、C库和发行版名字等。发行版通过设置在构建环境中的local.conf文件中的DISTRO来被选择。当然,不限于由Poky作为参考所提供的发行版策略。你可以创建你自己的发行版策略文件并且在构建环境中使用它。
发行版配置文件通常定义在发行版的层(例如meta-yocto层)的conf/distro子目录中找到。

机器配置(.conf)
OpenEmbedded工作流最强力的特性之一是它能够严格区分构建过程中依赖于特殊硬件系统、机器和其架构的部分和不依赖的部分。这种能力极大地简化了板支持包的创建,允许它们仅仅提供依赖于硬件的必要部分、并补充构建系统的机器独立部分。因此,对另外机器构建相同的Linux发行版是如同用另一个板支持包替换板支持包一样简单的。
这个架构的主要部分有机器配置文件组成,该文件包含由构建许岙机器特定适配的软件包的菜谱引用的机器相关性的变量设置。机器配置文件是以机器命名的,并且可以在板支持包层的conf/machine子目录中找到。

二,菜谱
BitBake菜谱形成构建系统的核心,因为它们定义针对软件包的工作流。菜谱包含用于BitBake的关于如何通过实施(获取、解压、补丁、配置、构建、安装、打包)过程步骤而构建特定软件包的指令。BitBake菜谱以它们的.bb文件扩展名标识。
菜谱包含简单的变量赋值和以可执行元数据(executable metadata)形式存在的构建指令,构建指令本质上是执行过程步骤的函数。
与配置文件相反,所有在菜谱中做出的变量赋值都是仅仅本地于菜谱的。虽然菜谱通常引用在配置文件中做出的变量设置并且有时为了它们的目的而覆盖变量设置,但是所有的设置都是保持本地于菜谱的。
许多软件包以很相似的方式被构建出来的,这种方式使用遵循相同过程步骤的几乎相同的构建指令。在调整仅仅一些特定于软件包的部分时重复性地赋值相同的菜谱将导致大量多余的努力。因此,BitBake提供了类的概念——一种简单的允许菜谱可以容易地在通用工作流中共享的继承机制。类可以被任何BitBake层所定义并且被它们的.bbclass文件扩展所识别出来。
另外的针对菜谱、促进重用的BitBake机制是追加文件(append files)——通过它们的.bbappend文件扩展而被识别出来。追加文件通常由构建在其他层智商的层根据针对它们的特殊需求来优化那些层中包含的菜谱。大部分情况下,它们会覆盖变量设置或者修改变量设置。追加文件拥有和从其他它们正在追加的层来的核心菜谱相同的基础文件名。

菜谱文件(.bb)
菜谱包含描述特定软件包以及如何构建改软件包的元数据。菜谱通常提供任务形式的,带有用于下载、解压、打补丁、编译、打包和安装软件包的指令的可执行元数据。

类文件(.bbclass)
类文件提供一种简单的、用于菜谱共享相同构建指令的继承机制。BitBake在层的classes子目录中搜索类文件。菜谱可以通过使用inherit指令,用类文件的名字引用它们来包含类文件。类是全局的,这意味着,位于层中的菜谱可以从构建环境包含任何其他层中的继承类。

追加文件(.bbapped)
追加文件是菜谱文件的扩展。通常,层使用追加文件来扩展包含在其他层中的菜谱。追加文件必须拥有和它所扩展的菜谱相同的基名称,但其是.bbapped后缀而不是.bb后缀。追加文件也必须要有和它正在追加的菜谱相同的相对于层的根目录的路径。追加文件要么增加额外的元数据要么修改定义在菜谱中的元数据。追加文件的内容是逐字追加到原始菜谱的。如果来自不同层的追加文件追加相同的菜谱,那么层的优先级决定BitBake以何种顺序追加文件到菜谱。

包含文件(.inc)
通过使用include和require指令,任何元数据文件可以包含其他文件。包含文件通常提供多个元数据文件共享的元数据。包含文件的内容被插入到正在包含的元数据文件的各个指令所在的位置。这当然承担着原型夹杂的风险,BitBake会检测并对这种情况作出警告。文件包含不限于相同的层,但是层中的菜谱可以包含来自另一层的文件。.inc文件后缀是完全惯例的。一个元数据文件可以包含任何其他元数据文件;然后,包含可执行元数据的文件可能仅仅被菜谱、追加文件和类所包含。

BitBake在启动后立即解析元数据文件并创建元数据缓存。这个缓存本质上是BitBake的元数据字典的持久形式。只要元数据没有变化,BitBake从缓存中读取它会极大地减少启动时间。

0

阅读 收藏 禁止转载 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有