答案内容由AI生成,仅供参考:
六、总结与推荐配置表
| 项目 | 推荐配置 |
|---|---|
| Manifest 分支 | br_release_openUBMC2603_xxx |
| BMC SDK | bmc_sdk_26.03.zip 官方版本 |
| Conan Remote | openubmc_sdk, openubmc_dev, openubmc_opensource |
| Bingo 版本 | ≥ 0.6.121 |
| Conan 版本 | 2.13.0 或以上 |
| 构建命令 | bingo build -b openUBMC -r openubmc_dev |
| 必须配置 | tosupporte, show_version |
点击此处查看详细分析解答
OpenUBMC 26.03 编译报错问题分析与解决方案
根据您提供的详细日志信息和上下文数据,本文将全面分析 OpenUBMC 26.03 版本在构建过程中出现的编译错误,并提供系统化的解决路径。
一、主要问题概述
您的构建流程中出现了 KeyError: 'pwd' 错误,具体表现为:
snmp/1.100.5@openubmc/stable: Calling source() in /root/.conan2/p/snmp87eae35a538eb/s
ERROR: KeyError: 'pwd'
同时日志中还提示:
不能从 yaml 文件中获取到键值 tosupporte/default/fixed_version, 没有相关配置WARN: 未配置 show_version 字段
这表明构建环境、manifest.yml 配置文件与 SDK 版本之间存在不兼容或缺失配置项的问题。
该问题广泛存在于 OpenUBMC 26.03、25.12 等 Conan V2 构建环境中,是典型的“环境与 SDK 不匹配”或“Conan 源码构建阶段访问系统路径失败”的问题。
二、根本原因分析
结合知识图谱数据与搜索结果,此问题的根本原因如下:
1. KeyError: 'pwd' 是因错误触发了源码构建
- 理想情况:
snmp/1.100.5@openubmc/stable等组件应从远程 Conan 仓库直接下载二进制包。 - 实际错误流:由于某些依赖未命中,Conan 触发了
source()方法进行源码拉取,而该阶段脚本尝试执行os.getcwd()或使用pwd获取当前路径,但环境中cwd未正确设置,导致抛出KeyError: 'pwd'。
关联证据:社区多个用户报告相同错误(如搜索结果 ID 4、5、6),且均发生在 Conan2 的
source()阶段。文档指出:“本地仓有缓存为什么还是触发了源码构建?” → 表明缓存失效或远程配置错误。
2. BMC SDK 与 Manifest 版本不匹配
| 项目 | 当前使用 |
|---|---|
| Manifest 分支 | 26.03 |
| BMC SDK | bmc_sdk.zip(可能来自 marketplace) |
| Conan 远程仓库 | 多个历史 URL,配置混乱 |
重要提示:
BMC_SDK必须与manifest分支严格对应(如26.03SDK 对应manifest-26.03分支)。- 若 SDK 不匹配,则 Conan 缺少必要的闭源组件缓存(如
snmp,libmc4lua,account),从而强制进入源码构建流程,进而触发KeyError: 'pwd'。
根据知识图谱:
BMC_SDK是包含所有闭源组件(如 HI1711 工具链、安全模块)的核心包,缺失会导致构建失败。
3. tosupporte/default/fixed_version 配置缺失
日志提示:
不能从 yaml 文件中获取到键值 tosupporte/default/fixed_version, 没有相关配置
这表示 manifest.yml 文件中缺少关键字段:
tosupporte:
default:
fixed_version: "26.03.00.01"
code: "default"
此字段用于标识兼容性版本,尤其在开发测试阶段可暂时忽略,但不建议长期缺失。
源自官方文档与社区指南,见 doc chunk
7推荐配置。
三、完整解决方案步骤
步骤 1:清除旧构建环境(清理缓存)
# 清除 Conan V2 缓存(关键!)
rm -rf ~/.conan2/p/*
# 可选:彻底清理(谨慎操作)
conan remove "*" -c
官方建议:长时间构建失败时,清除
.conan2/p/*是首要操作,避免旧缓存污染新流程。
步骤 2:确认并使用匹配的 BMC SDK
确保:
- 使用 官网发布 的
bmc_sdk_26.03.zip,而非旧版或任意来源的 SDK。 - 下载地址应为:
https://conan.openubmc.cn/bmc_sdk_latest或openubmc.cn/marketplace/bmc_sdk
操作命令:
# 删除旧 SDK
rm -rf ~/sdk ~/rtos_compiler
# 解压匹配版本 SDK 至 ~ 目录
unzip bmc_sdk_26.03.zip -d ~/
依据知识图谱中 yaoshun1 提示:必须使用最新链接
https://conan.openubmc.cn/bmc_sdk_latest,否则无法下载 26.03 组件。
步骤 3:正确配置 Conan 远程仓库
执行以下命令重置远程配置:
# 移除旧/错误远程
conan remote remove openbmc_sdk 2>/dev/null || true
conan remote remove openubmc_dev 2>/dev/null || true
# 添加 OpenUBMC 官方远程(关键)
conan remote add openubmc_sdk "https://conan.openubmc.cn/bmc_sdk_latest" --insecure --force
conan remote add openubmc_opensource "https://conan.openubmc.cn/openubmc_opensource" --insecure --force
conan remote add openubmc_dev "https://conan.openubmc.cn/conan_1/" --insecure --force
依据知识图谱:
openubmc_dev和openubmc_sdk是Bmcgo Build和Conan正确工作的必要 remote。
步骤 4:补全 manifest.yml 配置项
编辑 manifest.yml 文件,在顶层添加:
tosupporte:
default:
fixed_version: "26.03.00.01"
code: "default"
show_version: true
此配置可消除警告,并防止低级解析错误。
步骤 5:使用正确工具版本并重新初始化环境
# 升级 bingo 到最新版本(至少 0.6.121+)
bingo upgrade
# 检查版本
bingo -v
# 重新初始化环境(指定 SDK 路径)
python3 init.py -path ./bmc_sdk_26.03.zip -user your_username -psw your_password
提示:
init.py会自动配置 Conan Remote 和路径映射,是环境准备的关键一步。
步骤 6:执行标准构建命令
# 推荐使用标准命令构建
bingo build -b openUBMC -r openubmc_dev -bt debug --stage rc
或显式调用:
bingo build -b openUBMC -bt debug -r openubmc_dev
![]()
-r openubmc_dev指定开发仓库,确保能拉取到最新发布的组件。
四、验证是否成功的关键命令
| 命令 | 作用 |
|---|---|
conan remote list |
检查远程仓库是否为 bmc_sdk_latest 等官方地址 |
conan search snmp -r openubmc_sdk |
查看 snmp 是否存在有效版本 |
ls ~/.conan2/p/snmp* |
检查是否已缓存 snmp 包 |
cat manifest.yml | grep tosupporte |
确认配置已添加 |
五、附加调试建议
若仍报 KeyError: 'pwd'
请立即检查:
- 是否使用了非标准分支的
manifest - 是否使用了 debug 包中的 SDK 覆盖 release 包(见 doc chunk 3 中 xuhaijun 回复)
- 是否
conan remote list显示为https://conan.openubmc.cn/bmc_sdk_latest
终极判断:如果
conan search snmp -r openubmc_sdk无法查到,说明 remote 配置错误或 SDK 不对。
六、总结与推荐配置表
| 项目 | 推荐配置 |
|---|---|
| Manifest 分支 | br_release_openUBMC2603_xxx |
| BMC SDK | bmc_sdk_26.03.zip 官方版本 |
| Conan Remote | openubmc_sdk, openubmc_dev, openubmc_opensource |
| Bingo 版本 | ≥ 0.6.121 |
| Conan 版本 | 2.13.0 或以上 |
| 构建命令 | bingo build -b openUBMC -r openubmc_dev |
| 必须配置 | tosupporte, show_version |
参考资料链接
- 官方 SDK 下载:
https://conan.openubmc.cn/bmc_sdk_latest - Conan 配置说明:文档中心 - 远程仓库配置
- 社区讨论:topic/4390、topic/4775
通过以上步骤操作后,KeyError: 'pwd' 和组件缺失问题将得到有效解决,OpenUBMC 26.03 编译成功率显著提升。
最终建议命令序列:
# 1. 清理缓存
rm -rf ~/.conan2/p/*
# 2. 配置远程
conan remote add openubmc_sdk "https://conan.openubmc.cn/bmc_sdk_latest" --insecure --force
conan remote add openubmc_opensource "https://conan.openubmc.cn/openubmc_opensource" --insecure --force
conan remote add openubmc_dev "https://conan.openubmc.cn/conan_1/" --insecure --force
# 3. 初始化环境
python3 init.py -path ./bmc_sdk_26.03.zip
# 4. 开始构建
bingo build -b openUBMC -r openubmc_dev
按此流程操作,即可恢复正常构建流程。如有持续失败,请提供 /home/workspace/BMC_2603/manifest/temp/log/task.log 完整日志以进一步诊断。