Wed, 30 Sep 2026 07:14:30 CST | login

Information for build dotnet9-build-helper-1.0.0-6.1.oc9

ID48423
Package Namedotnet9-build-helper
Version1.0.0
Release6.1.oc9
Epoch
DraftFalse
Sourcedotnet9-build-helper-1.0.0-6.1.oc9.src.rpm
SummaryBuild-time clang-17 / clang++-17 wrappers for dotnet 9 on OC9
DescriptionInstalls two wrappers required to build dotnet 9.0.x source RPMs on OpenCloudOS 9: * /usr/bin/clang-17 — auto-dispatches OpenSSL ABI (1.1 vs 3.0) based on the static library paths in each link command. The default system OpenSSL on OC9 is 3.0, but the upstream rocky.8-x64 NativeAOT prebuilt static libraries still require OpenSSL 1.1 ABI symbols. * /usr/bin/clang++-17 — appends -lstdc++ to every invocation. After clang-17 was merged into the llvm main package (Release 18+), clang++ no longer auto-links libstdc++ when using -fuse-ld=lld, which breaks linking of dotnet's C++ host tools (watchdog, corerun, ...) with "undefined symbol: operator new" etc. This package is intended ONLY for use inside build hosts / koji buildroots. Do NOT install on production / runtime systems.
Built byopencloudkoji
State complete
Volume DEFAULT
StartedMon, 21 Sep 2026 16:36:58 CST
CompletedMon, 21 Sep 2026 16:39:01 CST
Taskbuild (dist-oc9-epol, dotnet9-build-helper-1.0.0-6.1.oc9.src.rpm)
Extra{'source': {'original_url': 'dotnet9-build-helper-1.0.0-6.1.oc9.src.rpm'}}
Tags
dist-oc9-epol
RPMs
src
dotnet9-build-helper-1.0.0-6.1.oc9.src.rpm (info) (download)
noarch
dotnet9-build-helper-1.0.0-6.1.oc9.noarch.rpm (info) (download)
Logs
noarch
installed_pkgs.log
hw_info.log
dnf.rpm.log
mock_config.log
dnf.librepo.log
root.log
mock_output.log
state.log
dnf.log
build.log
noarch_rpmdiff.json
Changelog * Mon Sep 21 2026 jiaxinyyang <jiaxinyyang@tencent.com> - 1.0.0-6.1 - 修复 clang-17 / clang++-17 wrapper 无条件追加 -lstdc++ 导致 dotnet 9.0 source-build 在 CMake 配置阶段成片探测失败的问题。 1.0.0-6 在所有调用(含 cmake try_compile 的 -c / -E / -fsyntax-only)末尾 追加 -lstdc++,clang 对非链接调用报 "-Z-reserved-lib-stdc++: 'linker' input unused";dotnet configure.cmake 全局注入 -Werror 且未豁免 unused-command-line-argument,该无害告警被升级为硬错误,使 pthread_create、 mkstemp、sys/inotify.h、gnu/lib-names.h 等探测全部 Failed,最终表现为 configure.cmake:646 "incorrect arguments for macro" 与 :771 "Cannot find mkstemp"。 现改为仅链接类调用追加 -lstdc++,非链接调用透传。 * Mon Sep 21 2026 jiaxinyyang <jiaxinyyang@tencent.com> - 1.0.0-6.oc9.1 - 跟随 OC9 dist tag 重新发布(Release 由 6.oc9 升至 6.oc9.1),源码与 1.0.0-6 保持一致,无功能变更。 * Fri Sep 18 2026 jiaxinyyang <jiaxinyyang@tencent.com> - 1.0.0-6 - 修正 gcc 工具链定位(覆盖早前的 -target 注入):撤销危害性的 -target x86_64-OpenCloudOS-linux 注入。clang 18 不识别 OpenCloudOS vendor, 该注入反而会阻断其对 x86_64-unknown-linux-gnu 软链的回退,导致 CoreCLR cmake 的 try_compile 链接整体失败(mkstemp/pthread_create 等 glibc 符号 检测全 Failed,735272 复现)。OC9 gcc(gcc-12.3.1.8-8.oc9)经 PR #19 已提供 x86_64-unknown-linux-gnu -> x86_64-OpenCloudOS-linux 软链,clang 默认回退 即可命中。现仅对缺失该软链的极老 gcc 用 --gcc-toolchain 兜底。 - clang-17 与 clang++-17 wrapper 同步移除 -target/-B,仅保留 -lstdc++ 注入 与 OpenSSL ABI 分发(二者职责不变)。 - 新增 clang++-17 wrapper:在所有参数末尾追加 -lstdc++。 根因:OC9 的 clang-17 已合并进 llvm 主包(Release 18+),clang++ 用 -fuse-ld=lld 链接 dotnet 的 C++ host 工具(watchdog / corerun 等)时 不再自动链接 libstdc++,导致 build.log 中整批 C++ 符号 undefined (operator new / std::getline / std::__throw_length_error)。 - install.sh 重构为通用 install_one(),同时接管 clang-17(OpenSSL ABI 分发) 与 clang++-17(libstdc++ 注入),二者标识串分别为 "OpenSSL ABI" / "libstdc++ inject",互不干扰;任一二进制缺失时跳过该二进制继续处理另一个。 - uninstall.sh 同步还原 clang++-17(标识串 "libstdc++ inject")。 - spec %posttrans 兜底校验扩展到 clang++-17;Requires 增加 gcc-c++ / libstdc++-devel 以闭合 -lstdc++ 所需 libstdc++.so 提供方。 * Wed May 20 2026 jiaxinyyang <jiaxinyyang@tencent.com> - 1.0.0-5 - clang-17.wrapper: 放宽 RID 正则匹配,从硬编码 `x64` 扩展为 `(x64|arm64)`, 支持 aarch64 (ARM64) 架构的 koji 构建。 问题表现:在 ARM 上 RID 为 rocky.8-arm64 / rhel.9-arm64,旧 wrapper 的 `runtime\.rocky\.8-x64` 正则匹配不到,等同透传,导致链接走系统 OpenSSL 3.0 并报 `undefined symbol: ERR_put_error / EVP_MD_size`。 * Wed May 20 2026 jiaxinyyang <jiaxinyyang@tencent.com> - 1.0.0-4 - install.sh: 修复 is_elf 字符串比对错误(od -An -c 实际输出 "177ELF" 而非 "\\177ELF", 导致真 ELF 也被判否,触发 "neither ELF nor a wrapper" 误报) - install.sh: 备份逻辑放宽——只要不是已装 wrapper,统一 cp -aL 备份后覆盖, 兼容 ELF/软链/ccache/外部包装脚本等多种 clang-17 形态,不再 hard fail - install.sh: 删除不再使用的 is_elf 死代码 * Wed May 20 2026 jiaxinyyang <jiaxinyyang@tencent.com> - 1.0.0-3 - install.sh / spec %posttrans: 修正 is_wrapper 判定(rpmbuild brp-mangle-shebangs 会把 #!/bin/bash 改为 #!/usr/bin/bash,导致 head -c 11 == "#!/bin/bash" 永远假) - 改为只校验前 2 字节 "#!" 且文件包含 'OpenSSL ABI' 标识字符串 * Wed May 20 2026 jiaxinyyang <jiaxinyyang@tencent.com> - 1.0.0-2 - install.sh: 二进制安全自检(前 11 字节字面比对替代 head|grep '#!/bin/bash') - install.sh: install(1) 改为 cp + mv 原子覆盖,规避 SELinux/dnf 事务下偶发写入异常 - install.sh: 失败时打印强诊断(首 16 字节 od、file 类型),不再静默自爆还原 - spec %post: 去掉 || :,让 install 失败硬退出,避免被 dnf 吞掉 - spec %posttrans: 兜底判定改为二进制安全字节比对 * Wed May 20 2026 jiaxinyyang <jiaxinyyang@tencent.com> - 1.0.0-1 - Initial helper for dotnet 9.0.x build on OC9 (OpenSSL 1.1/3.0 ABI dispatch)