Skip to content

Commit e862c65

Browse files
committed
test: accept LLVM spelling of the native ARM GNU identity
1 parent 2f70339 commit e862c65

3 files changed

Lines changed: 81 additions & 6 deletions

File tree

‎.agents/docs/2026-10-08-llvm-2313-part2-execution-and-dependencies.md‎

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -568,3 +568,78 @@ revision 或摘要;revision 3 身份由精确候选索引的资源钉、父缓
568568
要求两位 reviewer、code owner、最后推送批准、签名及线性历史;
569569
仓库不支持自动合入。最终源码检查通过不替代 review 规则。当前
570570
等待维护者决定合入途径,尚未声称公开索引消费或最终发布闭环完成。
571+
572+
573+
## 25. 2026-10-08 三条 ARM 安装失败归因更正与合入授权
574+
575+
主 CI `37718202213` 的 ARM 交叉构建 job `113122034520`、原生
576+
openkal job `113122034623` 与矩阵不变量 job `113122034540` 均
577+
在 glibc 的 `__generate_c_utf8` 失败。实际日志明确记录缺失的
578+
`ld-linux-x86-64.so.2` 路径。旧钩子以 `_RUNTIME.arch` 判定 ARM;
579+
该执行上下文未提供相应事实时选择 x86 loader,随后 `localedef`、
580+
LLVM 配置与程序注册依次失败。这些日志不能单独证明下载的归档
581+
本身为 x86,因此第 21 节对旧安装阶段的描述应按本节限定解释。
582+
583+
最终配方将 catalog 的架构运行时导出与安装文件的架构布局分别
584+
作为元数据和钩子的来源,所有钩子统一使用该布局。候选 revision 3
585+
原生门已验证安装前置条件修复;公开索引激活后的普通 CI 仍须
586+
实际通过,不能以候选门替代。
587+
588+
维护者明确授权索引 #938 和 mcpp #781 在改动复核、文件清单检查
589+
及各自最终 CI 通过后使用 bypass squash 合入。本次授权取代之前
590+
保留 merge 历史的偏好。源码构建来源验证须兼容 squash 的提交
591+
映射,并继续要求同仓库成功构建、已合入来源及构建源码一致性;
592+
不能因授权 bypass 合入而删除运行验收或归档身份检查。
593+
594+
595+
## 26. 2026-10-08 索引 squash 合入与公开发布验收
596+
597+
索引 #938 最终头 `48cbebea062cd8e44585dbd7fe307f89bd3e2eec`
598+
检查为 20 项成功、3 项条件跳过、0 项失败。修正新增八个真实 Git
599+
来源映射回归,合计 31 个相关专项测试通过。维护者授权的 bypass
600+
squash 已于 09:57 UTC 完成,实际合入提交为
601+
`dc8bf08363b07f8ae2b6f7b41e0d2f85b0bd8cd2`。完整文件清单没有
602+
日志、归档、编译产物或缓存;来源 JSON 属于被准入流程引用的长期
603+
验收记录。原资源配方与摘要未因 squash 修正而改变。
604+
605+
发布运行
606+
[37760190384](https://github.com/openxlings/xim-pkgindex/actions/runs/37760190384)
607+
成功。GLOBAL raw 指针曾短暂滞后于 GitHub API 和 CN;验收等待
608+
两个公开入口实际一致后才通过,没有以任务成功替代指针消费。
609+
两镜像完整索引归档为 1,456,005 字节,SHA256 均为
610+
`ec0b6329dea9a46179770c7e9a80746cda2544be2a21dd9be2c0519b984d3ed6`,
611+
与发布资产元数据一致。指针 source_commit 为实际 squash 提交,
612+
最低客户端及 client_latest 均为 `2026.10.8.1`;兼容历史 `ebf1fbb`
613+
及其他索引键均保留。下载归档中的两架构 glibc revision 3、ABI、
614+
lib64 loader 与资源摘要契约通过检查。
615+
616+
实际 main 隔离 checkout 验证了原 LLVM 来源 `6ebe2179` 和 glibc
617+
来源 `e8f330d4` 的 squash 映射。已合入 PR 的记录头与实际合入
618+
提交的树均为 `f07e9321fa554924775da53d24e0c72d0f50b66e`;
619+
构建源码一致性、成功构建与归档身份检查继续生效。
620+
621+
公开发布验收通过后,仅一次重跑主 CI `37718202213` 的失败及
622+
下游任务。attempt 2 使用原引擎提交 `c976c704`,保留先前通过的
623+
检查,并实际重验三条 ARM 安装链、四宿主扫描及目标系统运行。
624+
结果与矩阵基线另行记录,不把正在运行的任务写为成功。
625+
626+
627+
## 27. 2026-10-08 公开 ARM 消费与目标实跑通过及 triple 断言更正
628+
629+
主 CI attempt 2 的公开索引安装已通过。原生 ARM openkal 与 ARM
630+
宿主三目标构建均成功,证明此前三条任务的 glibc 安装前置失败已
631+
被实际公开消费修复。三个目标运行 job `113258565860`(macOS)、
632+
`113258565920`(Linux)和 `113258565955`(Windows)全部成功,
633+
实际执行四宿主构建的原示例与 JSON/线程应用。四宿主三目标矩阵
634+
共 24 个二进制,其源码身份、架构与依赖闭包报告分别保留。
635+
636+
attempt 2 为 49 项成功、2 项失败、2 项跳过。剩余直接失败是 299
637+
测试读取 `.data.triple.llvm` 后,只接受简写 `aarch64-linux-gnu`,
638+
却拒绝其有效 LLVM 表示 `aarch64-unknown-linux-gnu`。二者是同一
639+
ARM64 Linux GNU 身份。断言接受这两个精确表示,继续拒绝不同
640+
架构或环境,并保留显式/省略 GNU 段一致性和 x86_64 控制。
641+
诊断中已过时的 GNU planned 文句同步更正。该修正不修改解析器。
642+
643+
四宿主扫描仍因该不变量失败被跳过,覆盖门随之失败;因此还没有
644+
本轮完整矩阵测量。必须先通过不变量,再收集真实扫描输出并回填
645+
基线,不能把目标实跑成功当作扫描覆盖通过。

‎src/build/prepare/toolchain.cpp‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1312,10 +1312,10 @@ step2_resolve_explicit_spec(PrepareState& state, ToolchainResolveCtx& ctx) {
13121312
// `--target x86_64-linux-musl`: xim:x86_64-linux-musl-gcc@16.1.0 is
13131313
// x86_64-only, and the hard install failure used to preempt the
13141314
// refusal that names the target correctly. The held diagnosis is
1315-
// that refusal, released early with one cause per message. (On the
1316-
// aarch64 linux host the same shape reaches the gnu row: a skip
1317-
// here is also what keeps `host-cannot-serve` from turning into a
1318-
// broken x86_64 payload extracted into the sandbox.)
1315+
// that refusal, released early with one cause per message. The same
1316+
// rule applies to an unservable foreign GNU payload. Native ARM64
1317+
// GNU now has a managed LLVM/glibc payload and does not enter this
1318+
// refusal path.
13191319
const bool engineChoseUnservable =
13201320
!state.unservedTargetDiagnosis.empty() && !spec->target.empty()
13211321
&& !tc_origin_is_user_explicit(state.tcOrigin);

‎tests/e2e/299_a_request_that_named_no_c_library_resolves_to_a_row_that_exists.sh‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ row="$(resolved_row aarch64-linux)"
7878
case "$r" in
7979
tier-planned|unknown-target)
8080
echo "FAIL: the tier gate still answers about the lexical fill (reason '$r')"
81-
echo " aarch64-linux-musl is 'verified'; aarch64-linux-gnu is 'planned'"
81+
echo " aarch64-linux-gnu is verified; completion must preserve its GNU identity"
8282
message_of aarch64-linux | sed 's/^/ /'
8383
exit 1 ;;
8484
none)
@@ -95,7 +95,7 @@ esac
9595
# identity. Asserting only "it did not refuse with tier-planned" would stay
9696
# green in a world where the completion picked some other row entirely.
9797
case "$row" in
98-
aarch64-linux-gnu) echo " ok and it resolved to the native GNU row ($row)" ;;
98+
aarch64-linux-gnu|aarch64-unknown-linux-gnu) echo " ok and it resolved to the native GNU row ($row)" ;;
9999
*) echo "FAIL: aarch64-linux resolved to '$row', not the GNU row"; exit 1 ;;
100100
esac
101101
case "$row" in

0 commit comments

Comments
 (0)