account组件bmcgo build报错

答案内容由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