Pull Request已成功合入, 合并人@CANN-robot
(感谢 Hyunbin 的贡献)变更摘要
此 PR 新增了 asc-comm 开发运行包(development run package)的构建与安装体系。通过新增的 build_package.sh 构建脚本,将项目中的公共头文件(include/aicore/hcomm)和实现细节头文件(src/aicore/hcomm/detail)打包为自解压的 .run 归档文件;同时提供了完整的安装器 install.sh,支持在 CANN 环境中安装、卸载、校验补丁,并具备事务性回滚、基线备份、版本兼容检查及本地修改保护机制。build.sh 中新增 --pkg/--package 参数以触发打包流程。
主要改动
- 新增
build.sh中的--pkg/--package参数: 在build.sh中新增PACKAGE变量及对应的命令行解析分支,当指定--pkg时跳过clean_build并调用scripts/package/build_package.sh构建运行包,同时抑制非测试模式下的提示日志。 - 新增
scripts/package/build_package.sh构建脚本: 实现打包核心逻辑:解析 CANN 路径、输出目录、版本号等参数,将公共头文件映射至asc/include/adv_api/hcomm、细节头文件映射至asc/impl/adv_api/detail/hcomm,生成 SHA256 清单(manifest.sha256)和版本元数据(version.info),通过makeself生成自解压.run文件。 - 新增
scripts/package/install.sh安装器: 嵌入运行包的安装脚本,支持--install/--uninstall/--check操作;包含 CANN 根路径自动探测(resolve_cann_root)、架构与 asc-devkit 版本校验(validate_package)、事务性快照与回滚(snapshot_transaction/rollback_transaction)、基线文件备份与恢复(record_new_baselines/restore_baseline),以及已修改文件的强制覆盖保护。 - 新增
scripts/package/help.info帮助信息: 为自解压包提供--install、--uninstall、--check、--install-path、--force等选项的使用说明,注明仅管理包清单内的路径而非全目录镜像。 - 新增
tests/package/test_run_package.sh集成测试: 验证构建产物的完整性(清单文件计数、头文件内容比对),并在模拟 CANN 环境中测试安装/卸载/重装循环、本地修改保护(修改后拒绝卸载/重装除非--force)、版本不兼容时拒绝修改 CANN 树的正确性。


代码审查
我已经逐文件审查了全部 12 个变更文件。以下是我的审查结论:
审查总结
逐文件审查结果:
| 文件 | 审查结论 |
|---|---|
.gitignore |
无问题 — 仅添加 build_out/ 到忽略列表 |
README.md |
无问题 — 新增开发验证 run 包使用说明,链接正确 |
README_en.md |
无问题 — 英文版同步更新,内容一致 |
build.sh |
无问题 — 新增 --pkg/--package 参数,条件逻辑(clean_build 跳过、日志屏蔽、与 -t 组合)均正确 |
docs/README.md |
无问题 — 表格描述更新为"开发验证run包" |
docs/README_en.md |
无问题 — 英文版同步更新 |
docs/en/guide/build_and_test.md |
无问题 — 新增完整的开发 run 包构建、安装、卸载文档,无危险指令 |
docs/zh/guide/build_and_test.md |
无问题 — 中文版同步,内容准确完整 |
scripts/package/build_package.sh |
无问题 — 新制包脚本:set -euo pipefail,路径校验,架构规范化,git dirty 检测,makeself 调用均正确 |
scripts/package/help.info |
无问题 — makeself 帮助文本,内容准确 |
scripts/package/install.sh |
无问题 — 新安装脚本:事务性安全(snapshot/rollback),路径白名单校验(is_allowed_path 中 case 的 * 在 bash 模式匹配中可跨越 /,正确处理子目录),校验和验证,版本/架构检查,属主检查,--force 支持 |
tests/package/test_run_package.sh |
无问题 — 覆盖提取、安装、重复安装、文件保护、卸载恢复、兼容性失败场景 |
发现数量:P0: 0, P1: 0, P2: 0, P3: 0
整体风险判断:低风险。此 PR 新增了 Hcomm 开发验证 run 包的完整工具链(制包、安装、卸载、测试),代码质量高,Shell 脚本遵循最佳实践(set -euo pipefail、变量引号保护、事务回滚、路径白名单校验),文档详尽准确。可以合入。
| 类型 | 数量 |
|---|---|
| 🔴 阻塞 | 0 |
| 🟡 建议 | 1 |
💬 仅评论


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.
For more, you also can visit HICANN.
PR Approval Progress
✅ Congratulations! All modules have met the lgtm and approve requirements.
Module Approval Details
| module | lgtm status | approve status |
|---|---|---|
| docs | ✅ YeZZzzz1, zhanghao_0689 (2/2) | ✅ zhanghao_0689 (1/1) |
| repo-cann/asc-comm | ✅ zhanghao_0689, jiangxinyu3, YeZZzzz1 (3/2) | ✅ zhanghao_0689, jiangxinyu3 (2/1) |
| tests | ✅ jiangxinyu3, YeZZzzz1, zhanghao_0689 (3/2) | ✅ jiangxinyu3 (1/1) |
💡 Tip:
- Committer can comment
/approveor/lgtm- Commenting
/approveimplies both code review (lgtm) and intent to merge (approve)
CLA Signature Pass
hbhdhd, thanks for your pull request. All authors of the commits have signed the CLA. 👍


/approve


/approve
/lgtm


Was This PR authored or co-authored using generative AI tooling?
[x] No
[ ] Yes
__1. AI Agent :
__2. AI Model :
__3. Prompt :
What this PR does / why we need it:
Which issue this PR fixes
(optional, in
fixes #<issue number>(, fixes #<issue_number>, ...)format, will close that issue when PR gets merged): fixes #Special notes for your reviewer:
Change Type / 改动类型
Testing / 测试信息
Checklist / 检查清单