拉取最新manifest编包报错

拉取最新manifest编包报错如下:

Recipe not fount in openubmc_sdk: luajit/2.1.0.b024@openubmc/stable#d5f1164970eb12e740fb7f609492f0c2
Process DownloadComponentRecipe-6:88:
Traceback (most recent call last):
  File "/usr/lib/python3.12/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/usr/local/lib/python3.12/dist-packages/bmcgo/component/component_helper.py", line 52, in run
    self.tools.download_conan_recipes(self.comp, self.remote_list)
  File "/usr/local/lib/python3.12/dist-packages/bmcgo/utils/tools.py", line 665, in download_conan_recipes
    raise BmcGoException(f"Download {conan_version} failed")
bmcgo.errors.BmcGoException: Download luajit/2.1.0.b024@openubmc/stable#d5f1164970eb12e740fb7f609492f0c2 failed
WARN: 下载组件 (luajit/2.1.0.b024@openubmc/stable#d5f1164970eb12e740fb7f609492f0c2) 的构建配方(recipe)失败, 退出码: 1

显示无法下载组件 luajit。

通过查找luajit发现当前默认的 openubmc_opensource 仓中没有这个组件,在上一版本的 openubmc_sdk 仓中有一个旧版本的 luajit。

root@5568532dab63:/home/workspace/source/manifest# conan search luajit
Connecting to remote 'openubmc_opensource' with user 'gg297231604'
Connecting to remote 'openubmc_sdk' with user 'gg297231604'
Found 1 pkg/version recipes matching luajit in openubmc_sdk
openubmc_opensource
  ERROR: Recipe 'luajit' not found
openubmc_sdk
  luajit
    luajit/2.1.0.b022@openubmc/stable

请问在哪里可以拉取最新的luajit组件? 或者如何指定使用旧版本的组件?

答案内容由AI生成,仅供参考:
根据您的要求,从提供的回答内容中,明确标有“## 解决方案”和“## 总结建议”的章节。已原样提取如下:


解决方案

1. 移除过时远程仓库,添加正确仓库

根据上下文,应执行以下命令清理并配置正确的远程:

# 移除过时的远程
conan remote remove openbmc-opensource
conan remote remove openbmc_sdk

正确的官方远程仓库地址为 https://conan.openubmc.cn/bmc_sdk.latest,该地址是“the URL of the official Conan remote repository used for downloading openUBMC SDK packages”。您也可以使用 openubmc_dev 远程(该仓库常用于获取组件,如 luajit/2.1.0.B012@openUBMC.release/rc 即从 openubmc_dev 获取)。

例如添加 openubmc_dev 远程(URL 请参考官方文档或已知配置):

conan remote add openubmc_dev <正确的URL>

添加后,使用 conan remote list 确认配置正确。

2. 在正确仓库中搜索可用版本

使用 conan search 命令在目标远程中查找 luajit 组件:

conan search 'luajit/*' -r openubmc_dev

(参考自文档片段:使用 conan search 'name/*' -r openubmc_dev 获取组件版本清单)

如果能找到 luajit/2.1.0.b024@openubmc/stable,则直接重新执行构建即可。

3. 如果仍未找到版本,更新本地 SDK 环境

若正确仓库中也缺失该版本,可能是本地 SDK 包未更新。参考常见问题处理方案:

“下载官网bmc_sdk,替换本地~/sdk、~/rtos_compiler文件夹(先删除本地再复制)”
(来源:Document Chunk 2)

具体操作:

  • 下载与当前 manifest 匹配的最新 bmc_sdk 包(例如 bmc_sdk_26.03,根据实体“Conan OpenUBMC SDK Latest was replaced with bmc_sdk_26.03”)。
  • 删除本地 ~/sdk~/rtos_compiler 目录。
  • 将新下载的 SDK 中对应目录复制到 ~/ 下。
  • 然后重新执行 bingo build

注意:确保 bingo 工具也为最新版本,版本不匹配也可能导致组件下载失败(参考 Document Chunk 6)。

4. 临时降级方案:使用旧版本

如果您希望临时使用旧版 luajit 绕过问题,可以在 manifest 中显式指定现有的旧版本。例如将 luajit 的版本改为 luajit/2.1.0.b022@openubmc/stable(该版本存在于 openubmc_sdk 中)。

修改位置通常在 manifest.yml 配置文件(如 framework.ymlhardware.yml 或具体组件的 mds/service.json)中。参考上下文中的做法:“在 manifest 中引入了错误的组件名包,检查 build/subsys 下的组件的版本配置”。

但请注意:openubmc_sdk 已被标记为过时,此方案仅为临时绕过,长期应迁移到正确远程并获取正确版本。


总结建议

步骤 操作 参考来源
1 移除 openbmc-opensourceopenbmc_sdk 远程 实体关系:conan remote remove 用于删除过时远程
2 添加 openubmc_devbmc_sdk.latest 远程 实体 https://conan.openubmc.cn/bmc_sdk.latest 为官方仓库
3 在新远程中搜索 luajit/2.1.0.b024 Document Chunk 2(使用 conan search
4 若缺失,更新本地 SDK Document Chunk 2(替换 SDK 目录)
5 如需临时解决,降级版本为 b022 Document Chunk 4(指定具体版本)

请按照上述顺序尝试,大概率能解决组件找不到的问题。如果问题依旧,请检查 bingo 版本是否与 bmc_sdk 配套,并参考 manifest 中推荐的 Docker 镜像版本。

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

根据您提供的报错信息和上下文知识库,以下是针对“无法下载 luajit/2.1.0.b024@openubmc/stable”问题的分析与解决建议。


问题根因

您当前使用的远程仓库 openubmc_opensourceopenubmc_sdk 已被标记为过时

  • openbmc-opensource(即您配置的 openubmc_opensource)是“previously used Conan remote repository that is now considered incorrect or outdated and should be removed”。
  • openbmc_sdk(即您配置的 openubmc_sdk)的 URL https://conan.openubmc.cn/bmc_sdk_25.09 是“outdated and not to be used for current openUBMC builds”。

因此,这两个仓库中不包含 luajit/2.1.0.b024 的最新组件,openubmc_sdk 中仅有旧版本 b022,导致构建时 recipe 找不到。


解决方案

1. 移除过时远程仓库,添加正确仓库

根据上下文,应执行以下命令清理并配置正确的远程:

# 移除过时的远程
conan remote remove openbmc-opensource
conan remote remove openbmc_sdk

正确的官方远程仓库地址为 https://conan.openubmc.cn/bmc_sdk.latest,该地址是“the URL of the official Conan remote repository used for downloading openUBMC SDK packages”。您也可以使用 openubmc_dev 远程(该仓库常用于获取组件,如 luajit/2.1.0.B012@openUBMC.release/rc 即从 openubmc_dev 获取)。

例如添加 openubmc_dev 远程(URL 请参考官方文档或已知配置):

conan remote add openubmc_dev <正确的URL>

添加后,使用 conan remote list 确认配置正确。

2. 在正确仓库中搜索可用版本

使用 conan search 命令在目标远程中查找 luajit 组件:

conan search 'luajit/*' -r openubmc_dev

(参考自文档片段:使用 conan search 'name/*' -r openubmc_dev 获取组件版本清单)

如果能找到 luajit/2.1.0.b024@openubmc/stable,则直接重新执行构建即可。

3. 如果仍未找到版本,更新本地 SDK 环境

若正确仓库中也缺失该版本,可能是本地 SDK 包未更新。参考常见问题处理方案:

“下载官网bmc_sdk,替换本地~/sdk、~/rtos_compiler文件夹(先删除本地再复制)”
(来源:Document Chunk 2)

具体操作:

  • 下载与当前 manifest 匹配的最新 bmc_sdk 包(例如 bmc_sdk_26.03,根据实体“Conan OpenUBMC SDK Latest was replaced with bmc_sdk_26.03”)。
  • 删除本地 ~/sdk~/rtos_compiler 目录。
  • 将新下载的 SDK 中对应目录复制到 ~/ 下。
  • 然后重新执行 bingo build

注意:确保 bingo 工具也为最新版本,版本不匹配也可能导致组件下载失败(参考 Document Chunk 6)。

4. 临时降级方案:使用旧版本

如果您希望临时使用旧版 luajit 绕过问题,可以在 manifest 中显式指定现有的旧版本。例如将 luajit 的版本改为 luajit/2.1.0.b022@openubmc/stable(该版本存在于 openubmc_sdk 中)。

修改位置通常在 manifest.yml 配置文件(如 framework.ymlhardware.yml 或具体组件的 mds/service.json)中。参考上下文中的做法:“在 manifest 中引入了错误的组件名包,检查 build/subsys 下的组件的版本配置”。

但请注意:openubmc_sdk 已被标记为过时,此方案仅为临时绕过,长期应迁移到正确远程并获取正确版本。


总结建议

步骤 操作 参考来源
1 移除 openbmc-opensourceopenbmc_sdk 远程 实体关系:conan remote remove 用于删除过时远程
2 添加 openubmc_devbmc_sdk.latest 远程 实体 https://conan.openubmc.cn/bmc_sdk.latest 为官方仓库
3 在新远程中搜索 luajit/2.1.0.b024 Document Chunk 2(使用 conan search
4 若缺失,更新本地 SDK Document Chunk 2(替换 SDK 目录)
5 如需临时解决,降级版本为 b022 Document Chunk 4(指定具体版本)

请按照上述顺序尝试,大概率能解决组件找不到的问题。如果问题依旧,请检查 bingo 版本是否与 bmc_sdk 配套,并参考 manifest 中推荐的 Docker 镜像版本。

重新创建容器,拉取manifest编译成功。