2509高可用构建失败

问题描述

2509高可用构建过程中报错日志如下:

liblogger/1.90.5@openubmc/stable: Already installed! (50 of 128)
libmdbc/1.80.2@openubmc/stable: Already installed! (51 of 128)
openldap/2.6.6-htrunk1_003@openubmc/stable: Already installed! (52 of 128)
secbox/24.1.8.b010_00004.b001@openubmc/stable: Already installed! (53 of 128)
signature_verify_cbb_library/25.0.0.b002_001@openubmc/stable: Already installed! (54 of 128)
vpp/v300r025c10spc002b100_001@openubmc/stable: Already installed! (55 of 128)
grpc/1.33.1.005@openubmc/stable: Already installed! (56 of 128)
hwproxy/1.90.33@openubmc/stable: Already installed! (57 of 128)
help/1.71.37@openubmc/stable: WARN: Trying to remove corrupted source folder
help/1.71.37@openubmc/stable: WARN: This can take a while for big packages
help/1.71.37@openubmc/stable: Calling source() in /root/.conan2/p/helpe82f30ae587a3/s
ERROR:
KeyError: ‘pwd’
ERROR: 执行命令 conan create . -pr=profile.ini -pr:b profile.dt.ini -s:h build_type=Debug -o :module_symvers=1ee923e971f1cf759b9b1cf3df4fbdf4182b1eb2d5f267ef64494e6ea0bf9b86 -o firmware_mgmt/:community_enable=True -o bmc_time/:manufacture=True -o /:enable_luajit=True -o vpd/:board_name=openUBMC -o fructrl/:manufacture=True -o chassis/:manufacture=True -o webui/:energy_enabled=False -o help/:board_name=openUBMC --user=openubmc --channel=stable --build=missing 错误, 日志: /home/workspace/manifest/temp/log/task.log

环境信息

  • 操作系统: Ubuntu 24.04

  • 软件版本: OpenUBMC2509

  • Conan版本:Conan version 2.13.0

  • bmcgo版本:

2509高可用适配参考链接:签名包制作指导 | 文档中心 | openUBMC

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

总结

项目 内容
问题根源 help 组件构建脚本访问不存在的 'pwd' 键,极可能是由于 bmc_sdk 不匹配导致上下文缺失
根本原因 本地构建环境与 OpenUBMC2509 所需的 SDK 环境不一致,或组件构建逻辑存在缺陷
推荐解法 使用官方提供的 bmc_sdk_25.09 初始化环境,确保组件版本一致性
预防措施 每次切换版本前执行 bingo init -v <version>,避免跨版本污染

:light_bulb: 提示:对于自定义组件开发,请确保 conanfile.py 中对 conan_data 的访问使用 .get() 安全获取,避免硬编码键值访问。

点击此处查看详细分析解答

OpenUBMC 25.09 高可用构建失败问题分析与解决方案

问题概述

OpenUBMC2509 软件版本环境下,执行高可用构建时出现构建失败,错误日志显示 KeyError: 'pwd',并伴随 Conan 构建命令执行异常(返回非零退出状态)。该问题发生于使用 Conan 2.13.0Bingo 0.6.146 工具链的 Ubuntu 24.04 系统环境中。


错误详情

错误日志摘要

help/1.71.37@openubmc/stable: Calling source() in /root/.conan2/p/helpe82f30ae587a3/s
ERROR:
KeyError: ‘pwd’
ERROR: 执行命令 conan create ... 错误, 日志: /home/workspace/manifest/temp/log/task.log

关键错误信息

  • KeyError: 'pwd':表明在构建过程中尝试访问一个名为 'pwd' 的键或变量,但该键不存在于当前上下文中。
  • 构建命令失败conan create 命令因内部 Python 脚本抛出异常而终止。

问题定位

根据知识图谱和文档内容分析,此问题可能由以下原因导致:

1. 本地环境与 SDK 版本不匹配

:pushpin: 来源:[《构建工程》文档 - ID: 1]

“这种问题一般为开发者本地 bmc_sdk 和当前版本依赖不配套:切换到对应版本构建时,应使用官网相应版本 bmc_sdk 初始环境,如:切换到 2509 版本构建时,应使用官网 2509 版本 bmc_sdk 初始环境。”

  • 推断:当前构建所使用的 bmc_sdk 可能并非专为 OpenUBMC2509 定制的版本,导致在调用 help 组件的 source() 方法时缺少必要的上下文变量(如 pwd)。
  • 支持证据
    • help/1.71.37@openubmc/stable 组件在拉取源码阶段触发错误,说明其构建脚本逻辑中引用了无效的字段。

2. 闭源组件源码构建逻辑缺陷

:pushpin: 来源:[《构建工程》文档 - ID: 1]

“本地出组件构建,bingo build出现报错:具体错误为闭源组件触发源码构建,类似错误为ERROR in xx Method ERROR XX pwd等”

  • 解读:部分闭源组件在其构建脚本(如 conanfile.py)中可能依赖环境变量或上下文字段(如 pwd),但在某些构建模式下未正确传递或初始化。
  • KeyError: 'pwd' 正是此类脚本行为异常的典型表现。

解决方案

:white_check_mark: 方案一:使用官方匹配的 BMC SDK 环境重建构建环境

  1. 清理本地缓存

    conan remove "*" -c  # 清除所有本地 Conan 缓存包
    rm -rf ~/.conan2/p/* # 强制清理 Conan 缓存路径
    
  2. 下载并配置匹配的 BMC SDK

    • 访问 openUBMC 官方文档中心,获取 OpenUBMC2509 对应版本的 bmc_sdk
    • 使用 bmcgo envbingo init 初始化正确的构建环境:
      bingo init -v 25.09
      
  3. 重新拉取组件并构建

    bingo fetch  # 确保所有组件为正确版本
    bingo build  # 开始构建
    

:white_check_mark: 方案二:检查并修复组件 help 的构建脚本(适用于开发者)

  1. 进入 help 组件源码目录

    cd ~/.conan2/p/helpe82f30ae587a3/s  # 根据日志路径定位
    
  2. 查看 conanfile.pysource() 方法

    • 检查是否存在如下代码片段:
      def source(self):
          pwd = self.conan_data["sources"]["help"]["pwd"]  # 可能导致 KeyError
      
    • 如果 conan_data 中未定义 "pwd" 字段,则会抛出 KeyError
  3. 临时修复建议

    • conanfile.py 中加入默认值判断:
      def source(self):
          pwd = self.conan_data.get("sources", {}).get("help", {}).get("pwd", "")
          if pwd:
              # 执行解压或签名操作
              pass
      

:white_check_mark: 方案三:升级工具链以适配 Conan 2.x 行为变更

虽然错误发生在 Conan 2.13.0 下,但有案例表明 Conan 版本与构建逻辑存在兼容性问题。

  • 参考案例:用户 HKZY_chenxiang 在使用 Conan v2.22.0 构建 OpenUBMC2509 时也遇到类似构建失败,而 v2.21.0 正常(见文档 ID: 4)。
  • 建议
    • 确认是否为 Conan 行为改变所致。
    • 若非必须使用 2.13.0,可尝试降级至稳定版本(如 2.13.6 或 2.21.0),或升级至最新补丁版本。

推荐操作流程

# 1. 清理环境
conan remove "*" -c

# 2. 初始化 OpenUBMC2509 环境
bingo init -v 25.09

# 3. 拉取依赖组件
bingo fetch

# 4. 执行构建
bingo build

参考资源

内容 链接
构建工程常见问题 https://discuss.openubmc.cn/t/topic/239
2509 签名包制作指导 签名包制作指导
Bingo 常用命令说明 bingo --help

总结

项目 内容
问题根源 help 组件构建脚本访问不存在的 'pwd' 键,极可能是由于 bmc_sdk 不匹配导致上下文缺失
根本原因 本地构建环境与 OpenUBMC2509 所需的 SDK 环境不一致,或组件构建逻辑存在缺陷
推荐解法 使用官方提供的 bmc_sdk_25.09 初始化环境,确保组件版本一致性
预防措施 每次切换版本前执行 bingo init -v <version>,避免跨版本污染

:light_bulb: 提示:对于自定义组件开发,请确保 conanfile.py 中对 conan_data 的访问使用 .get() 安全获取,避免硬编码键值访问。

触发了help组件源码构建,应该是bmc_sdk不配套。建议重新下载配套sdk并初始化环境

2509 manifest把help组件的options给注释,再试试

 - conan: help/1.90.26@openubmc/stable
    # options:
    #   board_name: openUBMC

试了,也不行,报错还是帖子里的

重新下载了openUBMC

bingo up更新下试试呢,前面搞错了help组件应该是开源的,conan search help -r openubmc_opensource 能找到吗

日志出发源码构建的help版本和你这里配置的版本不一样啊。

能找到这些:

不过,按照打印出来的错误,/root/.conan2/p/helpe82f30ae587a3/s下面确实为空

image

2509高可用tag节点 help/1.71.37 这个版本确实编不过切成help/1.90.26@openubmc/stable 这个版本并注释下面就可以了,鲲鹏专区有对应的帖子

manifest配置的ibmc_sdk版本要配套改为5.11.0.0版本

你这边有帖子的链接没,能发下不?

- conan: “ibmc_sdk/5.11.00.01.b002@openubmc/stable”

  • 使用这个试下

私信了你看一下

收到,多谢多谢