3
0
Fork 0
mirror of https://github.com/Swatinem/rust-cache synced 2026-07-17 03:45:43 +00:00
This commit is contained in:
eitsupi 2026-07-07 09:48:49 +02:00 committed by GitHub
commit 664c118322
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 112 additions and 17 deletions

87
.github/workflows/target-triple.yml vendored Normal file
View file

@ -0,0 +1,87 @@
name: target-triple
on: [push, pull_request]
permissions: {}
jobs:
save:
if: github.repository == 'Swatinem/rust-cache'
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
name: Save target-triple cache on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- run: rustup toolchain install stable --profile minimal --no-self-update
- name: Set host target
shell: bash
run: |
echo "RUST_TARGET=$(rustc -vV | sed -n 's/^host: //p')" >> "$GITHUB_ENV"
- uses: ./
with:
workspaces: tests
shared-key: target-triple-${{ matrix.os }}-${{ github.run_id }}-${{ github.run_attempt }}
add-job-id-key: "false"
add-rust-environment-hash-key: "false"
cache-workspace-crates: "true"
- run: cargo check --target "$RUST_TARGET"
working-directory: tests
shell: bash
restore:
if: github.repository == 'Swatinem/rust-cache'
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
name: Restore target-triple cache on ${{ matrix.os }}
needs: save
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- run: rustup toolchain install stable --profile minimal --no-self-update
- name: Set host target
shell: bash
run: |
echo "RUST_TARGET=$(rustc -vV | sed -n 's/^host: //p')" >> "$GITHUB_ENV"
- id: cache
uses: ./
with:
workspaces: tests
shared-key: target-triple-${{ matrix.os }}-${{ github.run_id }}-${{ github.run_attempt }}
add-job-id-key: "false"
add-rust-environment-hash-key: "false"
cache-workspace-crates: "true"
save-if: "false"
- name: Verify target-triple artifacts
env:
CACHE_HIT: ${{ steps.cache.outputs.cache-hit }}
shell: bash
run: |
if [[ "$CACHE_HIT" != "true" ]]; then
echo "The target-triple cache was not restored exactly." >&2
exit 1
fi
if ! compgen -G "tests/target/$RUST_TARGET/debug/deps/rust_cache-*" > /dev/null; then
echo "The target-triple artifacts were not restored." >&2
exit 1
fi

View file

@ -1,4 +1,4 @@
import { v as commonjsGlobal, x as requireTunnel, y as getDefaultExportFromCjs, z as getAugmentedNamespace } from './cleanup-BnmJoqJp.js';
import { v as commonjsGlobal, x as requireTunnel, y as getDefaultExportFromCjs, z as getAugmentedNamespace } from './cleanup-By9HBZSo.js';
import os__default from 'os';
import crypto__default from 'crypto';
import fs__default from 'fs';

View file

@ -1,4 +1,4 @@
import { f as debug, m as mkdirP, n as create, l as exec, w as which, o as warning, i as info, H as HttpCodes, p as HttpClientError, q as HttpClient, t as isDebug, u as setSecret, B as BearerCredentialHandler, e as error } from './cleanup-BnmJoqJp.js';
import { f as debug, m as mkdirP, n as create, l as exec, w as which, o as warning, i as info, H as HttpCodes, p as HttpClientError, q as HttpClient, t as isDebug, u as setSecret, B as BearerCredentialHandler, e as error } from './cleanup-By9HBZSo.js';
import * as path from 'path';
import * as crypto$1 from 'crypto';
import * as fs from 'fs';

View file

@ -34145,10 +34145,10 @@ async function getCacheProvider() {
let cache;
switch (cacheProvider) {
case "github":
cache = await import('./cache-oK5XC6-w.js');
cache = await import('./cache-XOpvQMVD.js');
break;
case "warpbuild":
cache = await import('./cache-COXGx-w3.js').then(function (n) { return n.c; });
cache = await import('./cache-BnuDdkC4.js').then(function (n) { return n.c; });
break;
default:
throw new Error(`The \`cache-provider\` \`${cacheProvider}\` is not valid.`);
@ -34596,14 +34596,18 @@ async function cleanTargetDir(targetDir, packages, checkTimestamp = false) {
for await (const dirent of dir) {
if (dirent.isDirectory()) {
let dirName = path__default.join(dir.path, dirent.name);
// is it a profile dir, or a nested target dir?
let isNestedTarget = (await exists(path__default.join(dirName, "CACHEDIR.TAG"))) || (await exists(path__default.join(dirName, ".rustc_info.json")));
// Target-triple directories do not contain Cargo's target directory
// markers, so identify profiles by their artifact directories as well.
const isProfile = dirent.name === "tests" ||
(await exists(path__default.join(dirName, "build"))) ||
(await exists(path__default.join(dirName, ".fingerprint"))) ||
(await exists(path__default.join(dirName, "deps")));
try {
if (isNestedTarget) {
await cleanTargetDir(dirName, packages, checkTimestamp);
if (isProfile) {
await cleanProfileTarget(dirName, packages, checkTimestamp);
}
else {
await cleanProfileTarget(dirName, packages, checkTimestamp);
await cleanTargetDir(dirName, packages, checkTimestamp);
}
}
catch { }

2
dist/restore.js vendored
View file

@ -1,4 +1,4 @@
import { e as error, g as getCacheProvider, a as getInput, b as exportVariable, C as CacheConfig, i as info, c as cleanTargetDir, r as reportError, s as setOutput } from './cleanup-BnmJoqJp.js';
import { e as error, g as getCacheProvider, a as getInput, b as exportVariable, C as CacheConfig, i as info, c as cleanTargetDir, r as reportError, s as setOutput } from './cleanup-By9HBZSo.js';
import 'os';
import 'crypto';
import 'fs';

2
dist/save.js vendored
View file

@ -1,4 +1,4 @@
import { e as error, g as getCacheProvider, a as getInput, d as isCacheUpToDate, i as info, C as CacheConfig, c as cleanTargetDir, f as debug, h as cleanRegistry, j as cleanBin, k as cleanGit, r as reportError, l as exec } from './cleanup-BnmJoqJp.js';
import { e as error, g as getCacheProvider, a as getInput, d as isCacheUpToDate, i as info, C as CacheConfig, c as cleanTargetDir, f as debug, h as cleanRegistry, j as cleanBin, k as cleanGit, r as reportError, l as exec } from './cleanup-By9HBZSo.js';
import 'os';
import 'crypto';
import 'fs';

View file

@ -15,15 +15,19 @@ export async function cleanTargetDir(targetDir: string, packages: Packages, chec
for await (const dirent of dir) {
if (dirent.isDirectory()) {
let dirName = path.join(dir.path, dirent.name);
// is it a profile dir, or a nested target dir?
let isNestedTarget =
(await exists(path.join(dirName, "CACHEDIR.TAG"))) || (await exists(path.join(dirName, ".rustc_info.json")));
// Target-triple directories do not contain Cargo's target directory
// markers, so identify profiles by their artifact directories as well.
const isProfile =
dirent.name === "tests" ||
(await exists(path.join(dirName, "build"))) ||
(await exists(path.join(dirName, ".fingerprint"))) ||
(await exists(path.join(dirName, "deps")));
try {
if (isNestedTarget) {
await cleanTargetDir(dirName, packages, checkTimestamp);
} else {
if (isProfile) {
await cleanProfileTarget(dirName, packages, checkTimestamp);
} else {
await cleanTargetDir(dirName, packages, checkTimestamp);
}
} catch {}
} else if (dirent.name !== "CACHEDIR.TAG") {