用git clone拉的最新的manifest,里面是2512的版本
编译报错
task.log报错如下:
报的pwd错误是在哪个文件?
环境信息
操作系统用的是Docker开发环境搭建中的docker
bingo和conan版本如图
用git clone拉的最新的manifest,里面是2512的版本
编译报错
task.log报错如下:
报的pwd错误是在哪个文件?
操作系统用的是Docker开发环境搭建中的docker
bingo和conan版本如图
答案内容由AI生成,仅供参考:
用户在使用 git clone 拉取最新的 OpenUBMC 25.12 版本的 manifest 后进行编译时,构建任务卡在 work.build.conan 并最终失败,报出关键错误:
KeyError: 'pwd'
此错误发生在 Conan 执行 source() 方法过程中,导致整个构建流程中断。
KeyError: 'pwd'该错误明确出现在 task.log 中:
libsoc_adapter/1.100.25@openubmc/stable: Calling source() in /root/.conan/p/libso87dcb2edf6a2e4/s
ERROR: KeyError: 'pwd'
pwd 不是环境变量或系统命令问题,而是 Conan 在解析其**配置上下文(context)**时,尝试访问名为 'pwd' 的键,但该键未定义。
此问题常见于以下场景:
libsoc_adapter),而其 conanfile.py 中存在对已弃用或变更的属性访问。source() 方法中尝试读取当前路径(self.conanfile_directory 或 os.getcwd()),但上下文未正确初始化。| 项目 | 当前环境信息 |
|---|---|
| Conan 版本 | 2.13.0 |
| Bingo 版本 | 0.6.120 |
| Docker 镜像 | swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2_25.09 |
| 构建任务 | work.build.conan 执行失败 |
| 日志文件 | /root/workspace/manifest/temp/log/task.log |
| 关键报错 | KeyError: 'pwd' |
注意:Conan 从 1.x 升级到 2.x 后,内部 API 有重大变更。部分旧组件(如
libsoc_adapter)的conanfile.py可能引用了已被移除或重命名的属性(例如self.conanfile_directory被替换为self.source_folder)。
根据知识库和日志内容:
错误触发点为 Conan 包:
➤ libsoc_adapter/1.100.25@openubmc/stable
具体阶段为:
➤ Calling source() 阶段(即执行包的源码拉取或解压)
错误位置推测:
def source(self):
# 可能类似如下代码片段导致 KeyError
current_dir = self.env["pwd"] # ❌ 错误!env 中不应直接访问 'pwd'
# 或
current_dir = self.context["pwd"] # ❌ 已过时或不存在
即:libsoc_adapter 的 conanfile.py 文件中的 source() 方法尝试访问不存在的 'pwd' 键,引发 KeyError。
由于 libsoc_adapter 源码文件夹已“corrupted”(损坏),建议清空其缓存:
# 进入容器后执行
conan remove libsoc_adapter/1.100.25@openubmc/stable --builds --sources --generators --packages -f
# 或清空整个本地缓存(更彻底)
rm -rf /root/.conan/p/
然后再重新运行构建命令。
libsoc_adapter 包libsoc_adapter 支持 Conan 2.13.0。conanfile.py,替代写法如下:def source(self):
# ✅ 正确方式获取路径
tools.mkdir(self.source_folder)
# 而非使用 self.context['pwd'] 或 self.env['pwd']
如果项目尚未完全适配 Conan 2.x,可临时降级至 Conan 1.62.0(已知兼容 openubmc-bingo):
pip uninstall conan -y
pip install conan==1.62.0
注意:Conan 2.x 与 1.x 不兼容,部分命令语法不同,需确认
manifest是否支持。
当前使用的镜像是 24.04.2_25.09,但你的工程是 25.12,可能存在 SDK 不匹配。
建议:
25.12 的 Docker 镜像;# 示例:添加正确的远程仓库
conan remote add openubmc_dev https://conan.openubmc.cn/conan_1/ --force
# 登录认证(如需要)
conan user <用户名> -p <密码> -r openubmc_dev
然后重新初始化项目。
清理缓存
conan remove libsoc_adapter* --all -f
rm -rf /root/.conan/p/
确认 Conan 版本兼容性
若 openubmc-bingo 要求 ≤1.62.0,则降级:
pip install conan==1.62.0
确保使用正确的 SDK 和镜像版本
建议使用与 25.12 对应的开发镜像或手动配置 SDK。
重新执行构建流程
Task Log 文件路径:/root/workspace/manifest/temp/log/task.logbuild_log 路径:/root/.bmcgo_log/bingo.loghttps://conan.openubmc.cn/conan_1/https://conan.openubmc.cn/bmc_sdk_25.09| 措施 | 说明 |
|---|---|
| 在 CI/CD 中锁定 Conan 版本避免升级冲突 | |
.conan 缓存 |
防止缓存污染导致构建失败 |
| 每次构建使用干净容器 | |
conanfile.py |
移除对 pwd 等非法键的访问 |
如有进一步日志(如完整 task.log 中 source() 调用堆栈),可进一步定位具体哪一行代码引发错误。
相关链接:

conan remote list目前是这样
AI的第一个方法试了,不管用
第二个方法,不知道怎么检查![]()
第三个方法回退conan版本,不敢试,不知道怎么切回来
第四个方法,执行第二部命令会报错

方法二, libsoc_adapter包应该就是conan2版本的,2509依赖该版本
方法三,2509已经是conan2了,不需要回退,而且2512依赖肯定也是conan2
方法四,命令应该是conan remote login openubmc_dev <openUBMC社区用户名> -p <openUBMC社区用户密码>,用conan2的方式
推测应该是conan版本缓存的问题(sdk版本依赖影响),用的2509环境,去编2512,现在coann这边中间态有些问题(两个版本貌似不能直接互通)
如果按照上诉帖子,尝试可以用conan remove ‘*‘清空2509的docker镜像内部缓存
注意
:
该命令会删除全部缓存,包括高可用包
在重新构建试试,指定conan路径还是为https://conan.openubmc.cn/conan_1或https://conan.openubmc.cn/bmc_sdk_latest
试了一下remove之后重新加载,还是不行,还是报pwd的错
按照一下流程重新操作了一遍:
先用conan remote remove '*'删除原有环境
此时conan remote list为空
重新执行python3 init.py -path ./bmc_sdk.zip
配置完后list为:
openubmc_sdk: https://conan.openubmc.cn/bmc_sdk_latest [Verify SSL: False, Enabled: True]
openubmc_opensource: https://conan.openubmc.cn/openubmc_opensource [Verify SSL: False, Enabled: True]
执行以下命令:

配置完后list为:
openubmc_sdk: https://conan.openubmc.cn/bmc_sdk_latest [Verify SSL: False, Enabled: True]
openubmc_opensource: https://conan.openubmc.cn/openubmc_opensource [Verify SSL: False, Enabled: True]
openubmc_dev: https://conan.openubmc.cn/conan_1/ [Verify SSL: False, Enabled: True]
然后执行bingo build,还是报pwd的错
执行一下conan remove libsoc_adapter/1.100.25@openubmc/stable -c再bingo build
对增加的组件进行编译时,报错 KeyError: ‘pwd’ - 交流互助区 - openUBMC 论坛
参考这个帖子的解决方法,下载与manifest匹配的bmc_sdk (5.12版本)重新初始化。
这个昨天试了,还是会报错
确定环境是一致的,版本也是5.12
root@896d014dff94:~/workspace/manifest/rtos_compiler# md5sum rtos_base-208.9.1.SPC0100-20250904204129.i586.rpm
36b3d32fef4131d76e6045b31348c011 rtos_base-208.9.1.SPC0100-20250904204129.i586.rpm
root@896d014dff94:~/rtos_compiler# md5sum rtos_base-208.9.1.SPC0100-20250904204129.i586.rpm
36b3d32fef4131d76e6045b31348c011 rtos_base-208.9.1.SPC0100-20250904204129.i586.rpm
======== Computing dependency graph ========
Graph root
cli
Requirements
ibmc_sdk/5.12.00.01.b002@openubmc/stable#14518f4a0cfc3911a0ef4df761544db3 - Cache
======== Computing necessary packages ========
Requirements
ibmc_sdk/5.12.00.01.b002@openubmc/stable#14518f4a0cfc3911a0ef4df761544db3:6759467d1ed0e280bd5f5b1bdc9bb0f993ee378b#d1b1e2fe9a8b846ea61070bed3f2749e - Cache
======== Installing packages ========
ibmc_sdk/5.12.00.01.b002@openubmc/stable: Already installed! (1 of 1)
rtos_base-208.9.1.SPC0100-20250904204129.i586.rpm 这个包还带“208.9”,应该不是用5.12的bmc_sdk.zip初始化的,我的是208.10
解决了,是bmc_sdk.zip版本不对,应该用25.12的,之所以弄错是因为官方网站bmcsdk上只能下载25.09的,最后是在别的帖子上通过Index of /25.12/sdk/下载的,然后重新配置一下就行了
由于大量社区举报,此话题被临时关闭至少 4 小时。
此话题已在 15 天后被自动打开。