25.12 LTS SP2 高可用组件编译失败

问题描述

部分组件编译失败,如adaptive_lm等多个闭源组件

Build adaptive_lm start, logfile: /root/workspace/csg/manifest-25.12_2026.12.31_LTS_SP2/temp/log/conan_Build_adaptive_lm.log
Download boost start, logfile: /root/workspace/csg/manifest-25.12_2026.12.31_LTS_SP2/temp/log/conan_Download_boost.log
Download computing_component_raid start, logfile: /root/workspace/csg/manifest-25.12_2026.12.31_LTS_SP2/temp/log/conan_Download_computing_component_raid.log
Build adaptive_lm not ok.

环境信息

详细日志

======== Computing dependency graph ========
Graph root
cli
Requirements
adaptive_lm/v100r009c10spc101b200@openubmc/stable#3f805358da46d409d87c6616b6ebf090 - Cache

======== Computing necessary packages ========
adaptive_lm/v100r009c10spc101b200@openubmc/stable: Forced build from source
Requirements
adaptive_lm/v100r009c10spc101b200@openubmc/stable#3f805358da46d409d87c6616b6ebf090:221311549f17f23f5f1ccb96517a95f7b16b6afc - Build

======== Installing packages ========
adaptive_lm/v100r009c10spc101b200@openubmc/stable: WARN: Trying to remove corrupted source folder
adaptive_lm/v100r009c10spc101b200@openubmc/stable: WARN: This can take a while for big packages
adaptive_lm/v100r009c10spc101b200@openubmc/stable: Calling source() in /root/.conan2/p/adapt5ee915a55f00a/s/src
Formatted output saved to ‘/root/workspace/csg/manifest-25.12_2026.12.31_LTS_SP2/temp/log/swbom_data/dependencies_adaptive_lm.json’
ERROR: adaptive_lm/v100r009c10spc101b200@openubmc/stable: Error in source() method, line 30
git.fetch_commit(
TypeError: stat: path should be string, bytes, os.PathLike or integer, not NoneType
sh-5.2#
sh-5.2# conan list
Found 133 pkg/version recipes matching * in local cache
Local Cache
abseil
abseil/20250127.0.004@openubmc/stable
account
account/1.101.8@openubmc/stable
adaptive_lm
adaptive_lm/v100r009c10spc101b200@openubmc/stable
ai_engine
ai_engine/1.100.5@openubmc/stable

咨询问题:

1、高可用包中看起来是已经marge成功了,conan list也已经存在了,为什在编译的时候还需要重新编译一次?

2、adaptive_lm组件为什么会编译失败,还需要从conan仓库拉指定版本?

答案内容由AI生成,仅供参考:
根据您提供的上下文信息,现针对您咨询的两个问题进行分析和解答。

问题 1:组件已存在于缓存,为何编译时仍被强制从源码构建?

根据上下文信息,这个问题的核心原因在于 Conan 的 “Forced build from source” 行为

  • 触发条件:在您的构建日志中,明确出现了 adaptive_lm/v100r009c10spc101b200@openubmc/stable: Forced build from source 的提示。这表示构建系统要求该组件必须从源代码重新编译,而不是使用缓存中已有的二进制包。
  • 原因分析:组件被强制从源码构建,通常是因为构建命令中使用了 --build=missing--build 参数,或者 conanfile 中配置了 build_policy = "missing"。在您的日志中,可以看到构建命令包含 --build=missing,这会导致 Conan 在无法找到预编译的二进制包时,从源码进行构建。
  • 关键点:虽然 conan list 显示了 adaptive_lm配方(recipe) 存在于本地缓存,但这并不意味着其对应的二进制包(binary package) 也存在。如果二进制包缺失(例如,被清理、上传不完整,或者构建环境/配置与缓存中的二进制包不匹配),Conan 就会触发从源码构建。此外,日志中 WARN: Trying to remove corrupted source folder 也暗示了本地缓存的源文件夹可能已损坏,进一步导致了源码构建的触发。

问题 2:adaptive_lm 组件编译失败的原因是什么?

根据上下文信息,adaptive_lm 组件编译失败的直接原因是source() 方法中执行 git.fetch_commit() 时,路径参数缺失

  • 具体错误:日志中明确指出了错误信息:
    ERROR: adaptive_lm/v100r009c10spc101b200@openubmc/stable: Error in source() method, line 30
    git.fetch_commit(
    TypeError: stat: path should be string, bytes, os.PathLike or integer, not NoneType
    
  • 问题根源:这个错误意味着,在 adaptive_lm 组件的 conanfile.py 脚本中,第 30 行的 git.fetch_commit() 函数被调用时,传入了一个 None 值作为路径参数,而不是一个有效的文件或目录路径。这通常表明:
    1. 引用的仓库或提交无效git.fetch_commit() 尝试从某个 Git 仓库拉取特定的代码提交,但仓库地址或提交 ID 配置错误,导致无法正确获取到代码路径。
    2. 高可用包依赖未正确集成:您使用的 iBMC300_5.12.0.21_haf.tar.gz高可用包,应包含这些闭源组件的全部源代码或必要的 Git 信息。如果解压或集成过程中出现问题,代码路径没有被正确放置到 Conan 的源目录中,就会导致 conanfile.py 在尝试查找代码时得到 None
  • 补充说明:关于您提到的“从 Conan 仓库拉指定版本”,adaptive_lm 组件的配方 (v100r009c10spc101b200@openubmc/stable) 确实从 Conan 缓存中被解析到了。但是,它的构建过程(source() 方法)依赖于外部的 Git 仓库来获取实际代码。在您的环境配置下,该 Git 操作失败了。

建议解决方向

  1. 检查高可用包集成:确认提供的 iBMC300_5.12.0.21_haf.tar.gz 等包已正确解压并覆盖~/sdk 目录或 Conan 的特定路径下。可以尝试重新执行环境初始化脚本。
  2. 清理缓存并重新构建:由于日志中有 corrupted source folder 的警告,建议先清理 adaptive_lm 的本地缓存:
    conan remove "adaptive_lm/*" -c
    
    然后重新执行构建命令。
  3. 检查 conanfile.py 配置:联系高可用组件的提供方,确认 adaptive_lm/v100r009c10spc101b200@openubmc/stable 这个版本的 conanfile.py 中,关于 git.fetch_commit() 的 Git 仓库地址和提交 ID 配置是否正确,以及该仓库是否对您的构建环境可达。

社区不会有高可用组件,请联系项目支持定向获取