Pull Request已成功合入, 合并人@CANN-robot
(感谢 yelongjian 的贡献)变更摘要
本 PR 旨在统一 USE_CXX11_ABI 的管理方式:将原先分散在多个构建文件中的 _GLIBCXX_USE_CXX11_ABI 宏定义移除,改为在顶层 CMakeLists.txt 中通过 USE_CXX11_ABI 统一控制。改动涉及 ABI 默认值的调整、ge_intf_pub_base 链接与编译定义的精简,以及删除不再需要的 protobuf 独立构建脚本,从而保证各组件编译时 ABI 的一致性,并适配上游 PR #4397。
主要改动
build.sh的 ABI 解析逻辑调整:在parse_cmake_extra_args()中,当USE_CXX11_ABI为on或1时,赋值由1改为0,使 ABI 默认值统一为0。cmake/ge_intf_pub_linux.cmake精简接口库配置:移除ge_intf_pub_base对intf_pub_base的target_link_libraries依赖,并删除其中按PRODUCT_SIDE/MDC_COMPILE_RUNTIME区分设置的_GLIBCXX_USE_CXX11_ABI=0/1编译定义。- 删除
dflow/udf/cmake/device/protobuf.cmake:移除整套protobuf源码下载、补丁、静态/动态库构建及导入目标的逻辑,不再在此处维护-D_GLIBCXX_USE_CXX11_ABI等编译选项。 - 顶层
CMakeLists.txt统一管理 ABI:在init_cann_project()后统一设置USE_CXX11_ABI默认值为0,并简化ENABLE_BUILD_DEVICE相关逻辑,作为全局唯一的 ABI 控制入口。 - 移除其余分散的 ABI 宏定义:
dflow/llm_datadist/v1/CMakeLists.txt移除分散的add_definitionsABI 设置,parser/parser/func_to_graph/CMakeLists.txt移除-D_GLIBCXX_USE_CXX11_ABI=0。


代码审查
审查完成
已逐一审查全部变更文件(含被删除的 dflow/udf/cmake/device/protobuf.cmake),共报告 1 个 P1 问题。
逐文件结论:
| 文件 | 结论 |
|---|---|
CMakeLists.txt |
无问题 — if(NOT ENABLE_BUILD_DEVICE) 重构与原逻辑等价,默认 USE_CXX11_ABI=0 与移除 add_compile_definitions 属与上游 #4397 协调的收敛,未发现本仓库内悬空引用 |
build.sh |
1 个 P1 — 第 140 行把"显式请求 ABI=1/on"分支错改成 0,且第 25 行默认值未改,与 PR 目标相反 |
cmake/ge_intf_pub_linux.cmake |
无问题 — 移除 intf_pub_base 链接与 ABI 宏定义,仓库内无 intf_pub_base 悬空引用,属协调变更 |
dflow/llm_datadist/v1/CMakeLists.txt |
无问题 — 移除分散的 ABI add_definitions,已收敛到统一管理 |
parser/parser/func_to_graph/CMakeLists.txt |
无问题 — 移除 -D_GLIBCXX_USE_CXX11_ABI=0 编译选项,属协调变更 |
dflow/udf/cmake/device/protobuf.cmake(删除) |
无问题 — 无残留 include(protobuf.cmake),protobuf_static_build 等 ExternalProject 目标无残留引用,device 侧已改用 add_cann_third_party(protobuf) |
总体风险判断: 本 PR 的 ABI 统一化方向与上游 #4397 一致,大部分删除/收敛是协调的;但 build.sh 的改动落在错误的代码行上,导致"显式开启新 ABI"的请求被静默反转,且默认值实际未从 1 改为 0,属于需要修复的逻辑回归(P1),建议合入前修正。
发现统计: P1 × 1;P0/P2/P3 × 0。
| 类型 | 数量 |
|---|---|
| 🔴 阻塞 | 1 |
| 🟡 建议 | 0 |
⛔ 需要修改


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 |
|---|---|---|
| repo-cann/ge | ✅ kobemini, 张德鹏, yangyongqiang0606 (3/2) | ✅ 张德鹏 (1/1) |
💡 Tip:
- Committer can comment
/approveor/lgtm- Commenting
/approveimplies both code review (lgtm) and intent to merge (approve)
CLA Signature Pass
yelongjian, thanks for your pull request. All authors of the commits have signed the CLA. 👍


compile


流水线任务触发成功
任务链接 [95ce609ca2914796bff5cc6e82a8a032][流水线指导]
| 任务名称 | 状态 | 日志 | 下载链接 |
|---|---|---|---|
| codecheck_Pr | ✅ SUCCESS | ||
| antipoison | ✅ SUCCESS | >>>>> | |
| SCA | ✅ SUCCESS | >>>>> | |
| codecheck_dt | ✅ SUCCESS | >>>>> | |
| codecheck_precommit | ✅ SUCCESS | >>>>> | |
| StaticCheck_codespell | ✅ SUCCESS | ||
| StaticCheck_link_validity | ✅ SUCCESS | ||
| StaticCheck_resource_existence | ✅ SUCCESS | ||
| StaticCheck_tag_closed | ✅ SUCCESS | ||
| StaticCheck_markdownlint | ✅ SUCCESS |
[2026-08-17 09:28:25] CI执行结束


🟠 High Priority
变更把 parse_cmake_extra_args() 中 if [[ "$lower_abi" == "on" || "$USE_CXX11_ABI" == "1" ]]; then 分支内的赋值从 USE_CXX11_ABI=1 改成了 USE_CXX11_ABI=0。
受影响行为/契约:该分支专门用于"用户显式请求开启新 ABI(on/1)"的场景,其职责是把非规范输入(on/ON)归一化为数字 1;下面的 elif 分支已经处理 off/0 → 0。改动后,凡是用户通过 --extra-cmake-args="USE_CXX11_ABI=1" 或 =on 显式开启新 ABI 的请求,都会被静默改写为 0。
失败模式:编译时 _GLIBCXX_USE_CXX11_ABI 将按 0(旧 ABI)生效,与用户意图相反,导致 std::string 等 ABI 不一致(本仓库 cmake/generate_es_package.cmake 注释明确说明 ABI 不一致会引起 std::string coredump),且没有任何报错提示。
同时,PR 描述声称"build.sh: USE_CXX11_ABI 默认值从 1 改为 0",但真正的默认值在第 25 行 USE_CXX11_ABI=1 并未改动——改动落在了错误的分支行上,导致默认值仍是 1(新 ABI),与本次"统一默认 ABI=0"的目标相反。
建议:把第 140 行恢复为 USE_CXX11_ABI=1,并将默认值修改放在第 25 行(USE_CXX11_ABI=1 → USE_CXX11_ABI=0),以实现"默认 ABI=0"且不反转用户显式请求。
| 140
| - USE_CXX11_ABI= |
|
140 | + USE_CXX11_ABI=1 |


compile


流水线任务触发成功
任务链接 [7038ee38a61d44ff80bbdc864433e1c0][流水线指导]
| 任务名称 | 状态 | 日志 | 下载链接 |
|---|---|---|---|
| pre_comment | ✅ SUCCESS | >>>>> | |
| Compile_ARM_compiler | ✅ SUCCESS | >>>>> | >>>>> |
| Compile_ARM_executor | ✅ SUCCESS | >>>>> | >>>>> |
| Compile_ARM_dflow | ✅ SUCCESS | >>>>> | >>>>> |
| API_Check | ✅ SUCCESS | >>>>> | |
| PreSmoke_A900_npupool | ✅ SUCCESS | >>>>> |
[2026-08-17 09:39:51] CI执行结束


流水线任务触发成功
任务链接 [95a76118f8bb46039f6ad2c96a8eb465][流水线指导]
| 任务名称 | 状态 | 日志 | 下载链接 |
|---|---|---|---|
| pre_comment | ✅ SUCCESS | >>>>> | |
| Compile_X86_compiler | ✅ SUCCESS | >>>>> | >>>>> |
| Compile_X86_executor | ✅ SUCCESS | >>>>> | >>>>> |
| Compile_X86_dflow | ✅ SUCCESS | >>>>> | >>>>> |
| UT_Test_dflow | ✅ SUCCESS | ||
| UT_Test_ge_common | ✅ SUCCESS | ||
| UT_Test_parser | ✅ SUCCESS | ||
| UT_Test_python | ✅ SUCCESS | >>>>> | |
| UT_Test_rt | ✅ SUCCESS | ||
| UT_Test_acl | ✅ SUCCESS | ||
| UT_Test_autofuse | ✅ SUCCESS | ||
| UT_Test_executor | ✅ SUCCESS | ||
| UT_Test_autofuse_ascendc_api | ✅ SUCCESS | ||
| ST_Test_dflow | ✅ SUCCESS | ||
| ST_Test_ge_common | ✅ SUCCESS | ||
| ST_Test_parser | ✅ SUCCESS | ||
| ST_Test_python | ✅ SUCCESS | >>>>> | |
| ST_Test_rt | ✅ SUCCESS | ||
| ST_Test_autofuse | ✅ SUCCESS | ||
| ST_Test_executor | ✅ SUCCESS | ||
| ST_Test_hetero | ✅ SUCCESS | ||
| ST_Test_autofuse_ascendc_api | ✅ SUCCESS | ||
| ST_Test_autofuse_e2e | ✅ SUCCESS | ||
| UT_Test_fe | ✅ SUCCESS | ||
| UT_Test_tefusion | ✅ SUCCESS | ||
| ST_Test_fe | ✅ SUCCESS | ||
| ST_Test_tefusion | ✅ SUCCESS | ||
| ST_Test_ge_common_atc | ✅ SUCCESS | ||
| UT_Test_Report_graphengine | ✅ SUCCESS | >>>>> | |
| UT_Test_Report_ge_executor_c | ✅ SUCCESS | >>>>> | |
| UT_Test_Report_ge_autofuse | ✅ SUCCESS | >>>>> | |
| ST_Test_Report_graphengine | ✅ SUCCESS | >>>>> | |
| ST_Test_Report_ge_executor_c | ✅ SUCCESS | >>>>> | |
| ST_Test_Report_ge_autofuse | ✅ SUCCESS | >>>>> | |
| UT_Test_Report_fe | ✅ SUCCESS | >>>>> | |
| ST_Test_Report_fe | ✅ SUCCESS | >>>>> |
[2026-08-17 09:47:28] CI执行结束


流水线任务触发成功
任务链接 [7420a78c581e410fbd9cd6b5c9454135][流水线指导]
| 任务名称 | 状态 | 日志 | 下载链接 |
|---|---|---|---|
| codecheck_Pr | ✅ SUCCESS | ||
| antipoison | ✅ SUCCESS | >>>>> | |
| SCA | ✅ SUCCESS | >>>>> | |
| codecheck_dt | ✅ SUCCESS | >>>>> | |
| codecheck_precommit | ✅ SUCCESS | >>>>> | |
| StaticCheck_codespell | ✅ SUCCESS | ||
| StaticCheck_link_validity | ✅ SUCCESS | ||
| StaticCheck_resource_existence | ✅ SUCCESS | ||
| StaticCheck_tag_closed | ✅ SUCCESS | ||
| StaticCheck_markdownlint | ✅ SUCCESS |
[2026-08-17 09:37:48] CI执行结束


/lgtm


/lgtm


【MR评价】评价分数:3,
评价意见:简单修改
编码规范遵守度:无编码规范问题;
代码设计:不涉及代码设计;
DT质量:基本逻辑DT测试覆盖充足;


The MR can not be merged, because of CodeReview discussion not resolved
If you want to solve this problem, you can click here to do it in the FAQs.


Pull Request
描述
统一USE_CXX11_ABI管理,将分散在各处的_GLIBCXX_USE_CXX11_ABI宏定义移除,改为在顶层CMakeLists.txt中统一管理。主要变更:
变更类型
关联的Issue
适配 https://gitcode.com/cann/ge/pull/4397
如何测试
核对清单
其他信息
从上游PR #4397适配到当前分支。