已合并
fix: 统一USE_CXX11_ABI管理,移除分散的ABI宏定义 #4408
yelongjian创建于 6 天前
fix: 统一USE_CXX11_ABI管理,移除分散的ABI宏定义 #4408
已合并
yelongjian创建于 6 天前
yelongjian成员
6 天前

Pull Request

描述

统一USE_CXX11_ABI管理,将分散在各处的_GLIBCXX_USE_CXX11_ABI宏定义移除,改为在顶层CMakeLists.txt中统一管理。主要变更:

  1. CMakeLists.txt: 在init_cann_project()后统一设置USE_CXX11_ABI默认值为0,简化ENABLE_BUILD_DEVICE逻辑
  2. build.sh: USE_CXX11_ABI默认值从1改为0
  3. cmake/ge_intf_pub_linux.cmake: 移除ge_intf_pub_base对intf_pub_base的链接和_GLIBCXX_USE_CXX11_ABI定义
  4. dflow/llm_datadist/v1/CMakeLists.txt: 移除分散的add_definitions ABI设置
  5. dflow/udf/cmake/device/protobuf.cmake: 删除不再需要的protobuf构建文件
  6. parser/parser/func_to_graph/CMakeLists.txt: 移除-D_GLIBCXX_USE_CXX11_ABI=0

变更类型

关联的Issue

适配 https://gitcode.com/cann/ge/pull/4397

如何测试

  1. 执行 bash build.sh 验证构建正常
  2. 检查各组件编译时ABI一致性

核对清单

其他信息

从上游PR #4397适配到当前分支。

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 yelongjian 的贡献)
Yyelongjian成员
6 天前 创建了 pull request,commit bc2fd86d
atomgit-bot
atomgit-bot
6 天前 评论:

变更摘要

本 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_ABIon1 时,赋值由 1 改为 0,使 ABI 默认值统一为 0
  • cmake/ge_intf_pub_linux.cmake 精简接口库配置:移除 ge_intf_pub_baseintf_pub_basetarget_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_definitions ABI 设置,parser/parser/func_to_graph/CMakeLists.txt 移除 -D_GLIBCXX_USE_CXX11_ABI=0
likedislike
atomgit-bot
atomgit-bot
6 天前 评论:

代码审查

审查完成

已逐一审查全部变更文件(含被删除的 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

⛔ 需要修改

likedislike
CANN-robotCANN-robot成员
6 天前 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
6 天前 评论:

CLA Signature Pass

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

likedislike
CANN-robot
CANN-robot成员
6 天前 评论:

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 /approve or /lgtm
  • Commenting /approve implies 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. 👍

likedislike
CANN-robotCANN-robot成员
6 天前 将yangyongqiang0606,kobemini,ClarkXie,tangqunzhang,xchu42,hugo111,lining23666,fu-jun2,depeng1994,wqtshg_wt,peiyang,shengnan666,zhangfan_hanq,zhanj,zhujingjing,Mexyy,wangxiaotian995,stevenaw0,yuht9设为评审人
CANN-robotCANN-robot成员
6 天前 将yangyongqiang0606,kobemini,ClarkXie,tangqunzhang,xchu42,hugo111,lining23666,fu-jun2,depeng1994,wqtshg_wt,peiyang,shengnan666,zhangfan_hanq,zhanj,zhujingjing,Mexyy,wangxiaotian995,stevenaw0,yuht9设为审查人
yelongjian成员
6 天前 评论:

compile

likedislike
Yyelongjian成员
6 天前 update merge request[project id: 8824148, iid: 4408, commit_id: e1b8d312c17c020d8a67ee746bdc5088d1b16b2c] virtual merging success
CANN-robotCANN-robot成员
6 天前 添加了label:ci-pipeline-running
CANN-robot
CANN-robot成员
6 天前 评论:

流水线任务触发成功
任务链接 [8c063b19402a443ba5440063000e1a2a][流水线指导]

任务名称状态日志下载链接
pre_comment ✅ SUCCESS >>>>>
Compile_ARM_compiler ❌ FAILED >>>>>
Compile_ARM_executor ❌ FAILED >>>>>
Compile_ARM_dflow ❌ FAILED >>>>>
likedislike
CANN-robot
CANN-robot成员
6 天前 评论:

流水线任务触发成功
任务链接 [edc966b28dae498599bcb1b94110ff41][流水线指导]

任务名称状态日志下载链接
pre_comment ✅ SUCCESS >>>>>
Compile_X86_compiler ❌ FAILED >>>>>
Compile_X86_executor ❌ FAILED >>>>>
Compile_X86_dflow ❌ FAILED >>>>>
likedislike
CANN-robot
CANN-robot成员
6 天前 评论:

流水线任务触发成功
任务链接 [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执行结束

likedislike
atomgit-bot
atomgit-bot6 天前进行代码检视2
build.sh
已过期
@@ -138,3 +138,3 @@
138138 lower_abi=$(echo "$USE_CXX11_ABI" | tr '[:upper:]' '[:lower:]')
139139 if [[ "$lower_abi" == "on" || "$USE_CXX11_ABI" == "1" ]]; then
140- USE_CXX11_ABI=1
140+USE_CXX11_ABI=0
atomgit-bot
atomgit-bot6 天前评论:

🟠 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=1USE_CXX11_ABI=0),以实现"默认 ABI=0"且不反转用户显式请求。

改动建议
140
- USE_CXX11_ABI=0
140
+ USE_CXX11_ABI=1
应用建议
likedislike
System
系统消息系统
6 天前 评论:

changed this line on 00b6cb39 view diff detail

CANN-robotCANN-robot成员
6 天前 删除了label:ci-pipeline-running
此处折叠了5条事件消息 查看更多
CANN-robotCANN-robot成员
6 天前 添加了label:cann-cla/yes
yelongjian成员
6 天前 评论:

compile

likedislike
Yyelongjian成员
6 天前 update merge request[project id: 8824148, iid: 4408, commit_id: cd4a99c05436baea86cead88ce21a2c02f7d3034] virtual merging success
CANN-robotCANN-robot成员
6 天前 删除了label:ci-pipeline-failed
CANN-robotCANN-robot成员
6 天前 添加了label:ci-pipeline-running
CANN-robot
CANN-robot成员
6 天前 评论:

流水线任务触发成功
任务链接 [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执行结束

likedislike
CANN-robot
CANN-robot成员
6 天前 评论:

流水线任务触发成功
任务链接 [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执行结束

likedislike
CANN-robot
CANN-robot成员
6 天前 评论:

流水线任务触发成功
任务链接 [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执行结束

likedislike
CANN-robotCANN-robot成员
6 天前 添加了label:api-check-pass
CANN-robotCANN-robot成员
6 天前 删除了label:api-check-pass
CANN-robotCANN-robot成员
6 天前 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
6 天前 添加了label:ci-pipeline-passed
yangyongqiang
yangyongqiang成员
6 天前 评论:

/lgtm

likedislike
GengChao
GengChao成员
6 天前 评论:

/lgtm

likedislike
CANN-robotCANN-robot成员
6 天前 添加了label:lgtm
GengChao
GengChao成员
6 天前 评论:

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

likedislike
张德鹏成员
6 天前 评论:

/approve

likedislike
CANN-robotCANN-robot成员
6 天前 添加了label:approved
CANN-robot
CANN-robot成员
6 天前 评论:

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.

likedislike
张德鹏成员
6 天前 评论:

/approve cancel

likedislike
CANN-robotCANN-robot成员
6 天前 删除了label:approved
CANN-robot
CANN-robot成员
6 天前 评论:

Review Code Feedback

approved was removed in this pull request by: depeng1994. 😳

likedislike
Yyelongjian成员
5 天前 解决了最后一个问题
张德鹏成员
5 天前 评论:

/approve

likedislike
CANN-robotCANN-robot成员
5 天前 添加了label:approved
CANN-robotCANN-robot成员
5 天前 合入了pull request