【优化建议】建议优化软件包依赖的关系 - 期望独立修改某个软件包并构建后可直接构建最终镜像

基于25.12版本适配新的网卡,遇到软件包版本不匹配的问题。

问题1:未指定依赖软件包的具体版本、bingo build默认下载最新的,但最新版本可能不兼容。

问题2:本地构建某个软件包,因为被依赖关系、传染本地构建诉求。

Step1:在component_drivers和vpd中增加csr和dd文件

  • 根据manifest的framework.yml和hardware.yml中对应版本号git checkout 对应tag代码。
  • 分别bingo build构建组件
  • 修改manifest的framework.yml和hardware.yml中component_drivers对应的user/channel为openubmc.dev/dev

Step2:构建manifest,遇到devmon中报出2个错误:

  • 2.1 component_drivers版本不一致:因为manifest使用的devmon的user/channel为openubmc/stable,devmon构建有检查component_drivers的user/channel是否与自己的一致。只能参照component_drivers,也把devmon/1.1.25 clone下来本地构建,但又遇到下面问题。
  • 2.2 构建devmon的最后link失败:因为其构建时下载的libmcpp是主干最新的、与devmon/1.1.25函数名称不匹配(一个老函数改名字了)。只能在devmon的mds/service.json配置中指定libmcpp的版本(参考manifest中libmcpp的版本)

最终修改的内容:

a:component_drivers的mds/service.json,指定libmcpp的版本号(原来的[>1.0.0]太笼统)

b:devmon的mds/service.json,指定libmcpp版本号(未明确指定libmcpp的版本号)

c:manifest的framework.yml和hardware.yml,指定component_drivers和devmon为openubmc.dev/dev(是否能够设置优先级关系:即使配置的openubmc/stable,也优先使用本地构建的openubmc.dev/dev)

问题1: 需要组件owner规划依赖版本依赖, 可以添加<x.y.z的约束。

问题2: 在组件构建的使用 bingo build --stage stable ,构建出的包即为pkg/version@openubmc/stable。 可以使用alias 简化命令。