7 Yocto Project Compatible
7 简介
OpenEmbedded 引入层之后,人们很快发现:有些层广受欢迎且运行良好, 另一些层却经常出问题。后者往往不能与其他层良好协作, 并假定自己控制最终输出的所有方面。这通常不是有意为之, 而是因为开发者与最终用户关注的目标不同。 例如,开发者可能只关注公司的 BSP, 而用户希望把这个 BSP 集成到产品中。
针对这些模式及层间摩擦,项目设立了 “Yocto Project Compatible” 标识计划,
用来标记遵循已知最佳实践、能够与其他层广泛兼容的层。
计划包含一组以“是/否”回答的问题,由层的维护者声明是否满足相关标准。
第二版计划还加入了 yocto-check-layer 脚本,
使验证更容易、更清晰。该脚本位于 OpenEmbedded-Core (OE-Core) 中。
7 益处
Yocto Project 层模型 功能强大且灵活, 允许用户修改系统几乎任何方面,但这种能力也伴随着责任。 Yocto 项目希望用户能够把 BSP、发行版配置和软件栈自由组合,并成功集成。 项目逐渐总结出了有助于层协同工作的特征, 也发现了一些会妨碍协作的“反模式”。
兼容性计划的目标很明确:通过兼容性测试的层被视为行为规范, 应能与其他兼容层良好配合。
不同用户和成员都能从兼容性中获益。从硬件角度, 即 BSP 层 的角度看, 兼容性让硬件能够用于不同产品和场景,而不会影响与之一起运行的软件栈。 对于产品开发企业,兼容性提供了可写入合同的规范或标准, 帮助确保层具备所需的互操作性。 它还限制了一个代码库对系统其他部分的侵入, 使来自不同硬件厂商、服务于不同产品线的多个硬件支持层能够共存。 这也有利于有关各方在产品生命周期内,为安全目的升级系统组件。
7 验证一个层
标识面向 Yocto 项目成员提供,属于成员权益; 非商业运营的开源项目也可以申请。不过,任何人都可以回答问题并运行检查脚本。
项目鼓励所有层维护者对照问题和脚本输出检查自己的层, 因为某些层的组织方式可能产生意料之外的影响。 这些问题和脚本旨在揭示已知且通常容易修复的问题, 从而让层更容易使用,并得到更广泛采用。
随着新的最佳实践与互操作性问题被发现,测试也会持续演进。 如果发现这两类情况,请通过 技术会议、 邮件列表, 或 技术指导委员会(TSC) 告知项目。 TSC 负责制定这一计划使用的技术标准。
层分为三种类型:
BSP 或硬件支持层 为特定硬件提供支持,包括内核和引导加载程序配置, 以及硬件所需的固件或内核模块配方。通常对应一个 MACHINE 设置。
发行版层 提供配置选项和策略,例如初始化系统的选择、编译器与优化选项, 以及软件组件的配置与选择。通常对应一个 DISTRO 设置。
软件层通常提供配方,可以面向特定图形界面或软件栈组件。
计划鼓励的主要最佳实践包括:
明确说明层的维护者,以及补丁和缺陷报告应发送给谁。
如果层同时提供多类功能,应在内部拆分为子层。 因为部分用户可能只需要其中一类功能,可分离性是一项重要实践。
仅仅把层加入构建不应改变构建结果,除非用户修改配置来启用该层, 例如选择相应的 MACHINE、DISTRO 或 DISTRO_FEATURES。
如果不支持常见核心功能,应明确记录。例如,调试符号被禁用或缺失, 开发头文件和目标端库的使用可能无效,或者 SDK/eSDK 等功能预期无法工作。
项目会在 Autobuilder 上 测试核心项目各层的兼容性。
兼容性申请的正式表单位于 https://www.yoctoproject.org/ecosystem/branding/compatible-registration/。 申请成功后,可以展示获得的标识。