组件打包conan包操作

问题描述

本地component_drivers组件做过一些修改(没有上传),可以成功编译,现在需要把这个组件编译结果打包成conan包,发给其他人使用,想问下具体操作是什么流程。

使用的conan2.0版本

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

:chequered_flag: 总结

步骤 命令
构建本地 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
点击此处查看详细分析解答

组件打包为 Conan 包的操作指南

openUBMC 开发体系中,组件的构建与打包是通过 Conan 包管理工具和 bingo 命令行工具协同完成的。以下是对组件打包为 Conan 包的完整操作流程说明。


:wrench: 操作环境要求

  • 操作系统:Ubuntu 24.04(或基于其的 Docker 镜像 Ubuntu:24.04.2_25.09
  • 软件版本
    • Conan 版本:推荐使用 2.13.0 及以上版本(Conan 2.x 已取代 1.x)
    • bingo 工具:集成在开发环境中,用于简化 Conan 操作
  • 硬件配置:建议至少 8GB 内存、4 核 CPU,以支持并行构建和缓存操作

:package: Conan 包简介

Conan 是 C/C++ 项目的依赖管理工具,在 openUBMC 体系中用于:

  • 管理第三方库、平台组件和自定义模块
  • 实现版本化、可复现的构建过程
  • 支持源码构建与二进制缓存

一个 Conan 包通常包含:

  • conanfile.py:定义构建逻辑、依赖、配置等
  • conan_package.tgz:打包后的二进制或资源文件
  • conaninfo.txtconanmanifest.txt:元数据和版本信息

:white_check_mark: 组件打包为 Conan 包的标准流程

第一步:进入组件源码目录

cd /path/to/your/component  # 如:iam, bmc_time 等

:warning: 必须在组件目录下执行 bingo 命令,否则命令不生效。


第二步:构建并生成 Conan 包

使用 bingo build 命令执行打包:

bingo build -bt debug --stage rc -r openUBMC_dev

参数说明:

参数 说明
-bt debug/release 构建类型,调试包或正式包
--stage dev/rc/stable 包发布阶段(开发/预发布/稳定)
-r openUBMC_dev 指定远程 Conan 仓库(默认)

:pushpin: 示例输出:

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/

第三步:(可选)上传 Conan 包至远程仓库

若需共享组件包,添加 -u 参数:

bingo build -bt debug --stage rc -u -r openUBMC_dev

:white_check_mark: 会将生成的包上传至 openUBMC_dev 远程仓库(位于 https://conan.openubmc.cn


:magnifying_glass_tilted_left: 查询已构建的 Conan 包

# 查看本地缓存中的包
conan search iam* -r=openUBMC_dev

# 查看具体包路径
conan cache path iam/1.20.31@openUBMC.release/rc

:hammer_and_wrench: 常见问题及解决方法

问题 原因 解决方案
下载组件(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"

:puzzle_piece: 高级配置(manifest.yml 中的依赖声明)

在产品级 manifest.yml 中声明组件依赖以实现集成:

dependencies:
  - conan: "huawei_secure_c"
  - conan: "kmc"
  - conan: "vpd"
    options:
      board_name: openUBMC

:warning: 不建议填写版本号,避免多处维护冲突。


:chequered_flag: 总结

步骤 命令
构建本地 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

:books: 参考资料

  • openUBMC Conan 仓库
  • bingo --help 获取完整命令帮助
  • 文档 ID: 2, 3, 4, 6, 9(来自知识库)

如有其他构建异常,请提供完整日志文件(如 fetch_component_code.log)以便进一步分析。

相关链接:

  1. bmc studio使用问题
  2. busybox构建问题
  3. 25.12版本编译失败
  4. account组件bmcgo build报错
  5. 原则和约束 | 文档中心 | openUBMC

方案:使用conan仓交换conan包。

华为基于坐标的权限控制方案实现联调conan包交换,具体实现分为几步:

  1. 为conan仓分别创建两个账号,如dev账号和release账号,这两个账号都可以读conan仓的包。
  2. 使用conan remote add xxx url创建无程仓xxx
  3. dev能上传坐标为@openubmc.dev/dev的包,此类包只是联调用,可以将账号密码提供给团队开发者,使用bingo build -r xxx -u命令将构建出来的dev包上传到xxx远程仓。
  4. release账号能上传坐标为@openubmc.dev/dev@openubmc/stable的包,此类包用于产品集成,只提供给CI工程。

其它人在使用时需要修改组件的service.json或manifest.yml,集成联调用的conan包,需要确保上传和下载方同时配置了同一个conan仓库,可执行conan remote list查看conan仓列表。

好的,我试试。谢谢。