已合并
fix: init_env自动同步版本并安装依赖(#148) #419
fix: init_env自动同步版本并安装依赖(#148) #419
已合并
sinat_31531339创建于 7月10日
sinat_31531339
sinat_31531339成员
7月10日

描述

本 PR 解决 Issue #148 中 init_env.sh 默认安装版本硬编码为 8.5.0 的问题,并补齐初始化脚本在管道执行、依赖安装、异常路径下的行为。

主要改动:

  • init_env.sh 默认从 version.cmake 解析 CANN 版本号,不再硬编码默认版本;本地缺少 version.cmake 时支持从 OAM_TOOLS_RAW_BASE_URL 远程获取。
  • install_python_deps 改为安装仓库 requirements.txt,本地缺失时支持远程获取;获取或安装失败时返回错误,避免静默跳过。
  • 远程 requirements 安装改用临时文件,不再依赖 /dev/stdin;pip 失败时保留最后几行错误输出,方便定位网络、权限或包冲突问题。
  • 非 root 用户不会执行 apt/yum 安装;缺少必需系统命令时明确提示 skipping installation (non-root user) 并返回失败,避免后续编译阶段才暴露问题。
  • CANN 版本解析失败或解析结果为空时显式报错并退出,避免拼接空版本下载 URL。
  • 修正 ops 包芯片类型映射:910_93/910C/A3 使用 A3910B/910b 使用 910b950 显式使用 950
  • 中英文 quick_install 文档删除执行脚本后手动安装 Python 依赖的旧步骤,与脚本自动安装行为保持一致。

关联的Issue

关联 Issue #148

测试

  • bash -n init_env.sh
  • bash init_env.sh --help
  • bash -c 'source <(sed "$ d" init_env.sh); get_cann_version_from_cmake version.cmake'
  • bash -c 'source <(sed "$ d" init_env.sh); get_ops_package_chip_type 910_93; get_ops_package_chip_type 910C; get_ops_package_chip_type 910B; get_ops_package_chip_type 910b; get_ops_package_chip_type 950'
  • 模拟远程 version.cmake 获取失败,验证输出明确错误并返回失败。
  • 模拟非 root 缺少 cmake,验证 install_system_deps 输出 non-root 跳过安装说明并返回失败。
  • 模拟远程 requirements.txt 获取失败,验证输出明确错误并返回失败。
  • 模拟 pip 安装失败,验证输出最后几行 pip 错误信息并返回失败。
  • git diff --check -- init_env.sh docs/zh/quick_install.md docs/en/quick_install.md
  • bash build.sh -u --ut --noexec

文档更新

更新 docs/zh/quick_install.mddocs/en/quick_install.md,删除过时的手动 pip install -r requirements.txt 步骤。

类型标签

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 sinat_31531339 的贡献)
sinat_31531339sinat_31531339成员
7月10日 关联了issue:[Requirement|需求建议]: oam仓编译所需依赖requirements.txt,是否可以自动化安装依赖
atomgit-bot
atomgit-bot
7月10日 评论:

变更摘要

此 PR 主要解决 init_env.sh 脚本中 CANN 版本硬编码问题(#148),将默认版本从固定的 8.5.0 改为从 version.cmake 动态解析,并支持在本地缺失该文件时通过 curl 从 oam-tools 远程仓库拉取。同时,Python 依赖安装逻辑从硬编码包列表重构为读取 requirements.txt,芯片类型到 ops 包名的映射也得到了修正。相关中英文文档同步更新。

主要改动

  • CANN 版本自动解析:新增 get_cann_version_from_cmake() 函数,从 version.cmake 中解析 set_cann_package(... VERSION "...") 获取版本号;若本地文件不存在且 curl 可用,则从 OAM_TOOLS_RAW_BASE_URL 远程拉取。CANN_VERSION 默认值从硬编码 "8.5.0" 改为空字符串,在 main() 中自动调用解析函数赋值。

  • 芯片类型映射修正:新增 get_ops_package_chip_type() 函数,将 910_93910CA3 等变体统一映射为 A3910B 映射为 910b,确保 ops 包名(如 Ascend-cann-A3-ops_...)正确匹配实际发布名称。

  • Python 依赖安装重构install_python_deps() 从硬编码 pytest>=9.0.1 等包列表改为读取仓库根目录的 requirements.txt,并在本地文件缺失时支持从远程 OAM_TOOLS_RAW_BASE_URL/requirements.txt 通过 curl 管道安装,增强了 curl 管道场景下的可用性。

  • 帮助信息动态化show_help() 中 CANN 版本默认值改为从 version.cmake 动态获取显示,--chip-type 选项说明增加了 910_93/A3950 等类型提示,示例中 910_93 的注释改为 "Use A3 ops package"。

  • 文档同步更新docs/zh/quick_install.mddocs/en/quick_install.md 删除了执行 init_env.sh 后再手动 pip install -r requirements.txt 的旧说明,与脚本自动安装依赖的行为保持一致。

likedislike
atomgit-bot
atomgit-bot
7月10日 评论:

代码审查

审查结论

各文件审查结果

文件 结果
docs/en/quick_install.md 无问题 — 删除了过时的手动 pip install 步骤,与 init_env.sh 的自动化行为保持一致
docs/zh/quick_install.md 无问题 — 同上,中文文档同步更新
init_env.sh 发现 2 个问题(1 个 P2 + 1 个 P3)

发现汇总

  • P2(1 个)main()get_cann_version_from_cmake 失败时依赖 set -e 隐式退出,缺少用户友好的错误总结。在 curl | bash 场景下若远程 version.cmake 不可达,用户难以快速定位原因。
  • P3(1 个)show_help 在无法解析版本时,--help 输出显示字面字符串 "version.cmake" 作为默认版本,容易让用户误解。

整体评估

此变更整体质量良好,核心逻辑正确:通过解析 version.cmake 自动同步 CANN 版本、映射芯片类型到正确的 ops 包名、使用 requirements.txt 替代硬编码依赖列表,三处改动均准确解决了 Issue #148 的需求。两个发现均为边缘场景的健壮性/体验改进,不影响正常功能路径。风险较低,建议合并。

⚠️ 已识别出整体风险,但无法提取行内评论,请参考整体评估。

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

CLA Signature Pass

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

likedislike
此处折叠了47条消息 查看更多
zhuliangying成员
7月11日 评论:

/approve

likedislike
CANN-robotCANN-robot成员
7月11日 添加了label:approved
fujun19成员
7月11日 评论:

/lgtm

likedislike
CANN-robotCANN-robot成员
7月11日 添加了label:lgtm
CANN-robotCANN-robot成员
7月11日 合入了pull request