【重要!】近期遇到的一些Conan构建相关问题整体解答

背景

在25.12版本中,为了优化部分组件的版本名,使其更加的贴合Conan2.0,将4段式的版本改成3段式,结果导致触发了Conan的“不太合理”的逻辑(4段式永远比3段式要大),导致25.09版本一致在依赖25.12版本的组件,导致构建失败。

当前进展

这个问题为什么会被拿出来说呢,因为有点棘手,即使把版本回退,也需要一定的时间,无法解决当前阻塞性的问题,所以需要一些临时措施来解决。

我们想到了使用Conan分Repo的方式来解决不同版本兼容的问题。

之前:

https://conan.openubmc.cn/conan_1 所有版本共用一个conan仓

当前中间态(2026/1/6):

切换时需要清空本地缓存,避免构建时版本出错

最新bmc_sdk链接:https://conan.openubmc.cn/bmc_sdk_latest
开源仓链接:https://conan.openubmc.cn/openubmc_opensource
25.09sdk链接:https://conan.openubmc.cn/bmc_sdk_25.09

目标态(仍存在gap,在努力中)

https://conan.openubmc.cn/conan_1 —> latest,最新在研版本 (后续打算废弃,名字无意义)
https://conan.openubmc.cn/openubmc_latest —> latest,最新在研版本
https://conan.openubmc.cn/openubmc_25.12 —> openUBMC_25.12 聚合仓
https://conan.openubmc.cn/openubmc_25.09 —> openUBMC_25.09 聚合仓

通过聚合仓的方式,提供不同社区版本的Conan远程仓。同时我们讲sdk与社区仓库分开,切换仅影响使用的sdk版本,这样确保了同样的开源代码可以在不同的sdk上完成构建。

具体的说明指导近期也在编写中,如果需要可以先在论坛进行讨论和咨询。

改动会尽快上线,也欢迎大家提出自己的想法!

3 个赞

29更新:
在实际运作中,发现当前使用的conan服务(华为云)不支持聚合仓搜索功能,当前只能先通过多仓形式来管理,正在推动华为云功能落地中。

当前社区拥有的conan仓如下:

https://conan.openubmc.cn/conan_1 —> latest,25.12版本构建没问题,25.09问题仍在解决中
https://conan.openubmc.cn/openubmc_opensource —> 社区开源组件所有的conan仓
https://conan.openubmc.cn/openubmc_25.12 —> openUBMC_25.12 sdk仓
https://conan.openubmc.cn/openubmc_25.09 —> openUBMC_25.09 sdk仓

针对25.12版本开发者

继续使用https://conan.openubmc.cn/conan_1

针对25.09版本开发者
需要使用:

设置双remote仓,确保能搜索到正确的依赖组件。

由于安全合规等原因,当前每个Conan仓都需要进行用户鉴权,25.09版本会需要两次鉴权。

当前社区已实现remote分仓管理:

最新的sdk链接为:https://conan.openubmc.cn/bmc_sdk_latest
开源remote链接为:https://conan.openubmc.cn/openubmc_opensource

如需使用25.09版本,需要对应替换sdk链接为https://conan.openubmc.cn/bmc_sdk_25.09

1 个赞

试一下 https://conan.openubmc.cn/bmc_sdk_25.09

这里截图使用的conan地址就是这个https://conan.openubmc.cn/bmc_sdk_25.09 ,执行命令bmcgo build -r openubmc_09

25.09怎么会是libmc4lua/1.100.71?

先清理本地缓存,conan remove ‘*‘

感谢,排查了一下原因,可能是因为之前还在使用https://conan.openubmc.cn/conan_1 的地址,执行过编译,带了更高版本的缓存,通过conan remove libmc4lua/1.100.71@openubmc/stable 和conan remove libmgmt_protocol/1.80.64@openubmc/stable可以正常编译2509版本,直接运行conan remove ‘*‘会导致全部缓存会全部清除需要重新导入,建议还是单独清除过高版本组件缓存。

1 个赞

我更新说明了,感谢反馈

这两个仓库无法在jfrog中聚合,是否有类似 https://discuss.openubmc.cn/t/topic/1334的解决措施 :grinning_face:

比较难,随着版本越来越多,组合会比较多。聚合仓还是最佳的方式

也可以继续讨论哈

主页的文档要更新呀,我已经踩完坑编译了好久自己编译完了才看到这个
社区的remote还是不通

@zhenghaowei 使用这个


在opensource 出现下载失败的问题,重试3次还没有下载成功

解决了

怎么做到的