| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
统一oam-tools安装文件及目录权限规范 Co-authored-by: q00889097<qinhan10@huawei.com> # message auto-generated for no-merge-commit merge: !576 merge master into master 统一oam-tools安装文件及目录权限规范 Created-by: qinhan123 Commit-by: q00889097 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本 PR 旨在统一 oam-tools 安装文件及目录的权限规范,主要做法是从 install.sh、opp_install.sh、opp_upgrade.sh、opp_uninstall.sh 等脚本中移除分散在安装、升级、卸载流程里的各类 chmod 目录/文件权限设置逻辑,使权限管理收敛到统一的规范中,避免各脚本各自调整权限造成的不一致。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [x] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/oam-tools!576 | 1 个月前 | |
feat: 支持 rpm/deb 包构建,修正文件缺失问题 Co-authored-by: sinat_31531339<yuanyue23@huawei.com> # message auto-generated for no-merge-commit merge: !520 merge feat/rpm-deb-package-support into master feat: 支持 rpm/deb 包构建,修正文件缺失问题 Created-by: sinat_31531339 Commit-by: sinat_31531339 Merged-by: cann-robot Description: ## 描述 rpm 和 deb 包安装后缺少以下关键文件,导致工具无法使用: 1. tools/ascend_system_advisor/ - 系统诊断工具 2. tools/hccl_test/ - HCCL 测试工具 3. tools/msaicerr/ - AI Core 错误分析工具 4. tools/profiler/ - 性能分析工具(包含 msprof、acp) 5. lib64/libascend_dump_parser.so - dump 数据解析库 ## 变更类型 - [x] ✨ 新功能 - [ ] 🐛 Bug 修复 - [ ] 💄 代码风格更新 - [ ] ♻️ 重构 - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 根本原因 INSTALL_LIBRARY_DIR 在 rpm/deb 模式下设置为相对路径 .,但各组件的 install 规则硬编码为 ${INSTALL_LIBRARY_DIR}/tools/...,导致实际路径变成 ./tools/...,被 CPack 的文件收集逻辑遗漏。 此外还存在: - rpmbuild 对 Ascend NPU 的 .o 文件(非标准 ELF 格式)执行 strip 失败 - 二进制文件安装后缺少执行权限 ## 解决方案 ### 1. 引入条件化变量 cmake if(PACKAGE_TYPE STREQUAL "rpm" OR PACKAGE_TYPE STREQUAL "deb") set(INSTALL_LIBRARY_DIR .) set(INSTALL_TOOLS_DIR tools) # 新增 set(INSTALL_LIB64_DIR lib64) # 新增 else() set(INSTALL_LIBRARY_DIR ${OAM_STAGING_DIR}) set(INSTALL_TOOLS_DIR ${OAM_STAGING_DIR}/tools) set(INSTALL_LIB64_DIR ${OAM_STAGING_DIR}/${CMAKE_SYSTEM_PROCESSOR}-linux/lib64) endif() - **rpm/deb 包**:使用相对路径(tools/, lib64/),符合 FHS 标准 - **run 包**:保持绝对路径,行为完全不变 ### 2. 禁用 rpm 的 brp-strip cmake if(PACKAGE_TYPE STREQUAL "rpm") set(CPACK_RPM_SPEC_MORE_DEFINE "%define __strip /bin/true %define __objdump /bin/true %define debug_package %{nil}") endif() 避免对 bundle/opp/built-in 中的 Ascend NPU .o 文件执行 strip 失败。 ### 3. 显式设置二进制执行权限 cmake install(TARGETS msprofbin ${INSTALL_OPTIONAL} RUNTIME DESTINATION ${INSTALL_TOOLS_DIR}/profiler/bin PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT oam-tools ) ## 修改内容 | 文件 | 修改内容 | |------|----------| | CMakeLists.txt | 添加 INSTALL_TOOLS_DIR 和 INSTALL_LIB64_DIR 条件化变量 | | cmake/package.cmake | 禁用 rpm 的 brp-strip | | src/asys/CMakeLists.txt | 使用 INSTALL_TOOLS_DIR | | src/msaicerr/CMakeLists.txt | 使用 INSTALL_TOOLS_DIR | | src/msaicerr/proto_parse/CMakeLists.txt | 使用 INSTALL_LIB64_DIR | | src/hccl_test/CMakeLists.txt | 使用 INSTALL_TOOLS_DIR | | src/operator_cmp/CMakeLists.txt | 使用 INSTALL_TOOLS_DIR | | src/msprof/CMakeLists.txt | 使用 INSTALL_TOOLS_DIR | | src/msprof/collector/dvvp/msprofbin/CMakeLists.txt | 使用 INSTALL_TOOLS_DIR + 添加 PERMISSIONS | | src/msprof/collector/dvvp/acp/CMakeLists.txt | 使用 INSTALL_TOOLS_DIR + 添加 PERMISSIONS | **总计**:10 个文件,~50 行代码,18 处修改点 ## 验证结果 ### RPM 包 ✅ bash bash build.sh --pkg-type=rpm -j16 - ✅ 构建成功(241 MB) - ✅ 包含所有缺失组件 - ✅ 文件路径符合 FHS 标准 ### DEB 包 ✅ bash bash build.sh --pkg-type=deb -j16 sudo dpkg -i build_out/cann-oam-tools_*.deb - ✅ 构建成功(241 MB) - ✅ 安装测试通过 - ✅ 功能测试通过 **功能验证**: bash python3 /usr/local/Ascend/cann-9.1.0/tools/ascend_system_advisor/asys/asys.py --help ✅ /usr/local/Ascend/cann-9.1.0/tools/profiler/bin/msprof --help ✅ python3 -c "import ctypes; ctypes.CDLL('/usr/local/Ascend/cann-9.1.0/lib64/libascend_dump_parser.so')" ✅ ### RUN 包兼容性 ✅ bash bash build.sh --pkg-type=run -j16 - ✅ 构建成功 - ✅ 文件内容与修改前一致(1143 个共同文件) - ✅ 路径结构保持不变 **路径对比**: | 项目 | RPM/DEB | RUN | |------|---------|-----| | lib64 | lib64/ | aarch64-linux/lib64/ | | 设计理由 | FHS 标准 | makeself 自解压,支持多架构 | ## 如何测试 ### 构建验证 bash # 构建所有包类型 bash build.sh --pkg-type=rpm -j16 bash build.sh --pkg-type=deb -j16 bash build.sh --pkg-type=run -j16 # 验证包内容 rpm -qpl build_out/cann-oam-tools_*.rpm | grep -E "tools/|lib64/" dpkg-deb -c build_out/cann-oam-tools_*.deb | grep -E "tools/|lib64/" ### 安装测试 bash # DEB 包 sudo dpkg -i build_out/cann-oam-tools_*.deb ls -la /usr/local/Ascend/cann-9.1.0/tools/ ls -la /usr/local/Ascend/cann-9.1.0/lib64/libascend_dump_parser.so # RPM 包 sudo rpm -ivh build_out/cann-oam-tools_*.rpm ls -la /usr/local/Ascend/cann-9.1.0/tools/ ### 功能测试 bash # asys python3 /usr/local/Ascend/cann-9.1.0/tools/ascend_system_advisor/asys/asys.py --help # msprof /usr/local/Ascend/cann-9.1.0/tools/profiler/bin/msprof --help # 库加载 python3 -c "import ctypes; ctypes.CDLL('/usr/local/Ascend/cann-9.1.0/lib64/libascend_dump_parser.so')" ## 参考 - hixl#621 - PACKAGE_TYPE 条件判断方案 - hccl#2317 - set_cann_cpack_config 参数传递 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md) ## 其他信息 ### 影响范围 - **正面影响**:rpm/deb 包用户可以正常使用所有 oam-tools 工具 - **兼容性**:run 包不受影响,现有用户无感知 - **风险**:低(仅影响 rpm/deb 构建路径,不改变运行时逻辑) See merge request: cann/oam-tools!520 | 1 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 1 个月前 |