基于630版本的1712构建单个组件失败,触发了源码构建,使用1711的sdk构建正常
答案内容由AI生成,仅供参考:
解决方案
根据上述信息,您遇到的根本原因是:当前开发环境使用了与 630 版本/1712 芯片不配套的 SDK(可能是沿用了 1711 的 SDK),导致环境变量 pwd 无法被正确注入,触发源码构建失败。
请按以下步骤操作:
-
确认正确的 SDK 版本:
- 630 版本(如 openUBMC 25.06)的 1712 芯片应使用官网上对应 630 版本 1712 芯片的
bmc_sdk。 - 不要使用 1711 的 SDK,两者工具链、环境变量封装不同。
- 630 版本(如 openUBMC 25.06)的 1712 芯片应使用官网上对应 630 版本 1712 芯片的
-
更换 SDK 并重新初始化:
# 1. 删除旧的 SDK 和编译器缓存 rm -rf ~/sdk ~/rtos_compiler # 2. 从官网下载正确版本的 bmc_sdk(例如 25.06 对应 1712 的 SDK) # 解压后将内部的 sdk 和 rtos_compiler 复制到 ~ 目录 # 3. 切换到对应版本的 manifest 分支 git checkout <对应630版本的manifest标签> # 4. 初始化 SDK 环境 bingo build -t install_sdk -
重新构建组件:
bingo build --stage=stable -
验证:若仍报错,可参考文档块 #1 中的建议,检查
conan是否支持pwd环境变量注入(查看.conan/profiles/your_profile有无缺失字段),并确保 manifest 中组件的版本与 SDK 完全匹配。
关键总结
| 问题表现 | 可能原因 | 解决方向 |
|---|---|---|
630版本1712构建单个组件失败,报错pwd,1711 SDK正常 |
使用了错误的 SDK 版本,环境变量不配套 | 使用官网对应630版本1712的 SDK,执行 install_sdk 重新初始化 |
提示:manifest 与 bmc_sdk 存在严格的版本对应关系,切换分支后必须同步更新 SDK,否则会出现各种构建异常(包括
KeyError: 'pwd'、源码构建触发等)。
点击此处查看详细分析解答
根据您提供的信息,问题描述为:在基于630版本(可能指OpenUBMC 25.06或类似版本)的1712芯片上构建单个组件失败,触发源码构建并报错pwd,而使用1711的SDK构建正常。这属于典型的SDK版本与环境不匹配问题。
原因分析
从知识库和文档块中可提取以下关键信息:
-
KeyError: ‘pwd’ 是一个运行时错误,表示环境变量
pwd缺失或未定义。该错误通常出现在 Conan 的source()调用阶段,与构建环境配置密切相关(参见知识图谱中KeyError pwd与Conan、manifest.yml的关系)。 -
构建引擎(bingo)与 SDK 版本必须配套。文档块 #1(“构建工程”)明确指出:
“切换到对应版本构建时,应使用官网相应版本bmc_sdk初始环境,如:切换到2509版本构建时,应使用官网2509版本bmc_sdk初始环境。”
-
同一文档块还建议:
“切换到对应版本的manifest,执行一次
bingo build -t install_sdk” -
文档块 #8(“组件之内bingo build失败”)中,用户同样遇到
KeyError: 'pwd',社区回复的解决步骤包括:- 下载最新的对应版本
bmc_sdk - 删除本地
~/sdk、~/rtos_compiler - 复制正确 SDK 到
~目录 - 拉取对应主干 manifest,执行
bingo build -t install_sdk
- 下载最新的对应版本
-
1711 SDK 与 1712 SDK 不同。知识图谱中指出
bmc_sdk有多个版本(如 25.03、25.09、5.12 等),且2509高可用构建失败事件中明确提到:“A mismatch in the bmc_sdk version is suspected to be the root cause of the build failure.”
解决方案
根据上述信息,您遇到的根本原因是:当前开发环境使用了与 630 版本/1712 芯片不配套的 SDK(可能是沿用了 1711 的 SDK),导致环境变量 pwd 无法被正确注入,触发源码构建失败。
请按以下步骤操作:
-
确认正确的 SDK 版本:
- 630 版本(如 openUBMC 25.06)的 1712 芯片应使用官网上对应 630 版本 1712 芯片的
bmc_sdk。 - 不要使用 1711 的 SDK,两者工具链、环境变量封装不同。
- 630 版本(如 openUBMC 25.06)的 1712 芯片应使用官网上对应 630 版本 1712 芯片的
-
更换 SDK 并重新初始化:
# 1. 删除旧的 SDK 和编译器缓存 rm -rf ~/sdk ~/rtos_compiler # 2. 从官网下载正确版本的 bmc_sdk(例如 25.06 对应 1712 的 SDK) # 解压后将内部的 sdk 和 rtos_compiler 复制到 ~ 目录 # 3. 切换到对应版本的 manifest 分支 git checkout <对应630版本的manifest标签> # 4. 初始化 SDK 环境 bingo build -t install_sdk -
重新构建组件:
bingo build --stage=stable -
验证:若仍报错,可参考文档块 #1 中的建议,检查
conan是否支持pwd环境变量注入(查看.conan/profiles/your_profile有无缺失字段),并确保 manifest 中组件的版本与 SDK 完全匹配。
关键总结
| 问题表现 | 可能原因 | 解决方向 |
|---|---|---|
630版本1712构建单个组件失败,报错pwd,1711 SDK正常 |
使用了错误的 SDK 版本,环境变量不配套 | 使用官网对应630版本1712的 SDK,执行 install_sdk 重新初始化 |
提示:manifest 与 bmc_sdk 存在严格的版本对应关系,切换分支后必须同步更新 SDK,否则会出现各种构建异常(包括
KeyError: 'pwd'、源码构建触发等)。
构建时可以加入chipv2_enable参数
-o libsoc_adapter/*:chipv2_enable=True -o libmc4lua/*:chipv2_enable=True
如果还提示错误,可根据错误提示,继续添加参数
例如network_adapter构建
bmcgo build --stage stable -r conan_remote -bt debug -o libsoc_adapter/*:chipv2_enable=True -o libmc4lua/*:chipv2_enable=True -o libmgmt_protocol/*:chipv2_enable=True -o mctpd/*:chipv2_enable=True
感谢感谢!解决了!
可以直接加上-o */*:chipv2_enable=True
