openubmc2603编译报错

问题描述

openubmc2603编译报错,

复制 /home/workspace/BMC_2603/manifest/build/rootfs 到 conan 安装目录

rm -rf /home/workspace/BMC_2603/manifest/temp/build_openUBMC_debug_dev/conan_install/rootfs
cp -rf /home/workspace/BMC_2603/manifest/build/rootfs /home/workspace/BMC_2603/manifest/temp/build_openUBMC_debug_dev/conan_install/rootfs
rm -rf /home/workspace/BMC_2603/manifest/temp/build_openUBMC_debug_dev/conan_install/openubmc
cp -rf /home/workspace/BMC_2603/manifest/temp/board_openUBMC/rootfs /home/workspace/BMC_2603/manifest/temp/build_openUBMC_debug_dev/conan_install/openubmc
不能从 yaml 文件中获取到键值 tosupporte/default/fixed_version, 没有相关配置
版本 json 配置: {‘Version’: ‘26.03.00.01’, ‘BuildNum’: ‘01’, ‘ReleaseDate’: ‘16:39:07 Apr 3 2026’, ‘BMCSDKVersion’: ‘5.13.00.01’, ‘openUBMCVersion’: ‘26.03’}
WARN: 未配置 show_version 字段
conan graph build-order . -pr=profile.luajit.ini -pr:b profile.dt.ini -s:h build_type=Debug -o :module_symvers=3db48e6e6944d2aa4ab9b5fcab7d11423b6cc38e24732863017a60578a004fa5 -o firmware_mgmt/:community_enable=True -o vpd/:board_name=openUBMC -o webui/:energy_enabled=True -o webui/:webvnc_enabled=True -o account/:manufacture=True -o help/:board_name=openUBMC -o remote_console/:webvnc_supported=True -o nsm/:webvnc_supported=True -o bmc_time/:manufacture=True -o /:enable_luajit=True -o fructrl/:manufacture=True -o chassis/:manufacture=True --order-by=recipe -f json --out-file=/home/workspace/BMC_2603/manifest/temp/build_openUBMC_debug_dev/graph.order --user=openubmc --channel=stable --build=missing --lockfile-out=/home/workspace/BMC_2603/manifest/temp/build_openUBMC_debug_dev/openubmc.lock

Build snmp start, logfile: /home/workspace/BMC_2603/manifest/temp/log/conan_Build_snmp.log
Build snmp not ok.
start build openUBMC: conan create . -pr=profile.luajit.ini -pr:b profile.dt.ini -s:h build_type=Debug -o :module_symvers=3db48e6e6944d2aa4ab9b5fcab7d11423b6cc38e24732863017a60578a004fa5 -o firmware_mgmt/:community_enable=True -o vpd/:board_name=openUBMC -o webui/:energy_enabled=True -o webui/:webvnc_enabled=True -o account/:manufacture=True -o help/:board_name=openUBMC -o remote_console/:webvnc_supported=True -o nsm/:webvnc_supported=True -o bmc_time/:manufacture=True -o /:enable_luajit=True -o fructrl/:manufacture=True -o chassis/:manufacture=True --user=openubmc --channel=stable --build=missing
conan create . -pr=profile.luajit.ini -pr:b profile.dt.ini -s:h build_type=Debug -o :module_symvers=3db48e6e6944d2aa4ab9b5fcab7d11423b6cc38e24732863017a60578a004fa5 -o firmware_mgmt/:community_enable=True -o vpd/:board_name=openUBMC -o webui/:energy_enabled=True -o webui/:webvnc_enabled=True -o account/:manufacture=True -o help/:board_name=openUBMC -o remote_console/:webvnc_supported=True -o nsm/:webvnc_supported=True -o bmc_time/:manufacture=True -o /:enable_luajit=True -o fructrl/:manufacture=True -o chassis/:manufacture=True --user=openubmc --channel=stable --build=missing
ERROR: 执行命令 conan create . -pr=profile.luajit.ini -pr:b profile.dt.ini -s:h build_type=Debug -o :module_symvers=3db48e6e6944d2aa4ab9b5fcab7d11423b6cc38e24732863017a60578a004fa5 -o firmware_mgmt/:community_enable=True -o vpd/:board_name=openUBMC -o webui/:energy_enabled=True -o webui/:webvnc_enabled=True -o account/:manufacture=True -o help/:board_name=openUBMC -o remote_console/:webvnc_supported=True -o nsm/:webvnc_supported=True -o bmc_time/:manufacture=True -o /:enable_luajit=True -o fructrl/:manufacture=True -o chassis/:manufacture=True --user=openubmc --channel=stable --build=missing 错误, 日志: /home/workspace/BMC_2603/manifest/temp/log/task.log
ERROR: 任务 work.build.conan 执行失败, Command ‘[’/usr/local/bin/conan’, ‘create’, ‘.’, ‘-pr=profile.luajit.ini’, ‘-pr:b’, ‘profile.dt.ini’, ‘-s:h’, ‘build_type=Debug’, ‘-o’, ‘:module_symvers=3db48e6e6944d2aa4ab9b5fcab7d11423b6cc38e24732863017a60578a004fa5’, ‘-o’, 'firmware_mgmt/:community_enable=True’, ‘-o’, ‘vpd/:board_name=openUBMC’, ‘-o’, 'webui/:energy_enabled=True’, ‘-o’, ‘webui/:webvnc_enabled=True’, ‘-o’, 'account/:manufacture=True’, ‘-o’, ‘help/:board_name=openUBMC’, ‘-o’, 'remote_console/:webvnc_supported=True’, ‘-o’, ‘nsm/:webvnc_supported=True’, ‘-o’, 'bmc_time/:manufacture=True’, ‘-o’, ‘/:enable_luajit=True’, ‘-o’, ‘fructrl/:manufacture=True’, ‘-o’, 'chassis/:manufacture=True’, ‘–user=openubmc’, ‘–channel=stable’, ‘–build=missing’]’ returned non-zero exit status 1.
ERROR: 任务 work.build.conan 执行失败
ERROR: 任务 personal 执行失败
ERROR: 请查看日志信息
conan install --requires=‘bingo_cases/[>=1.0.0]@openubmc/stable’ -u --deployer-folder=/tmp/tmpp67e0bir -of /tmp/tmpp67e0bir -d direct_deploy
[INFO unified_error_analyzer.py:186 analyze_errors]

[INFO unified_error_analyzer.py:187 analyze_errors] :magnifying_glass_tilted_left: 开始统一错误分析
[INFO unified_error_analyzer.py:188 analyze_errors] ============================================================
[INFO unified_error_analyzer.py:343 _output_unified_analysis] :bar_chart: 统一分析完成!
[INFO unified_error_analyzer.py:344 _output_unified_analysis] 分析文件数量: 23 个
[INFO unified_error_analyzer.py:345 _output_unified_analysis] 日志条目总数: 1104 条
[INFO unified_error_analyzer.py:346 _output_unified_analysis] 日志文件案例: 1 个
[INFO unified_error_analyzer.py:347 _output_unified_analysis] 命令失败案例: 0 个
[INFO unified_error_analyzer.py:348 _output_unified_analysis] 总案例: 1 个
[INFO unified_error_analyzer.py:354 _output_unified_analysis]

[INFO unified_error_analyzer.py:355 _output_unified_analysis] :clipboard: 详细错误分析
[INFO unified_error_analyzer.py:356 _output_unified_analysis] ============================================================
[INFO unified_error_analyzer.py:141 _output_unified_case] :file_folder: 案例 1: bingo命令错误或产品与平台版本不匹配
[INFO unified_error_analyzer.py:144 _output_unified_case] ──────────────────────────────────────────────────
[INFO unified_error_analyzer.py:146 _output_unified_case] :one_o_clock: 发生时间: 未知时间
[INFO unified_error_analyzer.py:147 _output_unified_case] :round_pushpin: 来源: 日志文件
[INFO unified_error_analyzer.py:150 _output_unified_case] :page_facing_up: 文件: /home/workspace/BMC_2603/manifest/temp/log/task.log
[INFO unified_error_analyzer.py:152 _output_unified_case] :memo: 问题描述: bingo test命令缺少 -jit选项,或manifest版本没有配套(例如 25.09版本的manifest需要配套25.09的bmc_sdk)
[INFO unified_error_analyzer.py:159 _output_unified_case] :page_facing_up: 相关输出:
[INFO unified_error_analyzer.py:160 _output_unified_case] KeyError: ‘pwd’
[INFO unified_error_analyzer.py:171 _output_unified_case] :light_bulb: 解决方案: 请检查bingo命令拼接以及manifest和sdk是否配套。
[INFO unified_error_analyzer.py:173 _output_unified_case] ──────────────────────────────────────────────────
timed out
timed out
timed out
timed out
timed out
timed out
timed out
timed out
timed out
timed out
timed out
timed out

redfish/1.110.8@openubmc/stable: Already installed! (109 of 118)
remote_console/1.110.17@openubmc/stable: Already installed! (110 of 118)
snmp/1.100.5@openubmc/stable: WARN: Trying to remove corrupted source folder
snmp/1.100.5@openubmc/stable: WARN: This can take a while for big packages
snmp/1.100.5@openubmc/stable: Calling source() in /root/.conan2/p/snmp87eae35a538eb/s
ERROR:
KeyError: ‘pwd’
ERROR: 执行命令 conan create . -pr=profile.luajit.ini -pr:b profile.dt.ini -s:h build_type=Debug -o :module_symvers=3db48e6e6944d2aa4ab9b5fcab7d11423b6cc38e24732863017a60578a004fa5 -o firmware_mgmt/:community_enable=True -o vpd/:board_name=openUBMC -o webui/:energy_enabled=True -o webui/:webvnc_enabled=True -o account/:manufacture=True -o help/:board_name=openUBMC -o remote_console/:webvnc_supported=True -o nsm/:webvnc_supported=True -o bmc_time/:manufacture=True -o /:enable_luajit=True -o fructrl/:manufacture=True -o chassis/:manufacture=True --user=openubmc --channel=stable --build=missing 错误, 日志: /home/workspace/BMC_2603/manifest/temp/log/task.log
root@7137cac67541:/home/workspace/BMC_2603/manifest#

环境信息

  • 操作系统:Ubuntu 24.04

  • 软件版本:OpenUBMC2603

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

重现步骤

  1. [第一步]

  2. [第二步]

  3. [第三步]

期望结果

可以编译通过

实际结果

有报错,bmc_sdk.zip的版本应该与bmc_sdk.zip是对应的

尝试过的解决方案

manifest来自manifest-代码预览-manifest:基于Ubuntu 24.04与Docker的开发环境配置项目 - AtomGit | GitCode

bmc_sdk.zip来自bmcsdk | 应用市场 | openUBMC

执行过python3 init.py - path ./bmc_sdk.zip -user USER -psw XX

分析结论

[详细总结您对此问题的分析结论]

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

:white_check_mark: 六、总结与推荐配置表

项目 推荐配置
Manifest 分支 br_release_openUBMC2603_xxx
BMC SDK bmc_sdk_26.03.zip 官方版本
Conan Remote openubmc_sdk, openubmc_dev, openubmc_opensource
Bingo 版本 0.6.121
Conan 版本 2.13.0 或以上
构建命令 bingo build -b openUBMC -r openubmc_dev
必须配置 tosupporte, show_version
点击此处查看详细分析解答

OpenUBMC 26.03 编译报错问题分析与解决方案

根据您提供的详细日志信息和上下文数据,本文将全面分析 OpenUBMC 26.03 版本在构建过程中出现的编译错误,并提供系统化的解决路径。


:magnifying_glass_tilted_left: 一、主要问题概述

您的构建流程中出现了 KeyError: 'pwd' 错误,具体表现为:

snmp/1.100.5@openubmc/stable: Calling source() in /root/.conan2/p/snmp87eae35a538eb/s
ERROR: KeyError: 'pwd'

同时日志中还提示:

  • 不能从 yaml 文件中获取到键值 tosupporte/default/fixed_version, 没有相关配置
  • WARN: 未配置 show_version 字段

这表明构建环境、manifest.yml 配置文件与 SDK 版本之间存在不兼容或缺失配置项的问题。

该问题广泛存在于 OpenUBMC 26.03、25.12 等 Conan V2 构建环境中,是典型的“环境与 SDK 不匹配”或“Conan 源码构建阶段访问系统路径失败”的问题。


:puzzle_piece: 二、根本原因分析

结合知识图谱数据与搜索结果,此问题的根本原因如下:

1. KeyError: 'pwd' 是因错误触发了源码构建

  • 理想情况snmp/1.100.5@openubmc/stable 等组件应从远程 Conan 仓库直接下载二进制包。
  • 实际错误流:由于某些依赖未命中,Conan 触发了 source() 方法进行源码拉取,而该阶段脚本尝试执行 os.getcwd() 或使用 pwd 获取当前路径,但环境中 cwd 未正确设置,导致抛出 KeyError: 'pwd'

:white_check_mark: 关联证据:社区多个用户报告相同错误(如搜索结果 ID 4、5、6),且均发生在 Conan2 的 source() 阶段。文档指出:“本地仓有缓存为什么还是触发了源码构建?” → 表明缓存失效或远程配置错误。


2. BMC SDK 与 Manifest 版本不匹配

项目 当前使用
Manifest 分支 26.03
BMC SDK bmc_sdk.zip(可能来自 marketplace)
Conan 远程仓库 多个历史 URL,配置混乱

:warning: 重要提示:

  • BMC_SDK 必须与 manifest 分支严格对应(如 26.03 SDK 对应 manifest-26.03 分支)。
  • 若 SDK 不匹配,则 Conan 缺少必要的闭源组件缓存(如 snmp, libmc4lua, account),从而强制进入源码构建流程,进而触发 KeyError: 'pwd'

:link: 根据知识图谱:BMC_SDK 是包含所有闭源组件(如 HI1711 工具链、安全模块)的核心包,缺失会导致构建失败。


3. tosupporte/default/fixed_version 配置缺失

日志提示:

不能从 yaml 文件中获取到键值 tosupporte/default/fixed_version, 没有相关配置

这表示 manifest.yml 文件中缺少关键字段:

tosupporte:
  default:
    fixed_version: "26.03.00.01"
    code: "default"

此字段用于标识兼容性版本,尤其在开发测试阶段可暂时忽略,但不建议长期缺失。

:white_check_mark: 源自官方文档与社区指南,见 doc chunk 7 推荐配置。


:white_check_mark: 三、完整解决方案步骤

:white_check_mark: 步骤 1:清除旧构建环境(清理缓存)

# 清除 Conan V2 缓存(关键!)
rm -rf ~/.conan2/p/*

# 可选:彻底清理(谨慎操作)
conan remove "*" -c

:light_bulb: 官方建议:长时间构建失败时,清除 .conan2/p/* 是首要操作,避免旧缓存污染新流程。


:white_check_mark: 步骤 2:确认并使用匹配的 BMC SDK

确保:

  • 使用 官网发布bmc_sdk_26.03.zip,而非旧版或任意来源的 SDK。
  • 下载地址应为:https://conan.openubmc.cn/bmc_sdk_latestopenubmc.cn/marketplace/bmc_sdk

操作命令:

# 删除旧 SDK
rm -rf ~/sdk ~/rtos_compiler

# 解压匹配版本 SDK 至 ~ 目录
unzip bmc_sdk_26.03.zip -d ~/

:warning: 依据知识图谱中 yaoshun1 提示:必须使用最新链接 https://conan.openubmc.cn/bmc_sdk_latest,否则无法下载 26.03 组件。


:white_check_mark: 步骤 3:正确配置 Conan 远程仓库

执行以下命令重置远程配置:

# 移除旧/错误远程
conan remote remove openbmc_sdk 2>/dev/null || true
conan remote remove openubmc_dev 2>/dev/null || true

# 添加 OpenUBMC 官方远程(关键)
conan remote add openubmc_sdk "https://conan.openubmc.cn/bmc_sdk_latest" --insecure --force
conan remote add openubmc_opensource "https://conan.openubmc.cn/openubmc_opensource" --insecure --force
conan remote add openubmc_dev "https://conan.openubmc.cn/conan_1/" --insecure --force

:link: 依据知识图谱:openubmc_devopenubmc_sdkBmcgo BuildConan 正确工作的必要 remote。


:white_check_mark: 步骤 4:补全 manifest.yml 配置项

编辑 manifest.yml 文件,在顶层添加:

tosupporte:
  default:
    fixed_version: "26.03.00.01"
    code: "default"

show_version: true

:white_check_mark: 此配置可消除警告,并防止低级解析错误。


:white_check_mark: 步骤 5:使用正确工具版本并重新初始化环境

# 升级 bingo 到最新版本(至少 0.6.121+)
bingo upgrade

# 检查版本
bingo -v

# 重新初始化环境(指定 SDK 路径)
python3 init.py -path ./bmc_sdk_26.03.zip -user your_username -psw your_password

:light_bulb: 提示:init.py 会自动配置 Conan Remote 和路径映射,是环境准备的关键一步。


:white_check_mark: 步骤 6:执行标准构建命令

# 推荐使用标准命令构建
bingo build -b openUBMC -r openubmc_dev -bt debug --stage rc

或显式调用:

bingo build -b openUBMC -bt debug -r openubmc_dev

:white_check_mark: -r openubmc_dev 指定开发仓库,确保能拉取到最新发布的组件。


:pushpin: 四、验证是否成功的关键命令

命令 作用
conan remote list 检查远程仓库是否为 bmc_sdk_latest 等官方地址
conan search snmp -r openubmc_sdk 查看 snmp 是否存在有效版本
ls ~/.conan2/p/snmp* 检查是否已缓存 snmp
cat manifest.yml | grep tosupporte 确认配置已添加

:test_tube: 五、附加调试建议

若仍报 KeyError: 'pwd'

请立即检查:

  1. 是否使用了非标准分支的 manifest
  2. 是否使用了 debug 包中的 SDK 覆盖 release 包(见 doc chunk 3 中 xuhaijun 回复)
  3. 是否 conan remote list 显示为 https://conan.openubmc.cn/bmc_sdk_latest

:white_check_mark: 终极判断:如果 conan search snmp -r openubmc_sdk 无法查到,说明 remote 配置错误或 SDK 不对。


:white_check_mark: 六、总结与推荐配置表

项目 推荐配置
Manifest 分支 br_release_openUBMC2603_xxx
BMC SDK bmc_sdk_26.03.zip 官方版本
Conan Remote openubmc_sdk, openubmc_dev, openubmc_opensource
Bingo 版本 0.6.121
Conan 版本 2.13.0 或以上
构建命令 bingo build -b openUBMC -r openubmc_dev
必须配置 tosupporte, show_version

:paperclip: 参考资料链接


通过以上步骤操作后,KeyError: 'pwd' 和组件缺失问题将得到有效解决,OpenUBMC 26.03 编译成功率显著提升

:white_check_mark: 最终建议命令序列:

# 1. 清理缓存
rm -rf ~/.conan2/p/*

# 2. 配置远程
conan remote add openubmc_sdk "https://conan.openubmc.cn/bmc_sdk_latest" --insecure --force
conan remote add openubmc_opensource "https://conan.openubmc.cn/openubmc_opensource" --insecure --force
conan remote add openubmc_dev "https://conan.openubmc.cn/conan_1/" --insecure --force

# 3. 初始化环境
python3 init.py -path ./bmc_sdk_26.03.zip

# 4. 开始构建
bingo build -b openUBMC -r openubmc_dev

按此流程操作,即可恢复正常构建流程。如有持续失败,请提供 /home/workspace/BMC_2603/manifest/temp/log/task.log 完整日志以进一步诊断。

问题已解决

麻烦问一下怎么解决的

组件的版本和openbmc的版本不匹配导致的。