bitbake介绍
从根本上说,BitBake是一个通用的任务执行引擎,允许shell和Python任务在复杂的任务间依赖性约束下高效并行运行。 BitBake的主要用户之一OpenEmbedded,使用这个核心,并使用面向任务的方法构建嵌入式Linux软件堆栈。
从概念上讲,BitBake在某些方面与GNU Make类似,但有明显的区别:
BitBake根据提供的元数据来执行任务,从而构建任务。元数据存储在配方(.bb),配置(.conf)和类(.bbclass)文件中,并为BitBake提供有关运行什么任务和这些任务之间的依赖关系的说明。
BitBake包括用于从各种地方(如源控制系统或网站)获取源代码的获取程序库。
要构建的每个单元的指令(例如,一段软件)被称为配方文件,并且包含关于单元的所有信息(依赖性,源文件位置,校验和,描述等)。
BitBake包括客户端/服务器抽象,可以从命令行使用或用作XMLRPC上的服务,并具有几个不同的用户界面。
BitBake最初是OpenEmbedded项目的一部分。它受到了Gentoo Linux发行版所使用的Portage包管理系统的启发。 2004年12月7日,OpenEmbedded项目团队成员Chris Larson将项目分为两个独特的部分:
BitBake,一个通用任务执行器
OpenEmbedded,由BitBake使用的元数据集
今天,BitBake是OpenEmbedded项目的主要基础,该项目用于构建和维护Linux发行版,例如Angstrom Distribution,并用作Linux项目(如Yocto项目)的构建工具。
在BitBake之前,没有其他构建工具能够充分满足有抱负的嵌入式Linux发行版的需求。传统桌面Linux发行版使用的所有构建系统都缺少重要的功能,并且在嵌入式空间中流行的特定基于Buildroot的系统都不是可扩展或可维护的。
BitBake的一些重要的原始目标是:
处理交叉编译。
处理包间依赖性(在目标体系结构上构建时间,在本机体系结构上构建时间,以及运行时)。
支持在给定包中运行任意数量的任务,包括但不限于获取上游源,解包,修补它们,配置它们等。
对于构建系统和目标系统,Linux发行版都是不可知的。
是架构不可知。
支持多个构建和目标操作系统(例如Cygwin,BSD等)。
是自包含的,而不是紧密集成到构建机器的根文件系统。
处理目标体系结构,操作系统,分发和机器上的条件元数据。
易于使用工具提供本地元数据和包,以便操作。
易于使用BitBake协作多个项目之间的他们的构建。
提供在许多包之间共享公共元数据的继承机制。
随着时间的推移,显然需要一些进一步的要求:
处理基本配方的变体(例如native,sdk和multilib)。
将元数据拆分为图层,并允许图层相互覆盖。
允许将给定的一组输入变量表示为任务作为校验和。基于该校验和,允许使用预构建组件加速构建。
BitBake满足所有原始的要求,并且更多的扩展是对基本功能的扩展,以反映额外的要求。灵活性和权力一直是优先事项。 BitBake是高度可扩展的,支持嵌入式Python代码和任意任务的执行。