问题描述
本地component_drivers组件做过一些修改(没有上传),可以成功编译,现在需要把这个组件编译结果打包成conan包,发给其他人使用,想问下具体操作是什么流程。
使用的conan2.0版本
本地component_drivers组件做过一些修改(没有上传),可以成功编译,现在需要把这个组件编译结果打包成conan包,发给其他人使用,想问下具体操作是什么流程。
使用的conan2.0版本
答案内容由AI生成,仅供参考:
| 步骤 | 命令 |
|---|---|
| 构建本地 Conan 包 | bingo build -bt debug --stage rc |
| 构建并上传 | bingo build -bt debug --stage rc -u -r openUBMC_dev |
| 构建发布包 | bingo build -t publish -b openUBMC -bt release --stage stable |
在 openUBMC 开发体系中,组件的构建与打包是通过 Conan 包管理工具和 bingo 命令行工具协同完成的。以下是对组件打包为 Conan 包的完整操作流程说明。
Ubuntu:24.04.2_25.09)bingo 工具:集成在开发环境中,用于简化 Conan 操作Conan 是 C/C++ 项目的依赖管理工具,在 openUBMC 体系中用于:
一个 Conan 包通常包含:
conanfile.py:定义构建逻辑、依赖、配置等conan_package.tgz:打包后的二进制或资源文件conaninfo.txt、conanmanifest.txt:元数据和版本信息cd /path/to/your/component # 如:iam, bmc_time 等
必须在组件目录下执行
bingo命令,否则命令不生效。
使用 bingo build 命令执行打包:
bingo build -bt debug --stage rc -r openUBMC_dev
| 参数 | 说明 |
|---|---|
-bt debug/release |
构建类型,调试包或正式包 |
--stage dev/rc/stable |
包发布阶段(开发/预发布/稳定) |
-r openUBMC_dev |
指定远程 Conan 仓库(默认) |
示例输出:
Downloading conanmanifest.txt completed [17.89k] Downloading conaninfo.txt completed [2.97k] iam/1.20.31@openUBMC.release/rc: Package installed cb9794cb17b2f104bdddb1803a0104b29d12d75c Build successfully
构建成功后,Conan 包将被安装到本地缓存:
~/.conan/data/iam/1.20.31@openUBMC.release/rc/
若需共享组件包,添加 -u 参数:
bingo build -bt debug --stage rc -u -r openUBMC_dev
会将生成的包上传至
openUBMC_dev远程仓库(位于 https://conan.openubmc.cn)
# 查看本地缓存中的包
conan search iam* -r=openUBMC_dev
# 查看具体包路径
conan cache path iam/1.20.31@openUBMC.release/rc
| 问题 | 原因 | 解决方案 |
|---|---|---|
下载组件(xxx/xxx.dev/dev)的构建配方失败 |
本地 Conan 缓存损坏 | 删除缓存目录:rm -rf ~/.conan2/p(Conan 2.x) |
构建时卡在 mount 阶段 |
远程仓库无对应版本组件 | 使用 conan search 'name/*' -r openUBMC_dev 检查可用版本 |
| 认证失败 | Conan 远程登录过期 | 重新登录:conan user -r openUBMC_dev -p <password> <username> |
| 组件未集成到产品包 | 未在 manifest.yml 中声明依赖 |
在 dependencies 中添加:- conan: "component_name" |
manifest.yml 中的依赖声明)在产品级 manifest.yml 中声明组件依赖以实现集成:
dependencies:
- conan: "huawei_secure_c"
- conan: "kmc"
- conan: "vpd"
options:
board_name: openUBMC
不建议填写版本号,避免多处维护冲突。
| 步骤 | 命令 |
|---|---|
| 构建本地 Conan 包 | bingo build -bt debug --stage rc |
| 构建并上传 | bingo build -bt debug --stage rc -u -r openUBMC_dev |
| 构建发布包 | bingo build -t publish -b openUBMC -bt release --stage stable |
bingo --help 获取完整命令帮助如有其他构建异常,请提供完整日志文件(如 fetch_component_code.log)以便进一步分析。
相关链接:
方案:使用conan仓交换conan包。
华为基于坐标的权限控制方案实现联调conan包交换,具体实现分为几步:
conan remote add xxx url创建无程仓xxx@openubmc.dev/dev的包,此类包只是联调用,可以将账号密码提供给团队开发者,使用bingo build -r xxx -u命令将构建出来的dev包上传到xxx远程仓。@openubmc.dev/dev和@openubmc/stable的包,此类包用于产品集成,只提供给CI工程。其它人在使用时需要修改组件的service.json或manifest.yml,集成联调用的conan包,需要确保上传和下载方同时配置了同一个conan仓库,可执行conan remote list查看conan仓列表。
好的,我试试。谢谢。