用git clone拉的最新的manifest,里面是2512的版本
编译报错:
task.log报错如下:
环境信息
-
在Ubuntu 24.04中
-
bingo和conan版本如下:
答案内容由AI生成,仅供参考:
根据您提供的编译日志和环境信息,openUBMC 25.12 版本在构建过程中失败的根本原因是:flatc 命令未找到。该问题是由于 ai_engine 组件依赖的 flatbuffers 构建工具未正确安装或未纳入 Conan 依赖管理所致。
/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 构建流程因此中断。ai_engine 组件依赖 flatbuffers 工具用于序列化数据处理,但该工具未被正确集成到 Conan 构建环境中。
尽管您的环境中已配置 Conan 远程仓库(如 https://conan.openubmc.cn/bmc_sdk.latest),但:
flatbuffers 未作为 Conan 包被自动安装。flatbuffers 的 Conan 包存在,但其 package_info() 方法未正确将 flatc 添加到 PATH 环境变量。flatbuffers 工具包的下载和安装。
依据来源:知识库中《构建工具管理》文档指出,像
flatbuffers这类构建工具应通过 Conan 管理,并在build_requires中声明,确保构建时自动下载并注入环境变量。
flatbuffers 工具包(推荐)确保 flatbuffers 已作为 Conan 构建依赖项注册到您的项目中。
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
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
说明:
build_requires("flatbuffers/2.0.0@openubmc.dev/dev")会自动将其bin/目录加入 PATH,使flatc可被调用。
flatbuffers(临时解决)如果您暂时无法通过 Conan 安装,可手动安装 flatc。
sudo apt update
sudo apt install -y cmake g++ git
flatbuffersgit clone https://github.com/google/flatbuffers.git
cd flatbuffers
cmake -G "Unix Makefiles"
make
sudo make install
flatc --version
输出类似:
flatc version 2.0.0
注意:手动安装可能会在未来版本中被 Conan 构建覆盖,建议最终仍改用 Conan 管理。
您的构建命令中存在语法错误,可能导致 Conan 无法正确解析:
错误写法:
conan lock create -p=profile.luajit.ini ...
正确写法(应为 -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
| 问题 | 说明 | 建议 |
|---|---|---|
不能从 yaml 文件中获取到键值 tosupport/defauçt_fixed_version |
键名拼写错误或配置缺失(defauçt 应为 default) |
检查 yaml 文件中的配置项命名一致性 |
WARN: 未配置 show_version 字段 |
非致命警告,不影响构建 | 建议补充 show_version 字段以完善版本展示 |
| Conan 版本为 2.13.0 | 符合现代 Conan 要求 | 推荐保持更新至最新稳定版(如 2.24.0) |
| 项目 | 内容 |
|---|---|
flatc 命令未找到,导致 ai_engine 构建失败 |
|
flatbuffers 构建工具未通过 Conan 正确安装 |
|
使用 conan install "flatbuffers/2.0.0@openubmc.dev/dev" 安装工具 |
|
| 修复构建命令中的参数拼写错误 | |
| 所有构建工具均应 Conan 化,避免手动依赖 |
验证成功条件:
执行conan lock create ...前,能正常返回flatc --version输出,且无command not found错误。
请优先尝试 方案一,确保依赖统一由 Conan 管理,以提升构建可重现性与稳定性。
相关链接:
根据你提供的日志截图,ai_engine组件编译失败,conanfile.py 72行报错,属于组件问题,单独构建这个组件试下可以成功吗。