已合并
feat: 新增deb/rpm包custom_postinst.sh和custom_prerm.sh #1196
liu-wei创建于 7月29日
feat: 新增deb/rpm包custom_postinst.sh和custom_prerm.sh #1196
已合并
liu-wei创建于 7月29日
liu-wei
liu-wei成员
7月29日

描述

新增 deb/rpm 包的自定义安装后脚本和卸载前脚本,用于 ops-cv 包的生命周期管理。

custom_postinst.sh(安装后执行)

  • 安装 es_cv whl 到 site-packages
  • 清理 ops_cv 源码目录
  • 创建 ops_cv impl 的 __init__.py 文件
  • 跨架构 .so 拷贝:当包架构(PKG_ARCH_NAME)与当前机器架构(uname -m)不一致时,复制 graph/host so 到实际架构目录

custom_prerm.sh(卸载前执行)

  • pip uninstall es_cv 包
  • 删除 site-packages 中的 es_cv 文件
  • 删除 ops_cv impl 的 __init__.py
  • 删除跨架构 .so 文件及空目录
  • 清理 whl 源码残留和空目录

变更文件

文件 行数 说明
scripts/package/ops_cv/rpm_deb/custom_postinst.sh 66 安装后脚本
scripts/package/ops_cv/rpm_deb/custom_prerm.sh 55 卸载前脚本

关联的Issue

#665

测试

文档更新

类型标签

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

变更摘要

本 PR 为 deb/rpm 包新增了两个生命周期脚本:custom_postinst.sh(安装后执行)和 custom_prerm.sh(卸载前执行),用于在包安装/卸载时自动处理 ops_cv 相关的 Python wheel 安装、__init__.py 文件管理以及跨架构 .so 文件的拷贝与清理工作。

主要改动

  • 新增 custom_postinst.sh:通过 run_pip 函数将 ops_cv/es_packages/whl/ 目录下的 es_cv wheel 包安装至 python/site-packages,安装后清除源码目录,并为 ops_cv 实现目录及其 dynamic/ 子目录创建 __init__.py 文件;同时支持跨架构场景——当 PKG_ARCH_NAME 与实际 uname -m 不一致时,自动将 libopgraph_cv.so 和 libophost_cv.so 从包架构目录拷贝到实际架构目录。
  • 新增 custom_prerm.sh:通过 pip 卸载 es_cv,清理 site-packages 下的 es_cv 目录及相关 .dist-info;删除先前创建的 __init__.py 文件;反向清理跨架构拷贝的 .so 文件及其所在空目录;最后递归清理 ops_cv/es_packages/whl/ 及 python/site-packages/ 的空目录层级。
likedislike
不准确?
atomgit-bot
atomgit-bot
7月29日 评论:

代码审查

审查总结

优先级 数量 文件
P2 3 custom_postinst.sh (2), custom_prerm.sh (1)
P3 1 custom_postinst.sh (1)
P0/P1 0 —

已审查文件确认

  • scripts/package/ops_cv/rpm_deb/custom_postinst.sh:发现 3 个问题(P2×2, P3×1)
  • scripts/package/ops_cv/rpm_deb/custom_prerm.sh:发现 1 个问题(P2×1)

整体风险评估

中等风险。 两个脚本的核心逻辑(whl 安装/卸载、__init__.py 管理、跨架构 so 拷贝/清理)基本正确。主要风险来自两方面:

  1. INSTALL_PATH 环境变量未做空值校验——若打包系统未正确传入该变量,两个脚本的路径操作会退化到以 / 为根的危险路径(如 rm -rf /ops_cv)。建议在两个脚本开头添加空值检查。
  2. custom_postinst.sh 中跨架构 so 拷贝后的 chmod 755 使用了通配符 *,会意外修改目标目录下所有文件的权限而非仅复制的文件。

两个脚本均遵循了项目既有的 Shell 编码风格(不使用 set -e,错误通过 2>/dev/null 和 || true 静默处理),这在包管理器维护脚本场景下是可接受的。

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

💬 仅评论

likedislike
不准确?
CANN-robotCANN-robot成员
7月29日 添加了label:cann-cla/yes
liu-wei
liu-wei成员
7月29日 评论:

compile

likedislike
此处折叠了55条消息 查看更多
CANN-robotCANN-robot成员
7月30日 添加了label:approved
zl_hw成员
7月30日 评论:

/lgtm
/approve

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