name: Setup tools (sccache / mold / nextest) # 工具缓存:sccache、mold、nextest 缓存到用户可写的 ~/oxide-tools-cache,恢复后 # sudo cp 到 /usr/bin(sccache、mold)与 ~/.cargo/bin(nextest)。mold 必须落 # /usr/bin(默认 PATH)——落 ~/.cargo/bin 时 sccache 包装 rustc 的链接子进程不 # 继承 GITHUB_PATH 加的 PATH,链接器找不到 mold 报 cannot find ld。nextest 走 # 官方预编译二进制直下,不依赖 main 分支安装脚本(脚本会被移动而 404)。 description: 恢复工具缓存;缺失时安装 sccache、mold、nextest 并落系统目录 runs: using: composite steps: - name: Restore tool cache id: tool-cache uses: actions/cache/restore@v6 with: path: ~/oxide-tools-cache key: oxide-tools-ubuntu-v1 - name: Install tools (cache miss) if: steps.tool-cache.outputs.cache-hit != 'true' shell: bash run: | sudo apt-get update -y sudo apt-get install -y sccache mold mkdir -p "$HOME/oxide-tools-cache" cp /usr/bin/sccache /usr/bin/mold "$HOME/oxide-tools-cache/" curl -LsSf https://get.nexte.st/latest/linux | tar zxf - -C "$HOME/oxide-tools-cache" - name: Install tools to system dirs shell: bash run: | sudo cp "$HOME/oxide-tools-cache/sccache" "$HOME/oxide-tools-cache/mold" /usr/bin/ cp "$HOME/oxide-tools-cache/cargo-nextest" "$HOME/.cargo/bin/" - name: Disable mold in CI shell: bash run: | # mold 在主 workflow 正常,但在可复用 workflow 里 sccache 包装 rustc 的 # 链接子进程定位不到 mold、回退默认 ld 报 cannot find ld。CI 统一走默认 # lld;只删工作副本的 mold 行,本地提交的 config 保留 mold 提速。 sed -i '/link-arg=-fuse-ld=mold/d' .cargo/config.toml - name: Verify tools in PATH shell: bash run: | which sccache mold cargo-nextest sccache --version mold --version - name: Save tool cache if: steps.tool-cache.outputs.cache-hit != 'true' uses: actions/cache/save@v6 with: path: ~/oxide-tools-cache key: oxide-tools-ubuntu-v1