已合并
refactor: 拆分build.sh为模块化脚本 #1204
liu-wei创建于 7月30日
refactor: 拆分build.sh为模块化脚本 #1204
已合并
Pull Request已成功合入, 合并人@CANN-robot
(感谢 liu-wei 的贡献)atomgit-bot
7月30日 评论:
7月30日 评论:
变更摘要
此 PR 将原先单体式的 build.sh(约 1884 行)拆分为多个功能模块化的脚本文件,放置于 scripts/ 目录下。重构后 build.sh 仅保留入口逻辑,各职责分别由独立脚本承载:构建清理、CMake 参数组装、全局配置与工具函数、命令行选项解析与校验、示例构建、算子代码生成、库与二进制包构建、单元测试构建等。整体变更不引入新功能,仅对原有构建逻辑进行模块化重组。
主要改动
build.sh精简为入口脚本:原先约 1884 行的单体构建脚本被清空,所有业务逻辑迁移至scripts/下的各子模块脚本中。- 新增
scripts/build_conf.sh全局配置模块:提取了全局变量(如RELEASE_TARGETS、SUPPORT_COMPUTE_UNIT_SHORT)、路径定义(BUILD_PATH、INCLUDE_PATH、LIB_PATH等)、以及工具函数(in_array、normalize_compute_unit、check_option_validity、print_error等)。 - 新增
scripts/build_options.sh命令行解析模块:提取了usage帮助信息(按子命令分类展示)、checkopts选项解析、check_param参数校验、check_help_combinations组合校验,以及set_create_libs、set_ut_mode、parse_changed_files等辅助函数。 - 新增
scripts/build_cmake.shCMake 参数组装模块:提取了custom_cmake_args、assemble_cmake_args和cmake_init函数,负责将各类构建开关(ASAN、Valgrind、覆盖率、静态库等)转换为 CMake 参数并执行项目初始化。 - 新增
scripts/build_lib.sh/build_clean.sh/build_ut.sh/build_example.sh/build_genop.sh构建执行模块:分别封装了库构建(build_lib、build_binary、build_package、build_static_lib)、清理(clean_build、clean_build_out、clean_build_binary)、单元测试构建(build_ut)、示例构建运行(build_example及 eager/graph 模式)、以及算子脚手架代码生成(gen_op、gen_aicpu_op)等逻辑。


atomgit-bot
7月30日 评论:
7月30日 评论:
代码审查
所有 9 个文件均已审查。总结如下。
审查总结
按优先级统计
| 优先级 | 数量 |
|---|---|
| P1 | 1 |
| P2 | 3 |
| P3 | 4 |
各文件审查结果
| 文件 | 结果 |
|---|---|
build.sh |
无新增问题(管道 + set -eo pipefail 在 bash 中的退出码传播经分析是正确的) |
scripts/build_clean.sh |
无问题 |
scripts/build_cmake.sh |
1 个 P3(不必要的命令替换) |
scripts/build_conf.sh |
2 个 P2(COLOR_RED 未定义、ASCEND_HOME_PATH 可能为空)、1 个 P3(cann_3rd_lib_path 缺少 =) |
scripts/build_example.sh |
无独立新增问题(ASCEND_HOME_PATH 问题已在 build_conf.sh 中报告) |
scripts/build_genop.sh |
1 个 P2(退出码被 echo 覆盖 + Python 缺失无错误退出) |
scripts/build_lib.sh |
无新增问题 |
scripts/build_options.sh |
1 个 P3(死代码 THREAD_NUM 赋值) |
scripts/build_ut.sh |
1 个 P1(反引号命令替换导致 find 输出被当作命令执行)、1 个 P3(=~ 应为 ==) |
整体风险评估
本次重构将约 1884 行的单体 build.sh 拆分为 8 个模块化脚本,结构清晰。但引入了 1 个 P1 级别缺陷(build_ut.sh 中反引号包裹 find 可能造成意外命令执行)和 3 个 P2 级别缺陷(颜色变量丢失、路径变量可能为空、genop 退出码被吞没),这些需要在上线前修复。另有 4 个 P3 级别的代码质量改进建议。整体风险:中等偏高,建议修复 P1 和 P2 问题后合入。
| 类型 | 数量 |
|---|---|
| 🔴 阻塞 | 1 |
| 🟡 建议 | 4 |
⛔ 需要修改


7月30日 添加了label:cann-cla/yes
CANN-robot
7月30日 评论:
7月30日 评论:
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) | ✅ 王林木 (1/1) |
💡 Tip:
- Committer can comment
/approveor/lgtm- Commenting
/approveimplies both code review (lgtm) and intent to merge (approve)
CLA Signature Pass
liu-wei, thanks for your pull request. All authors of the commits have signed the CLA. 👍


此处折叠了89条消息 查看更多
26 天前 添加了label:lgtmapproved
26 天前 关闭了关联的issue
26 天前 合入了pull request
描述
将 build.sh(~1900行)按职责拆分为 8 个模块化脚本,提升可维护性和复用性。
模块结构
build.shscripts/build_conf.shscripts/build_options.shscripts/build_cmake.shscripts/build_lib.shscripts/build_ut.shscripts/build_example.shscripts/build_genop.shscripts/build_clean.sh功能等价性
--xxx参数行为一致关联的Issue
#670
测试
所有拆分脚本后的函数测试,覆盖29个用例场景,全都PASS,仓库基本编译出包功能验证okay。
文档更新
类型标签