openUBMC 26.06 版本构建 1712 报错

问题描述

构建工具版本

# bingo -v
>> whoami
root
当前skill自动更新状态已关闭,如需开启请执行`bingo config skill.sync=true`
bingo 版本为: 0.8.7

问题现象

openUBMC 26.06 版本(含最新的main分支,commit 64f9850bbe0333ee70da29d12e7b7fef32a3ee24)构建 openUBMC_1712 报错。main 分支节点以及报错节选如下:


openUBMC 1712 构建报错.txt (144.9 KB)

初步分析

经排查,确认组件配置 libmcpp 在 openUBMC_1712 下的 manifest.yml 中不存在。具体如下图:
image

答案内容由AI生成,仅供参考:

四、结论

根据当前知识库,没有直接针对“libmcpp 在 openUBMC_1712 的 manifest.yml 中不存在”这一具体错误的修复命令

最可行的做法是:

  • 查看完整构建日志(例如 manifest/temp/log/task.log
  • 定位是哪一个任务或组件在构建时要求使用 libmcpp
  • 再决定是在 manifest.yml 中补充该组件配置,还是调整其他组件的依赖声明

如果问题依然无法解决,建议携带完整错误日志,在 openUBMC 社区论坛中发起讨论,以便获得更精确的定位和解决方案。

点击此处查看详细分析解答

根据知识库中现有的信息,针对您遇到的 openUBMC 26.06 构建 openUBMC_1712 报错,且初步定位为 libmcpp 组件在 openUBMC_1712 的 manifest.yml 中不存在 的问题,可以做如下综合分析:


一、相关背景信息

1. manifest.yml 的作用

根据知识库中的信息,manifest.yml 是 OpenUBMC 构建系统的中央配置文件,用于定义产品特定的设置、依赖关系和构建参数。它通常位于产品目录下:

  • 例如 build/product/BMC/openUBMCbuild/product/BMC/openUBMC_1712
  • 在 Hi1712 芯片构建指导中,也明确指出需要查看 manifest/build/product/BMC/openUBMC_1712 下的 manifest.yml 来确认产品配置。

同时,Manifest 系统整体负责:

  • 定义组件版本、依赖关系
  • 管理多产品、多子系统的构建配置
  • 维护版本一致性与构建完整性
  • bingo build 等构建命令的核心输入

2. libmcpp 组件简介

知识库中关于 libmcpp 的描述是:

  • 它是专为 openUBMC 项目设计的现代 C++ 开发框架
  • 提供反射系统、异常处理、日志系统、D-Bus 通信、共享内存数据库等能力
  • 主要面向嵌入式系统(尤其是 BMC 固件)和服务器应用程序开发
  • 是 openUBMC 组件体系中的一个组成部分,通常通过 Conan 包管理器集成

二、问题分析

  • 构建系统在解析产品配置时,依据 manifest.yml 来确定当前产品需要哪些组件及其版本。
  • 如果构建过程中某个环节需要 libmcpp,但 openUBMC_1712manifest.yml 中没有声明该组件,就可能导致依赖解析失败或构建任务报错。
  • 知识库中也提到了类似的构建失败原因,例如:
    • 版本冲突:不同组件要求不兼容的共享依赖版本
    • 组件版本与 manifest 不匹配
    • manifest 配置不完整或缺失关键项

结合您的初步分析——libmcppopenUBMC_1712 下的 manifest.yml 中不存在——可以推断,该问题大概率出在 产品级 manifest 配置与构建依赖之间的不一致上。


三、可以尝试的排查方向

根据知识库中社区用户的处理经验,以下方向可供参考:

  1. 检查 Hi1712 产品配置文件

    • 查看 manifest/build/product/BMC/openUBMC_1712/manifest.yml 的完整内容
    • 确认是否确实没有 libmcpp 相关配置
    • 比对其他可正常构建的产品(如 openUBMC)的 manifest.yml,看是否存在差异
  2. 核对 manifest 分支/版本对齐

    • 知识库中曾强调:特定软件版本必须与 manifest 及其配置正确对齐,才能成功构建
    • 建议确认当前 manifest 分支或版本是否与 openUBMC 26.06 配套
  3. 排查其他组件对 libmcpp 的引用

    • 如果 libmcpp 不是 1712 平台所需组件,但其他组件或构建脚本仍引用了它,则可能是依赖关系配置错误
    • 检查目标依赖、Conan 配置等是否存在版本或名称不匹配
  4. 参考社区类似问题的处理方式

    • 有社区用户在构建失败时,通过修改 manifest 中的组件选项(如注释掉某些帮助组件)解决了问题
    • 也有技术用户建议回滚 manifest 中的组件版本来排除故障
    • 这些方法可以结合您的实际错误日志尝试

四、结论

根据当前知识库,没有直接针对“libmcpp 在 openUBMC_1712 的 manifest.yml 中不存在”这一具体错误的修复命令

最可行的做法是:

  • 查看完整构建日志(例如 manifest/temp/log/task.log
  • 定位是哪一个任务或组件在构建时要求使用 libmcpp
  • 再决定是在 manifest.yml 中补充该组件配置,还是调整其他组件的依赖声明

如果问题依然无法解决,建议携带完整错误日志,在 openUBMC 社区论坛中发起讨论,以便获得更精确的定位和解决方案。

参考openUBMC产品下的manifest.yml,给openUBMC_1712产品下的manifest.yml配置libmcpp依赖

@yaoshun1 openUBMC

  1. 26.06 版本发布的时候没有验证过 openUBMC_1712 的固件会构建失败(必现问题)?
  2. 上述单点问题可以先配置 libmcpp 解决,但是是否还有哪些组件或者其他配置会导致构建失败?

能否提供一个全景的解决方案,而不是说配置一个单点的 libmcpp 组件。

目前1712还未纳入社区流水线每日构建流程,所以可能存在此问题,可在CICD SIG例会报相关议题提出此问题