已合并
适配ops-cv静态包构建 #1174
适配ops-cv静态包构建 #1174
已合并
jialimin1创建于 7月27日
jialimin1成员
7月27日

描述

适配 ops-cv 静态包(static library package)构建流程,增强 target 存在性检查和多包合并能力。

变更文件

文件 变更 说明
build.sh +7 -5 静态库构建前检查 target 是否存在;static_library_files 目录缺失时优雅跳过
cmake/static.cmake +33 -31 OPSTATIC_NAME target 创建跟随 OPHOST_NAME_static / OPAPI_NAME_static 存在性
scripts/ci/merge_static_packages.sh +204 新增:解压多个 cann-ops-cv-static tar.gz 包并合并静态库

关键改动

  1. build.shopapi_cv_staticcann_cv_static cmake target 在仅有 AICPU 算子时不存在,原代码无条件构建会报错。改为先 grep -wq 检查 target 存在再构建。
  2. build.shpackage_static()static_library_files 目录不存在时改为 return 0(非错误退出),适配无需打包静态库的场景。
  3. static.cmake:原 add_custom_target(${OPSTATIC_NAME}) 无条件创建,导致空 target 构建失败。改为仅在关联的 host/api 静态库 target 存在时才创建。
  4. merge_static_packages.sh:支持指定 SoC 版本,解压多个 tar.gz 包,合并 include 和 lib64 目录,处理同名 .o 文件冲突。

关联的Issue

#676

测试

静态库相关编译安装打包测试

文档更新

类型标签

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 jialimin1 的贡献)
Jjialimin1成员
7月27日 创建了 pull request,commit a5aa5d48
atomgit-bot
atomgit-bot
7月27日 评论:

变更摘要

此 PR 主要针对 ops-cv 静态包的构建流程进行适配,核心改动包括:在 build.shcmake/static.cmake 中为静态库构建目标增加了前置存在性检查,避免在缺少相关 target 时构建失败;调整了 package_static 函数中对 static_library_files 目录不存在时的错误处理策略;并新增了 scripts/ci/merge_static_packages.sh 脚本,用于在 CI 流程中合并多个 cann-ops-cv-static 静态包。

主要改动

  • build_static_lib 增加 CMake target 存在性检查: 在 build.sh 中,构建 opapi_cv_staticcann_cv_static 之前,先通过 grep -wq 检查 all_targets 中是否存在对应的 target,存在才执行 cmake --build,防止因 target 缺失导致构建报错。
  • package_static 错误处理逻辑放宽: 当 ${BUILD_PATH}/static_library_files 目录不存在时,不再报错退出,改为 return 0 正常返回,使打包流程对静态文件目录缺失具备容错能力。
  • cmake/static.cmake 添加前置守卫条件: 将 add_custom_target(${OPSTATIC_NAME}) 及其后续的 foreach 循环整体包裹在 if (TARGET ${OPHOST_NAME}_static OR TARGET ${OPAPI_NAME}_static) 条件中,仅在 host 或 API 静态目标存在时才生成相应的静态资源合并逻辑。
  • 新增 scripts/ci/merge_static_packages.sh 合并脚本: 该脚本支持解压多个 cann-ops-cv-static.tar.gz 包,合并其 include 目录和 lib64 中的 .o 文件(对 op_resource.cpp.o 采用保留较大文件的去重策略,其余 .o 直接覆盖),最终重新打包为一个合并后的静态发布包。
likedislike
atomgit-bot
atomgit-bot
7月27日 评论:

代码审查

审查总结

本次审查涵盖了 3 个文件的全部变更:

文件 审查结果
build.sh 发现 1 个 P3 问题(package_static 静默跳过缺少诊断提示)
cmake/static.cmake 发现 1 个 P2 问题(OR 守卫条件与内部 ar x 命令不一致)
scripts/ci/merge_static_packages.sh 发现 2 个 P3 问题(ls 解析脆弱、死变量)

问题统计: P0: 0, P1: 0, P2: 1, P3: 3

总体风险判断: 中等偏低。核心功能逻辑正确,最值得关注的是 cmake/static.cmake 中 OR 条件与内部命令不一致的问题,虽然在 ops-cv 的典型配置下两个组件库通常会同时存在,但一旦触发将导致构建失败。其余三个 P3 问题属于健壮性和可维护性改进,不影响正常流程。

类型 数量
🔴 阻塞 0
🟡 建议 1

💬 仅评论

likedislike
CANN-robotCANN-robot成员
7月27日 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
7月27日 评论:

Thanks for your pull-request.
The full list of commands accepted by me can be found at here
You can get sig-info at here


PR Approval Progress

Congratulations! All modules have met the lgtm and approve requirements.

Module Approval Details

module lgtm status approve status
repo-cann/ops-cv 刘伟, 周奇龙 (2/2) 刘伟, 周奇龙 (2/1)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)

CLA Signature Pass

jialimin1, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
此处折叠了42条消息 查看更多
jialimin1成员
7月31日 评论:

@zhouqilong

likedislike
sunday成员
7月31日 评论:

/lgtm
/approve

likedislike
CANN-robotCANN-robot成员
7月31日 添加了label:lgtm
CANN-robotCANN-robot成员
7月31日 关闭了关联的issue
CANN-robotCANN-robot成员
7月31日 合入了pull request