Commit ca0425f
committed
fix(toolchain): 固定的 host 工具链装不上时,回退到已经在本机可用的 target 工具链
`ci-aarch64-fresh-install` 在 aarch64 上构建 xlings 时死在:
[error] download failed for xim:gcc@16.1.0: HTTP 404
error: host toolchain for build.mcpp ('gcc@16.1.0'): ...
链条是:图里有包带 build.mcpp ⇒ 需要 HOST 编译器 ⇒ 取 `[toolchain] default`
⇒ 那是 `gcc@16.1.0`,而 xim 的 gcc 声明 `archs = { "x86_64" }` ⇒ 404。
`[toolchain]` 的键是 OS,**没有 arch 这根轴**(#367),所以 aarch64 问的和
x86_64 问的是同一个包。结果是:凡是依赖图里出现 build.mcpp 的工程,在 aarch64
上就是死路。
但这台机器上**已经有**一个能用的编译器:当解析出的 target 与 host 只差 libc
环境(aarch64-linux-musl 跑在 aarch64 Linux 上),target 工具链就是本机原生的
—— 它在这里能跑,它产出的二进制在这里也能跑,拿它编译一个构建程序完全成立。
因此:固定的 host 工具链取不到时,若 arch 与 os 与 host 相同,就用 target 工具
链,并发一条命名双方的告警。成功路径一字未改;此前的死路变成一次可解释的降级。
#367 记录的仍是根因(host 工具链选择缺 arch 轴),这条只是让它不再是绝路。1 parent c5cdcec commit ca0425f
1 file changed
Lines changed: 28 additions & 0 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 | + | |
1815 | 1843 | | |
1816 | 1844 | | |
1817 | 1845 | | |
| |||
0 commit comments