Hi 川峰,
我对这个版本选型方案和模型本身没有意见,但是想提醒一下关于clang 16的问题。
由于clang 16默认打开了以下开关, * -Werror=implicit-function-declaration * -Werror=implicit-int * -Werror=strict-prototypes
造成clang 16在很多软件包的configure阶段会检测出错,或者有的检测虽然通过但是判断编译器的支持特性出错导致编译出来的二进制有功能问题。具体可以参考Gentoo的bug和clang上游的讨论,可以看到受影响的包非常多: https://archives.gentoo.org/gentoo-dev/message/dd9f2d3082b8b6f8dfbccb0639e6e... https://bugs.gentoo.org/870412 https://discourse.llvm.org/t/configure-script-breakage-with-the-new-werror-i...
理论上如果不修复所有受影响的包,那么在clang >=16的环境中都会受该问题影响。我记得你之前提到过在推进使用clang编译内核和整个系统,不知道这个问题是否已经考虑到并且有规划解决?
刘恺 Email: kai.liu@xfusion.commailto:kai.liu@xfusion.com | Mobile: 181 2600 8111
From: Zhaochuanfeng (Steve) zhaochuanfeng@huawei.com Sent: Thursday, April 27, 2023 8:33 PM To: tc@openeuler.org Cc: Weiwei (weiwei, Compiler) weiwei64@huawei.com; Chenxi Mao chenxi.mao@suse.com Subject: [Tc] 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论
各位TC委员好:
我是赵川峰,这个邮件我讨论一下社区LLVM的版本选型及规划,也期望涉及LLVM编译器的相关委员提提诉求。
下图是LLVM上游社区的版本发布历史和计划,版本节奏是2个大版本/年,大版本发布后每2周发布一个小版本(计划内发布5个小版本,按需继续发布)。 [cid:image001.jpg@01D97962.43339470] 可以看出上游社区版本发布比较频繁,这与openEuler LTS版本对软件包的稳定性有些冲突,所以就有了支持LLVM多版本的诉求。
Compiler SIG计划支持两个版本:LTS版本(系统默认)和latest版本,rpm源码仓库创建如下: LTS版本: src-openeuler/clang: 包含clang,clang-tools-extra src-openeuler/llvm: 包含llvm,compiler-rt、libcxx、libcxxabi、llvm-libunwind、mlir、libc src-openeuler/lld: 包含lld src-openeuler/llvm-bolt: 包含bolt latest版本: src-openeuler/clang-latest src-openeuler/llvm-latest src-openeuler/lld-latest src-openeuler/llvm-bolt-latest
原则&方案:
(1) LTS版本跟随openEuler LTS版本升级,在openEuler LTS前一个创新版本Ready,后续SPX上版本保持不变。
(2) latest版本跟随所有openEuler版本(LTS和创新版本)升级,取上游社区当时最新版本。
(3) 如果有其他版本需要支持(需要有充分理由),可以创建llvm-<major>相关的源码仓,支持方案与llvm-latest雷同。
基于以上原则,后续openEuler版本上LLVM编译器的版本选型将是: [cid:image002.jpg@01D97962.43339470]
欢迎大家给出宝贵意见,谢谢!
Best Regards 赵川峰(Steve)