account组件bmcgo build报错

// 此模板仅供参考,如果不适用可以修改,使用了2509的bmc_sdk 初始化环境后重新在manifest下bmcgo 能出包,但是account还是报错pwd

问题描述

使用bmcgo build --stage=stable构建报错pwd

libiam/1.100.14@openubmc/stable: WARN: Trying to remove corrupted source folder
libiam/1.100.14@openubmc/stable: WARN: This can take a while for big packages
libiam/1.100.14@openubmc/stable: Calling source() in /root/.conan2/p/libiaf4ddd6593498f/s
ERROR:
KeyError: ‘pwd’
ERROR: 执行命令 conan create --name account --version 94.0.1 . -pr:h profile.luajit.ini -pr:b profile.dt.ini -s:a build_type=Debug --user openubmc --channel stable -o /:enable_luajit=True --build=account/* --build=missing -u -f json --out-file=/tmp/tmpryq8_q5t.graph.json -tf= 错误, 日志: /root/.bmcgo_log/bingo.log
ERROR: Command ‘[‘conan’, ‘create’, ‘–name’, ‘account’, ‘–version’, ‘94.0.1’, ‘.’, ‘-pr:h’, ‘profile.luajit.ini’, ‘-pr:b’, ‘profile.dt.ini’, ‘-s:a’, ‘build_type=Debug’, ‘–user’, ‘openubmc’, ‘–channel’, ‘stable’, ‘-o’, ‘/:enable_luajit=True’, ‘–build=account/*’, ‘–build=missing’, ‘-u’, ‘-f’, ‘json’, ‘–out-file=/tmp/tmpryq8_q5t.graph.json’, ‘-tf=’]’ returned non-zero exit status 1.
ERROR: 请查看日志信息

skynet/1.8.0.b001_006@openubmc/stable: Already installed! (10 of 21)
json/b003_00004@openubmc/stable: Already installed! (11 of 21)
liblogger/1.90.6@openubmc/stable: Already installed! (12 of 21)
openldap/2.6.6-htrunk1_003@openubmc/stable: Already installed! (13 of 21)
signature_verify_cbb_library/25.1.0.b003_001@openubmc/stable: Already installed! (14 of 21)
vpp/v300r025c20spc002b200_001@openubmc/stable: Already installed! (15 of 21)
kmc/25.0.5+b001_002@openubmc/stable: Already installed! (16 of 21)
libsomp/2.0.5@openubmc/stable: Already installed! (17 of 21)
libsoc_adapter/1.100.25@openubmc/stable: Already installed! (18 of 21)
libmc4lua/1.100.71@openubmc/stable: Already installed! (19 of 21)
libiam/1.100.14@openubmc/stable: WARN: Trying to remove corrupted source folder
libiam/1.100.14@openubmc/stable: WARN: This can take a while for big packages
libiam/1.100.14@openubmc/stable: Calling source() in /root/.conan2/p/libiaf4ddd6593498f/s
ERROR:
KeyError: ‘pwd’
[2026-01-27 15:39:10,501 ERROR] build.py:347 执行命令 conan create --name account --version 94.0.1 . -pr:h profile.ini -pr:b profile.dt.ini -s:a build_type=Debug --user openubmc --channel stable -o /:enable_luajit=True --build=account/* --build=missing -u -f json --out-file=/tmp/tmpr1ybmfup.graph.json -tf= 错误, 日志: /root/.bmcgo_log/bingo.log
[2026-01-27 15:39:10,506 ERROR] cli.py:312 Traceback (most recent call last):
File “/usr/local/lib/python3.12/dist-packages/bmcgo/cli/cli.py”, line 291, in run
return method(command_args)
^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.12/dist-packages/bmcgo/cli/cli.py”, line 184, in build
build.run()
File “/usr/local/lib/python3.12/dist-packages/bmcgo/component/build.py”, line 359, in run
self.run_conan_v2()
File “/usr/local/lib/python3.12/dist-packages/bmcgo/component/build.py”, line 347, in run_conan_v2
tool.run_command(cmd, show_log=True)
File “/usr/local/lib/python3.12/dist-packages/bmcgo/utils/tools.py”, line 700, in run_command
raise e
File “/usr/local/lib/python3.12/dist-packages/bmcgo/utils/tools.py”, line 682, in run_command
ret = subprocess.run(command, check=check, timeout=timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3.12/subprocess.py”, line 571, in run
raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command ‘[‘conan’, ‘create’, ‘–name’, ‘account’, ‘–version’, ‘94.0.1’, ‘.’, ‘-pr:h’, ‘profile.ini’, ‘-pr:b’, ‘profile.dt.ini’, ‘-s:a’, ‘build_type=Debug’, ‘–user’, ‘openubmc’, ‘–channel’, ‘stable’, ‘-o’, ‘/:enable_luajit=True’, ‘–build=account/*’, ‘–build=missing’, ‘-u’, ‘-f’, ‘json’, ‘–out-file=/tmp/tmpr1ybmfup.graph.json’, ‘-tf=’]’ returned non-zero exit status 1.

[2026-01-27 15:39:10,508 ERROR] cli.py:314 Command ‘[‘conan’, ‘create’, ‘–name’, ‘account’, ‘–version’, ‘94.0.1’, ‘.’, ‘-pr:h’, ‘profile.ini’, ‘-pr:b’, ‘profile.dt.ini’, ‘-s:a’, ‘build_type=Debug’, ‘–user’, ‘openubmc’, ‘–channel’, ‘stable’, ‘-o’, ‘/:enable_luajit=True’, ‘–build=account/*’, ‘–build=missing’, ‘-u’, ‘-f’, ‘json’, ‘–out-file=/tmp/tmpr1ybmfup.graph.json’, ‘-tf=’]’ returned non-zero exit status 1.
[2026-01-27 15:39:10,509 ERROR] cli.py:315 请查看日志信息

[在这里详细描述您遇到的问题]

环境信息

  • 操作系统:Ubuntu 24.04

  • 软件版本:OpenUBMC2509
    root@03b7d7c3dae7:/workspace/account# bmcgo -v

whoami
root
bmcgo 版本为: 0.7.14
bingo 版本为: 0.6.75
bmc-studio 版本为: 1.2.0
root@03b7d7c3dae7:/workspace/account# conan -v
Conan version 2.21.0

  • 硬件配置:[如 CPU、内存等]

重现步骤

  1. [第一步]

  2. [第二步]

  3. [第三步]

期望结果

[您希望实现什么]

实际结果

[实际发生了什么,包含错误信息]

尝试过的解决方案

[列出您已经尝试过的解决方案及结果]

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

account组件在使用bmcgo build时出现KeyError: 'pwd'错误的解决方案

问题描述

在使用bmcgo build --stage=stable构建account组件时,系统报错KeyError: 'pwd',导致构建失败。该问题发生在conan create命令执行过程中,具体错误信息如下:

  • 错误类型:KeyError: 'pwd'
  • 错误命令:conan create --name account --version ...
  • 同时伴随libiam/1.100.14@openubmc/stable包源码文件夹损坏的警告
  • 使用OpenUBMC 25.09版本的bmc_sdk进行环境初始化后,虽然可以成功出包,但account组件仍然报错

环境信息

项目 信息
操作系统 Ubuntu 24.04
软件版本 OpenUBMC 2509
bmcgo 版本 0.7.14
bingo 版本 0.6.75
bmc-studio 版本 1.2.0
Conan 版本 2.21.0
Conan 包管理器 与 openubmc-bingo 存在版本兼容性问题

根本原因分析

Conan 版本不兼容

根据知识库分析,此问题的根本原因是 Conan 版本不兼容

  1. openubmc-bingo 依赖 Conan ≤1.62.0

    • openubmc-bingo 0.5.272 明确要求 conan<=1.62.0
    • 当前环境安装的是 Conan 2.21.0,远超兼容版本
  2. Conan 2.x 与 1.x 的架构差异

    • Conan 2.x 是对 1.x 的重大重构,存在 API 和行为上的不兼容
    • 某些脚本中引用的内部变量(如pwd)在新版 Conan 中可能已被移除或更改访问方式
  3. 升级后的环境冲突

    • 开发者明确指出在使用 25.09 SDK 后出现问题,而旧版 SDK 可能绑定了更老的 Conan 版本
    • 新版 Conan 2.21.0 与现有构建脚本不兼容,导致在调用 conan create 时访问不存在的 pwd 属性

间接原因:组件依赖解析失败

  • 构建过程中尝试重新获取 libiam/1.100.14@openubmc/stable 源码
  • “Trying to remove corrupted source folder” 表明 Conan 本地缓存可能因版本不兼容而损坏
  • 这会触发 source() 方法调用,进而执行到依赖脚本中访问 pwd 的代码路径

解决方案

:white_check_mark: 方案一:降级 Conan 至兼容版本(推荐)

# 卸载当前 Conan 2.21.0
pip uninstall conan

# 安装兼容版本 1.62.0
pip install conan==1.62.0

# 验证版本
conan --version  # 应输出 1.62.0

依据:知识库中明确指出 openubmc-bingo 要求 conan<=1.62.0,且多个构建日志显示此版本为官方兼容版本。

:white_check_mark: 方案二:清除 Conan 缓存并重新初始化

如果必须使用新版本 Conan,应彻底清理旧状态:

# 删除所有远程配置
conan remote remove '*'

# 清除本地包缓存(谨慎操作,将删除所有已下载包)
conan remove "*" -c

# 重新初始化 SDK(确保使用匹配的 SDK 版本)
python3 init.py -path ./bmc_sdk.zip

# 重新执行构建
bmcgo build --stage=stable

注意:此操作将重新下载所有依赖,耗时较长。

:white_check_mark: 方案三:检查并更新构建环境匹配性

参考已知解决方案:

  1. 确保使用的 bmc_sdk 版本与 manifest 严格匹配
  2. 下载与当前代码分支对应的 SDK 版本(如 5.12 版本)
  3. 重新初始化构建环境

命令示例:

# 确认远程仓库设置正确
conan remote add openubmc_sdk https://conan.openubmc.cn/bmc_sdk_latest
conan remote add openubmc_dev https://conan.openubmc.cn/conan_1/

建议操作顺序

  1. 备份当前环境
  2. 执行方案一:降级到 Conan 1.62.0
  3. 若仍失败,执行方案二:清除缓存
  4. 确保使用与代码匹配的 SDK 版本

验证是否解决

成功标志:

  • bmcgo build 命令不再出现 KeyError: 'pwd'
  • account 组件能够成功完成 conan create 过程
  • 最终生成可部署的 HPM 包

预防措施

  • 严格管理 Conan 版本:避免随意升级 Conan,应遵循 openubmc-bingo 的版本约束
  • 使用容器化构建:通过 Docker 固定构建环境版本,避免污染
  • 文档化构建依赖:明确记录各 SDK 版本对应的工具链要求

重要提醒:Conan 官方虽推荐使用 2.0+ 版本,但在 openubmc-bingo 明确不兼容的情况下,应优先保证构建系统的稳定性,待官方升级支持后再迁移。

相关链接:

  1. 对增加的组件进行编译时,报错 KeyError: 'pwd'
  2. 执行python3 init.py初始化时失报错,似乎是conan的问题。
  3. 25.12版本编译不过的问题
  4. 2512高可用构建失败
  5. account | 文档中心 | openUBMC

account 改成这样就可以出
{
“conan”: “libmc4lua/1.91.5”
},
{
“conan”: “mdb_interface/[>=1.70.0]”
},
{
“conan”: “libiam/1.95.4”
}

执行一下conan list |grep libiam 看一下版本,估计是你本地缓存了更高的版本,2509应该是libiam/1.90.16@openubmc/stable 这个版本才对,或者是你有其他的组件依赖影响导致的,同时2509的conan地址发生了变更,具体看论坛【重要!】近期遇到的一些Conan构建相关问题整体解答

1 个赞

日志中的KeyError: ‘pwd’表示触发了源码构建,应该是你使用了与bmc_sdk不匹配的组件导致依赖关系变更,触发源码构建,需要参考 wuzhou-ouchangyun提供的方法强制配套匹配的平台组件依赖。