产品构建
更新时间: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]#
一、构建产品包命令
直接构建
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]#
集成发布的组件场景:在组件发布以后,我们需要将其版本集成到产品包中,具体修改方法如下:
我们需要在
subsys
目录下添加新增的组件,组件属于什么类型,则添加到相应类型下,subsys
目录下有rc
和stable
区分,组件发布对应的类型并在rc
和stable
目录下同时更改,这里的示例为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
字段中,每配置一个组件,则集成进一个组件,这里不要去填版本号,填入版本号后,更新组件版本时,则需要变更多个文件yamldependencies: - 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]#