25.12版本编译失败

用git clone拉的最新的manifest,里面是2512的版本

编译报错:

task.log报错如下:

环境信息

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

openUBMC 25.12 版本编译失败问题分析与解决方案

根据您提供的编译日志和环境信息,openUBMC 25.12 版本在构建过程中失败的根本原因是:flatc 命令未找到。该问题是由于 ai_engine 组件依赖的 flatbuffers 构建工具未正确安装或未纳入 Conan 依赖管理所致。


:magnifying_glass_tilted_left: 问题定位

主要错误日志分析:

/bin/sh: line 1: flatc: command not found
ERROR: ai_engine/1.100.5@openubmc/stable: Error in build_requirements() method, line 72
    ret = subprocess.run("flatc --version", shell=True, check=True)
CalledProcessError: Command 'flatc --version' returned non-zero exit status 127.

此错误表明:

  • 构建脚本尝试执行 flatc --version 来验证 flatbuffers 工具是否可用。
  • 系统中未安装 flatc,导致命令执行失败(退出码 127)。
  • 由于 ai_engine 组件的 build_requirements() 方法中调用了该命令,Conan 构建流程因此中断。

:books: 根本原因

ai_engine 组件依赖 flatbuffers 工具用于序列化数据处理,但该工具未被正确集成到 Conan 构建环境中。

尽管您的环境中已配置 Conan 远程仓库(如 https://conan.openubmc.cn/bmc_sdk.latest),但:

  • flatbuffers 未作为 Conan 包被自动安装。
  • 或者虽然 flatbuffers 的 Conan 包存在,但其 package_info() 方法未正确将 flatc 添加到 PATH 环境变量。
  • 当前执行的构建命令未触发 flatbuffers 工具包的下载和安装。

:white_check_mark: 依据来源:知识库中《构建工具管理》文档指出,像 flatbuffers 这类构建工具应通过 Conan 管理,并在 build_requires 中声明,确保构建时自动下载并注入环境变量。


:white_check_mark: 解决方案

方案一:通过 Conan 安装 flatbuffers 工具包(推荐)

确保 flatbuffers 已作为 Conan 构建依赖项注册到您的项目中。

步骤 1:确认远程仓库已配置

conan remote list

应包含至少以下远程:

openubmc_sdk: https://conan.openubmc.cn/bmc_sdk.latest
openubmcopensource: https://conan.openubmc.cn/openubmc_opensource

若未配置,请添加:

conan remote add openubmc_sdk https://conan.openubmc.cn/bmc_sdk.latest verify=False

步骤 2:构建并安装 flatbuffers Conan 包

参考《构建工具管理》文档中的示例:

bmcgo build -t dependencies -cp flatbuffers/2.0.0 --verbose

或使用 Conan 命令直接安装(如有预编译包):

conan install "flatbuffers/2.0.0@openubmc.dev/dev" -r openubmc_sdk --build=missing

:link: 说明:build_requires("flatbuffers/2.0.0@openubmc.dev/dev") 会自动将其 bin/ 目录加入 PATH,使 flatc 可被调用。


方案二:手动安装 flatbuffers(临时解决)

如果您暂时无法通过 Conan 安装,可手动安装 flatc

1. 安装依赖

sudo apt update
sudo apt install -y cmake g++ git

2. 编译并安装 flatbuffers

git clone https://github.com/google/flatbuffers.git
cd flatbuffers
cmake -G "Unix Makefiles"
make
sudo make install

3. 验证安装

flatc --version

输出类似:

flatc version 2.0.0

:warning: 注意:手动安装可能会在未来版本中被 Conan 构建覆盖,建议最终仍改用 Conan 管理。


:hammer_and_wrench: 构建参数修正建议

您的构建命令中存在语法错误,可能导致 Conan 无法正确解析:

:cross_mark: 错误写法:

conan lock create -p=profile.luajit.ini ...

:white_check_mark: 正确写法(应为 -pr=,不是 -p=):

conan lock create -pr=profile.luajit.ini -pr:b profile.dt.ini ...

同时注意:

  • -s:build_type=Debug 应为 -s build_type=Debug
  • -o */*:module_sysvers=...module_sysvers 应为 module_symvers(拼写错误)

正确示例:

conan lock create . \
  -pr=profile.luajit.ini \
  -pr:b profile.dt.ini \
  -s build_type=Debug \
  -o firmware_mgmt/*:community_enable=True \
  -o vpd/*:board_name=openUBMC \
  -o fructrl/*:manufacture=True \
  -o chassis/*:manufacture=True \
  -o webui/*:energy_enabled=False \
  -o webui/*:webvnc_enabled=True \
  -o help/*:board_name=openUBMC \
  -o remote_console/*:webvnc_supported=True \
  -o nsm/*:webvnc_supported=True \
  -o bmc_time/*:manufacture=True \
  -o */*:enable_luajit=True \
  -o */*:module_symvers=1ee923e971f1cf759b9b1cf3df4fbd4182b1eb2d5f267ef64494e6ea0bf9b86 \
  --lockfile-out=openubmc.lock

:puzzle_piece: 其他潜在问题说明

问题 说明 建议
不能从 yaml 文件中获取到键值 tosupport/defauçt_fixed_version 键名拼写错误或配置缺失(defauçt 应为 default 检查 yaml 文件中的配置项命名一致性
WARN: 未配置 show_version 字段 非致命警告,不影响构建 建议补充 show_version 字段以完善版本展示
Conan 版本为 2.13.0 符合现代 Conan 要求 推荐保持更新至最新稳定版(如 2.24.0)

:white_check_mark: 总结

项目 内容
:small_orange_diamond: 核心问题 flatc 命令未找到,导致 ai_engine 构建失败
:small_orange_diamond: 根本原因 flatbuffers 构建工具未通过 Conan 正确安装
:small_orange_diamond: 推荐方案 使用 conan install "flatbuffers/2.0.0@openubmc.dev/dev" 安装工具
:small_orange_diamond: 辅助措施 修复构建命令中的参数拼写错误
:small_orange_diamond: 长期建议 所有构建工具均应 Conan 化,避免手动依赖

:white_check_mark: 验证成功条件
执行 conan lock create ... 前,能正常返回 flatc --version 输出,且无 command not found 错误。

请优先尝试 方案一,确保依赖统一由 Conan 管理,以提升构建可重现性与稳定性。

相关链接:

  1. 25.03 fructrl源码构建时出文件找不到的错
  2. 集成busybox修改manifest.yml后,在docker下执行bingo build报错
  3. BMC_studio一键出包失败
  4. 我按照“从零开始,玩转openUBMC”搭建环境,运行“bingo build”出如下错误:
  5. 签名包制作常见问题 | 文档中心 | openUBMC

根据你提供的日志截图,ai_engine组件编译失败,conanfile.py 72行报错,属于组件问题,单独构建这个组件试下可以成功吗。