Commit a4790be
committed
fix(toolchain): aarch64 上原生 GCC 的载荷是 musl-gcc,不是 glibc gcc (#367)
`ci-aarch64-fresh-install` 报 `download failed for xim:gcc@16.1.0: HTTP 404`。
**先前的归因是错的**:我判成「`[toolchain]` 缺 arch 轴」,并动手给 manifest 加了
一根选择器轴。生态其实**早就支持 aarch64** —— xlings-res 的 musl-gcc 发行版里
就有 `musl-gcc-16.1.0-linux-aarch64.tar.gz`,而 `xim:gcc` 声明的是
`archs = { "x86_64" }`。所以缺的不是让用户去写 arch,而是 mcpp 问错了包。
同一台机器上 target 一侧是对的:
`gcc@16.1.0 → aarch64-linux-musl → xim-x-musl-gcc`。因为 target 一侧把 triple
注入了 spec,`to_xim_package` 的 musl 分支便按「同一 target,两种载荷形态」选中
了原生包。而 build.mcpp 的 **host** 解析刻意不注入 target,于是落到最后那条
glibc 分支,拿到只有 x86_64 资产的 `gcc`。
「这个 spec 在这台机器上对应哪个载荷」正是 `to_xim_package` 存在的意义,上面
那条 musl 分支已经在回答它的另一半。所以修在这里:Linux 上瞄准本机的 GCC spec,
在非 x86_64 架构上解析到 `musl-gcc`。用户不该被要求去编码「某个工具链包是为
哪些架构构建的」。
同时撤回上一版那个「host 工具链装不上就回退到 target 工具链」的兜底 —— 它是
错误归因的产物;正确解析之后它是死代码,而一条失败路径上的隐式回退不该白留。
判定抽成自由函数并接收 host arch,而不是读编译期常量:这样 aarch64 的答案能在
x86_64 机器上被测到 —— 而「测一个手边没有的架构」正是重点。1 parent 6d354e8 commit a4790be
3 files changed
Lines changed: 85 additions & 29 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1812 | 1812 | | |
1813 | 1813 | | |
1814 | 1814 | | |
1815 | | - | |
1816 | | - | |
1817 | | - | |
1818 | | - | |
1819 | | - | |
1820 | | - | |
1821 | | - | |
1822 | | - | |
1823 | | - | |
1824 | | - | |
1825 | | - | |
1826 | | - | |
1827 | | - | |
1828 | | - | |
1829 | | - | |
1830 | | - | |
1831 | | - | |
1832 | | - | |
1833 | | - | |
1834 | | - | |
1835 | | - | |
1836 | | - | |
1837 | | - | |
1838 | | - | |
1839 | | - | |
1840 | | - | |
1841 | | - | |
1842 | | - | |
1843 | 1815 | | |
1844 | 1816 | | |
1845 | 1817 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
86 | 86 | | |
87 | 87 | | |
88 | 88 | | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
89 | 103 | | |
90 | 104 | | |
91 | 105 | | |
| |||
209 | 223 | | |
210 | 224 | | |
211 | 225 | | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
212 | 236 | | |
213 | 237 | | |
214 | 238 | | |
| |||
271 | 295 | | |
272 | 296 | | |
273 | 297 | | |
274 | | - | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
275 | 322 | | |
276 | 323 | | |
277 | 324 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| 6 | + | |
6 | 7 | | |
7 | 8 | | |
8 | 9 | | |
| |||
187 | 188 | | |
188 | 189 | | |
189 | 190 | | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
0 commit comments