产品构建
更新时间:2024/12/27
在Gitcode上查看源码

  • openUBMC各个组件有其独立的构建代码以及代码仓,在manifest仓中会对所有参与构建的代码进行整合,通过拉起一个主组件解析依赖(conan内置解析逻辑),然后由依赖逻辑进行并发构建
  • 构建以manifest仓作为总入口,且将所有的构建能力都集成在bingo命令中以供开发者便捷使用

构建命令总览

  • 以下为bingo的帮助文档,这个帮助文档在manifest仓路径(也就是产品路径)和组件仓路径下显示内容不同,在产品构建时只需关注在manifest仓下的行为
shell
# 在manifest路径下执行命令
[04:51:58 root(1110):/home/workspace/codehome/manifest]# bingo --help
Integrated commands
    build              构建出包
    publish            构建版本发布包,-sc参数指定ToSupportE编码,-z参数指定ToGPD生产装备编码
    qemu               创建仿真环境,运行构建的产品包
    fetch              基于参数指定的组件版本拉取全量代码
Misc commands
    help               获取命令帮助

输入"bingo <command> -h"获取子命令帮助
[04:52:01 root(1110):/home/workspace/codehome/manifest]#
  • 从上面返回的信息,可以看到我们能够使用的命令,构建产品以及发布包只使用到其中一个命令,当前build命令与publish效果相同。
shell
[04:52:01 root(1110):/home/workspace/codehome/manifest]# bingo build --help
构建BMC

options:
  -h, --help            show this help message and exit
  -b BOARD_NAME, --board_name BOARD_NAME
                        单板包,可选值为build/product/|...>/下的目录名
  -bt BUILD_TYPE, --build_type BUILD_TYPE
                        构建类型,可选:debug(调试包), release(正式包), dt(开发者测试包)
  --stage STAGE         包类型,可选值为: dev(调试包), rc(预发布包), stable(发布包)
                        默认:dev
  --verbose             使能conan构建详细日志打印
  -ucc, --update_conan_cache
                        全量更新本地conan缓存
  -r REMOTE, --remote REMOTE
                        conan仓别名,请检查conan remote list查看已配置的conan仓
                        默认: openUBMC_dev
  -sc SUPPORTE_CODE, --supporte_code SUPPORTE_CODE
                        待发布的SupportE编码,可选值参考单板manifest.yml/tosupporte
                        默认:default
  -q, --enable_qemu     QEMU打包使能
  -qi, --qemu_in        QEMU使能,自动拉起qemu环境
  -as, --asan           Enable address sanitizer
  -v VERSION, --version VERSION
                        构建版本号,不指定时从manifest.yml读取
  -t TARGET, --target TARGET
                        构建目标,请查看build/target目录, 支持的目标:
                        personal
                        publish
[04:59:33 root(1110):/home/workspace/codehome/manifest]#

一、构建产品包命令

  1. 直接构建hpm

    • 现在,开始构建一个hpm包,查看上面的help文档,可分析其具体含义,命令执行结束后,可在manifest目录下的output目录下找到构建出来的hpm

      shell
      # 进入到集成构建环境
      cd manifest
      # -t personal: 构建目标,个人构建指 hpm 包
      # -b openUBMC: 单板名,查看帮助文档,可以看到支持哪些单板
      # -bt release: 构建类型,release正式包
      # --stage rc: 包类型,预发布包
      bingo build -t personal -b openUBMC -bt release --stage rc
    • 以下为列出的生成件目录下文件,其中rootfs_openUBMC.hpm即为产品包

      shell
      [05:22:48 root(1110):/home/workspace/codehome/manifest/output]# ls -la
       total 70172
       -rw-r--r--  1 root root     1349 Mar 12 17:22 openubmc.perf
       -rw-r--r--  1 root root    54813 Mar 12 17:22 package.lock
       drwxr-xr-x  5 root root     4096 Mar  7 14:32 packet
       -rw-r--r--  1 root root        0 Mar 12 17:20 prof.perf.lock
       -rw-r--r--  2 root root 70144173 Mar 12 17:22 rootfs_openUBMC.hpm
      [05:23:04 root(1110):/home/workspace/codehome/manifest/output]#
  2. 集成发布的组件场景:在组件发布以后,我们需要将其版本集成到产品包中,具体修改方法如下:

    • 我们需要在subsys目录下添加新增的组件,组件属于什么类型,则添加到相应类型下,subsys目录下有rcstable区分,组件发布对应的类型并在rcstable目录下同时更改,这里的示例为rc版本,stable版本后缀要更新为stable

      yaml
      # yaml-language-server: $schema=../../schema/subsys.rc.schema.json
      dependencies:
        - conan: "rackmount/1.20.97@openUBMC.release/rc"
        - conan: "Kunpeng/1.10.2@openUBMC.release/rc"
    • manifest.yml文件中配置添加的组件 新引入的组件,要在产品目录下配置相应的依赖,否则不会集成到产品包当中,dependencies 字段中,每配置一个组件,则集成进一个组件,这里不要去填版本号,填入版本号后,更新组件版本时,则需要变更多个文件

      yaml
      dependencies:
        - conan: "huawei_secure_c"
        - conan: "kmc"
        - conan: "Signature_Verify_CBB_Library"
        - conan: "sqlite3"
        - conan: "openssh"

二、构建发布包命令

  • 构建发布包命令与上面的命令稍有差异,如下所示

    shell
    # 进入到集成构建环境
    cd manifest
    # -t publish: 构建目标,发布包
    # -sc default: 发布包编码,这个编码可以在manifest.yml文件中的 tosupporte 字段中查询
    # -b openUBMC: 单板名,查看帮助文档,可以看到支持哪些单板
    # -bt release: 构建类型,release正式包
    # --stage stable: 包类型,发布包
    bingo build -t publish -sc default -b openUBMC -bt release --stage stable
  • 执行完成以后,在output目录下会生成文件,如下为output树(仅供参考)

    shell
    [07:05:30 root(1110):/home/workspace/codehome/manifest/output]# tree
    .
    |-- openUBMC.perf
    |-- package.lock
    |-- packet
    |   |-- openUBMC
    |   |   |-- openUBMC-CMT_1.00.00.00.zip
    |   `-- inner
    |       |-- release
    |       |   |-- package_openUBMC.lock
    |-- prof.perf.lock
    `-- rootfs_openUBMC.hpm
    
    4 directories, 6 files
    [07:05:31 root(1110):/home/workspace/codehome/manifest/output]#