Skip to content

Commit 08afa4b

Browse files
authored
Merge branch 'main' into pyupgrade
2 parents 5858c3f + deb3d04 commit 08afa4b

39 files changed

Lines changed: 758 additions & 104 deletions

‎.github/actions/doc_preview/action.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ runs:
2020
steps:
2121
- name: Deploy doc preview
2222
if: ${{ startsWith(github.ref_name, 'pull-request/') }}
23-
uses: JamesIves/github-pages-deploy-action@d92aa235d04922e8f08b40ce78cc5442fcfbfa2f # v4.8.0
23+
uses: JamesIves/github-pages-deploy-action@fa24774553152dd7873cd16ebd8d959b010c5445 # v4.9.0
2424
with:
2525
git-config-name: cuda-python-bot
2626
git-config-email: [email protected]
@@ -35,7 +35,7 @@ runs:
3535

3636
- name: Leave a comment after deployment
3737
if: ${{ startsWith(github.ref_name, 'pull-request/') }}
38-
uses: marocchino/sticky-pull-request-comment@d4d6b0936434b21bc8345ad45a440c5f7d2c40ff # v3.0.3
38+
uses: marocchino/sticky-pull-request-comment@5770ad5eb8f42dd2c4f34da00c94c5381e49af88 # v3.0.5
3939
with:
4040
header: pr-preview
4141
number: ${{ inputs.pr-number }}

‎.github/actions/fetch_ctk/action.yml‎

Lines changed: 67 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -19,39 +19,80 @@ inputs:
1919
description: "where the CTK components will be installed to, relative to $PWD"
2020
required: false
2121
default: "./cuda_toolkit"
22+
redist-base-url:
23+
description: >
24+
Base URL of a redistrib server (manifest and component archives).
25+
Defaults to the public NVIDIA developer server.
26+
Override to install from an alternate redistrib server.
27+
required: false
28+
default: "https://developer.download.nvidia.com/compute/cuda/redist"
2229

2330
runs:
2431
using: composite
2532
steps:
33+
- name: Install Unix dependencies
34+
if: ${{ runner.os == 'Linux' }}
35+
uses: ./.github/actions/install_unix_deps
36+
with:
37+
dependencies: "zstd curl xz-utils"
38+
dependent_exes: "zstd curl xz"
39+
40+
- name: Install Windows dependencies
41+
if: ${{ runner.os == 'Windows' }}
42+
uses: ./.github/actions/install_windows_deps
43+
with:
44+
dependent_exes: "curl unzip tar sha256sum cygpath"
45+
2646
- name: Set up CTK cache variable
2747
shell: bash --noprofile --norc -xeuo pipefail {0}
2848
run: |
29-
# Pre-process the component list to ensure hash uniqueness
3049
# Use the runtime workspace mount so this also works inside container jobs.
3150
CTK_REDIST_TOOL="${GITHUB_WORKSPACE}/ci/tools/fetch_ctk_redistrib.py"
32-
CTK_CACHE_COMPONENTS=${{ inputs.cuda-components }}
33-
CTK_JSON_URL="https://developer.download.nvidia.com/compute/cuda/redist/redistrib_${{ inputs.cuda-version }}.json"
51+
CTK_BASE_URL="${{ inputs.redist-base-url }}"
52+
# A trailing slash would defeat the public-server comparison below and double up in URLs.
53+
CTK_BASE_URL="${CTK_BASE_URL%/}"
54+
# RUNNER_TEMP persists across steps, so "Get CUDA components" reuses this file.
55+
CTK_JSON_FILE="$RUNNER_TEMP/redistrib-${{ inputs.cuda-version }}.json"
56+
curl -LSs --fail --retry 3 --retry-delay 2 "${CTK_BASE_URL}/redistrib_${{ inputs.cuda-version }}.json" -o "$CTK_JSON_FILE"
57+
58+
# Pin the metadata JSON: the per-archive sha256 checks below are only
59+
# trustworthy if the JSON that carries those hashes is itself trusted.
60+
# The pins describe the public server; alternate servers only warn.
61+
if [[ "$CTK_BASE_URL" == "https://developer.download.nvidia.com/compute/cuda/redist" ]]; then
62+
METADATA_SOURCE=public
63+
else
64+
METADATA_SOURCE=custom
65+
fi
66+
python "$CTK_REDIST_TOOL" verify-metadata \
67+
--cuda-version "${{ inputs.cuda-version }}" \
68+
--metadata-path "$CTK_JSON_FILE" \
69+
--metadata-source "$METADATA_SOURCE"
70+
71+
# Pre-process the component list to ensure hash uniqueness
3472
CTK_CACHE_COMPONENTS="$(python "$CTK_REDIST_TOOL" filter-components \
3573
--host-platform "${{ inputs.host-platform }}" \
3674
--cuda-version "${{ inputs.cuda-version }}" \
37-
--components "$CTK_CACHE_COMPONENTS" \
38-
--metadata-url "$CTK_JSON_URL")"
75+
--components "${{ inputs.cuda-components }}" \
76+
--metadata-path "$CTK_JSON_FILE")"
3977
78+
# Alternate redist servers (non-default) publish different manifests for the
79+
# same CUDA version; keying on the full manifest hash keeps them from restoring
80+
# each other's toolkit (a truncated hash could be collided on purpose).
81+
# Hash via stdin: with a backslash in the path (Windows RUNNER_TEMP), sha256sum
82+
# prefixes its output line with "\", which would end up in the cache key.
83+
MANIFEST_SHA256="$(sha256sum < "$CTK_JSON_FILE" | awk '{print $1}')"
4084
HASH=$(echo -n "${CTK_CACHE_COMPONENTS}" | sha256sum | awk '{print $1}')
41-
echo "CTK_CACHE_KEY=mini-ctk-${{ inputs.cuda-version }}-${{ inputs.host-platform }}-$HASH" >> $GITHUB_ENV
42-
echo "CTK_CACHE_FILENAME=mini-ctk-${{ inputs.cuda-version }}-${{ inputs.host-platform }}-$HASH.tar.gz" >> $GITHUB_ENV
43-
echo "CTK_CACHE_COMPONENTS=${CTK_CACHE_COMPONENTS}" >> $GITHUB_ENV
44-
45-
- name: Install dependencies
46-
uses: ./.github/actions/install_unix_deps
47-
continue-on-error: false
48-
with:
49-
dependencies: "zstd curl xz-utils"
50-
dependent_exes: "zstd curl xz"
85+
{
86+
echo "CTK_CACHE_KEY=mini-ctk-${{ inputs.cuda-version }}-${{ inputs.host-platform }}-$HASH-m$MANIFEST_SHA256"
87+
echo "CTK_CACHE_FILENAME=mini-ctk-${{ inputs.cuda-version }}-${{ inputs.host-platform }}-$HASH-m$MANIFEST_SHA256.tar.gz"
88+
echo "CTK_CACHE_COMPONENTS=${CTK_CACHE_COMPONENTS}"
89+
echo "CTK_BASE_URL=${CTK_BASE_URL}"
90+
echo "CTK_JSON_FILE=${CTK_JSON_FILE}"
91+
} >> "$GITHUB_ENV"
5192
5293
- name: Download CTK cache
5394
id: ctk-get-cache
54-
uses: actions/cache/restore@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
95+
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
5596
continue-on-error: true
5697
with:
5798
key: ${{ env.CTK_CACHE_KEY }}
@@ -68,13 +109,10 @@ runs:
68109
rm -rf $CACHE_TMP_DIR
69110
mkdir $CACHE_TMP_DIR
70111
71-
# The binary archives (redist) are guaranteed to be updated as part of the release posting.
72112
# Use the runtime workspace mount so this also works inside container jobs.
73113
CTK_REDIST_TOOL="${GITHUB_WORKSPACE}/ci/tools/fetch_ctk_redistrib.py"
74-
CTK_BASE_URL="https://developer.download.nvidia.com/compute/cuda/redist/"
75-
CTK_JSON_URL="$CTK_BASE_URL/redistrib_${{ inputs.cuda-version }}.json"
76-
CTK_JSON_FILE="$CACHE_TMP_DIR/redistrib.json"
77-
curl -LSs "$CTK_JSON_URL" -o "$CTK_JSON_FILE"
114+
# CTK_BASE_URL and the verified manifest at CTK_JSON_FILE come from
115+
# "Set up CTK cache variable".
78116
if [[ "${{ inputs.host-platform }}" == linux* ]]; then
79117
function extract() {
80118
tar -xvf $1 -C $CACHE_TMP_DIR --strip-components=1
@@ -102,6 +140,13 @@ runs:
102140
CTK_COMPONENT_URL="${CTK_BASE_URL}/${CTK_COMPONENT_REL_PATH}"
103141
CTK_COMPONENT_COMPONENT_FILENAME="$(basename $CTK_COMPONENT_REL_PATH)"
104142
download $CTK_COMPONENT_URL $CTK_COMPONENT_COMPONENT_FILENAME
143+
# Verify the downloaded archive against the sha256 in the (pinned)
144+
# metadata before extracting; fail closed on any mismatch.
145+
CTK_COMPONENT_SHA256="$(python "$CTK_REDIST_TOOL" component-sha256 \
146+
--host-platform "${{ inputs.host-platform }}" \
147+
--component "$CTK_COMPONENT" \
148+
--metadata-path "$CTK_JSON_FILE")"
149+
echo "${CTK_COMPONENT_SHA256} ${CTK_COMPONENT_COMPONENT_FILENAME}" | sha256sum --check --strict -
105150
extract $CTK_COMPONENT_COMPONENT_FILENAME
106151
rm $CTK_COMPONENT_COMPONENT_FILENAME
107152
}
@@ -137,7 +182,7 @@ runs:
137182
- name: Upload CTK cache
138183
if: ${{ !cancelled() &&
139184
steps.ctk-get-cache.outputs.cache-hit != 'true' }}
140-
uses: actions/cache/save@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
185+
uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
141186
with:
142187
key: ${{ env.CTK_CACHE_KEY }}
143188
path: ./${{ env.CTK_CACHE_FILENAME }}

‎.github/actions/griffe-api-check/action.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ runs:
2525
using: composite
2626
steps:
2727
- name: Install uv
28-
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
28+
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
2929
with:
3030
enable-cache: false
3131

‎.github/actions/install_unix_deps/action.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
1+
# SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
22
#
33
# SPDX-License-Identifier: Apache-2.0
44

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
name: Install dependencies on Windows
5+
6+
description: Install Git Bash tools from a verified portable Git bundle when required executables are missing.
7+
8+
inputs:
9+
dependent_exes:
10+
description: Space-separated executable names provided by Git for Windows
11+
required: true
12+
13+
runs:
14+
using: composite
15+
steps:
16+
- name: Install dependencies
17+
shell: powershell
18+
env:
19+
DEPENDENT_EXES: ${{ inputs.dependent_exes }}
20+
run: |
21+
$ErrorActionPreference = 'Stop'
22+
if ($env:DEPENDENT_EXES -notmatch '^\s*[a-zA-Z0-9_.-]+(\s+[a-zA-Z0-9_.-]+)*\s*$') {
23+
throw 'Expected a space-separated list of executable names.'
24+
}
25+
# Fail the check if the list did not reach Bash (a WSL bash would not receive it).
26+
# Keep double quotes out of $check: Windows PowerShell 5.1 strips them when
27+
# passing arguments to native commands. The names are validated above.
28+
$check = 'missing=0; set -- $DEPENDENT_EXES; [ $# -gt 0 ] || missing=1; for tool in $DEPENDENT_EXES; do command -v $tool || missing=1; done; exit $missing'
29+
# Skip the WSL launcher in System32/WindowsApps: it is not a Git for Windows bash.
30+
$bash = Get-Command bash -All -ErrorAction SilentlyContinue |
31+
Where-Object { $_.Source -notmatch '\\(System32|SysWOW64|WindowsApps)\\' } |
32+
Select-Object -First 1
33+
if ($bash) {
34+
& $bash.Source --noprofile --norc -c $check
35+
if ($LASTEXITCODE -eq 0) {
36+
# Later `shell: bash` steps resolve `bash` through PATH. If that is not the
37+
# Git Bash validated above (e.g. the WSL launcher comes first), put it first.
38+
$pathBash = Get-Command bash -ErrorAction SilentlyContinue
39+
if ($pathBash -and ($pathBash.Source -ne $bash.Source)) {
40+
$bashDir = Split-Path -Parent $bash.Source
41+
$env:PATH = "$bashDir;$env:PATH"
42+
$bashDir | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
43+
Write-Host "Prepended $bashDir to PATH so steps use Git Bash instead of $($pathBash.Source)."
44+
}
45+
Write-Host 'All dependencies are found. Do nothing.'
46+
exit 0
47+
}
48+
}
49+
50+
$architecture = [Runtime.InteropServices.RuntimeInformation]::OSArchitecture.ToString()
51+
switch ($architecture) {
52+
'Arm64' {
53+
$package = 'arm64'
54+
$expectedHash = '3bf26b94d9399b16a890776e468334f501742861576cbcdea2d9134643c374bd'
55+
}
56+
'X64' {
57+
$package = '64-bit'
58+
$expectedHash = 'ab00566336b5472120f9a52d34f2e79c5406535792acb0548001ffd0bd090e5d'
59+
}
60+
default { throw "Unsupported Windows architecture: $architecture" }
61+
}
62+
$root = Join-Path $env:RUNNER_TOOL_CACHE "WindowsDeps\Git-2.55.0.3-$package"
63+
$complete = "$root.complete"
64+
if (-not (Test-Path -LiteralPath $complete)) {
65+
$archive = Join-Path $env:RUNNER_TEMP "PortableGit-2.55.0.3-$package.7z.exe"
66+
try {
67+
Invoke-WebRequest -UseBasicParsing -Uri "https://github.com/git-for-windows/git/releases/download/v2.55.0.windows.3/PortableGit-2.55.0.3-$package.7z.exe" -OutFile $archive
68+
$actualHash = (Get-FileHash -LiteralPath $archive -Algorithm SHA256).Hash.ToLowerInvariant()
69+
if ($actualHash -ne $expectedHash) {
70+
throw "Portable Git checksum mismatch: expected $expectedHash, got $actualHash."
71+
}
72+
if (Test-Path -LiteralPath $root) {
73+
Remove-Item -LiteralPath $root -Recurse -Force
74+
}
75+
$process = Start-Process -FilePath $archive -ArgumentList @('-y', ('-o"{0}"' -f $root)) -Wait -PassThru
76+
if ($process.ExitCode -ne 0) {
77+
throw "Portable Git extraction failed with exit code $($process.ExitCode)."
78+
}
79+
}
80+
finally {
81+
if (Test-Path -LiteralPath $archive) {
82+
Remove-Item -LiteralPath $archive -Force
83+
}
84+
}
85+
}
86+
$env:PATH = "$root\bin;$root\usr\bin;$env:PATH"
87+
& "$root\bin\bash.exe" --noprofile --norc -c $check
88+
if ($LASTEXITCODE -ne 0) {
89+
throw 'Required executables are still missing after installing portable Git.'
90+
}
91+
New-Item -ItemType File -Force -Path $complete | Out-Null
92+
@("$root\bin", "$root\usr\bin") | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append

‎.github/actions/lychee-links/action.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ runs:
138138

139139
- name: Upload link-check reports
140140
if: ${{ always() }}
141-
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
141+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
142142
with:
143143
name: lychee-${{ inputs.kind }}-${{ runner.os }}-${{ github.run_id }}-${{ github.run_attempt }}
144144
path: ${{ runner.temp }}/lychee-reports/

‎.github/copy-pr-bot.yaml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
1+
# SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
22
# SPDX-License-Identifier: Apache-2.0
33

44
# Configuration file for `copy-pr-bot` GitHub App

‎.github/workflows/bandit.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
2727

2828
- name: Install uv
29-
uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
29+
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
3030
with:
3131
enable-cache: false
3232

@@ -45,6 +45,6 @@ jobs:
4545
with:
4646
args: "check --select S --ignore ${{ steps.ignore-codes.outputs.codes }} --output-format sarif --output-file results.sarif"
4747
- name: Upload SARIF file
48-
uses: github/codeql-action/upload-sarif@24c54180a607b1449ed407dd24f251e4e9147c8d # v4.38.3
48+
uses: github/codeql-action/upload-sarif@9b3254085494b55a0f7c4c2b3d2d52cc712ce370 # v4.39.1
4949
with:
5050
sarif_file: results.sarif

‎.github/workflows/build-wheel.yml‎

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ jobs:
9191
# xref: https://github.com/orgs/community/discussions/42856#discussioncomment-7678867
9292
- name: Adding addtional GHA cache-related env vars
9393
if: ${{ env.BUILD_BINDINGS == 'true' || env.BUILD_CORE == 'true' }}
94-
uses: actions/github-script@v9
94+
uses: actions/github-script@v9.0.0
9595
with:
9696
script: |
9797
core.exportVariable('ACTIONS_CACHE_SERVICE_V2', 'on');
@@ -226,7 +226,7 @@ jobs:
226226

227227
- name: Build cuda.bindings wheel
228228
if: ${{ env.BUILD_BINDINGS == 'true' }}
229-
uses: pypa/cibuildwheel@b9e566a2b284570af229f6c2a33673410d0389a3 # v4.3.4
229+
uses: pypa/cibuildwheel@f9b966cfadf4109556cadc5bb39ddb72d0ce664e # v4.3.5
230230
with:
231231
package-dir: ./cuda_bindings_13/
232232
output-dir: ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }}
@@ -238,6 +238,7 @@ jobs:
238238
# extras: uv puts uv on PATH (required on Windows).
239239
CIBW_BUILD_FRONTEND: "build[uv]"
240240
# CIBW mounts the host filesystem under /host
241+
# Skip startup cache probes and back off on repeated cache errors (#3273).
241242
CIBW_ENVIRONMENT_LINUX: >
242243
CUDA_PATH=/host/${{ env.CUDA_PATH }}
243244
CUDA_PYTHON_PARALLEL_LEVEL=${{ env.CUDA_PYTHON_PARALLEL_LEVEL }}
@@ -247,6 +248,9 @@ jobs:
247248
CXX="/host/${{ env.SCCACHE_PATH }} c++"
248249
SCCACHE_GHA_ENABLED=true
249250
SCCACHE_PREPROCESSOR_CACHE_GHA_ENABLED=true
251+
SCCACHE_SKIP_CACHE_CHECK=true
252+
SCCACHE_CACHE_RATE_LIMIT_ON_ERROR_COUNT=5
253+
SCCACHE_CACHE_RATE_LIMIT_ON_ERROR_WINDOW_SIZE_SECS=5
250254
ACTIONS_RUNTIME_TOKEN=${{ env.ACTIONS_RUNTIME_TOKEN }}
251255
ACTIONS_RESULTS_URL=${{ env.ACTIONS_RESULTS_URL }}
252256
ACTIONS_CACHE_SERVICE_V2=${{ env.ACTIONS_CACHE_SERVICE_V2 }}
@@ -324,7 +328,7 @@ jobs:
324328

325329
- name: Build cuda.core wheel
326330
if: ${{ env.BUILD_CORE == 'true' }}
327-
uses: pypa/cibuildwheel@b9e566a2b284570af229f6c2a33673410d0389a3 # v4.3.4
331+
uses: pypa/cibuildwheel@f9b966cfadf4109556cadc5bb39ddb72d0ce664e # v4.3.5
328332
with:
329333
package-dir: ./cuda_core/
330334
output-dir: ${{ env.CUDA_CORE_ARTIFACTS_DIR }}
@@ -335,6 +339,7 @@ jobs:
335339
# See the cuda.bindings step above for UV_* vs PIP_*.
336340
CIBW_BUILD_FRONTEND: "build[uv]"
337341
# CIBW mounts the host filesystem under /host
342+
# Skip startup cache probes and back off on repeated cache errors (#3273).
338343
CIBW_ENVIRONMENT_LINUX: >
339344
CUDA_PATH=/host/${{ env.CUDA_PATH }}
340345
CUDA_PYTHON_PARALLEL_LEVEL=${{ env.CUDA_PYTHON_PARALLEL_LEVEL }}
@@ -346,6 +351,9 @@ jobs:
346351
CXX="/host/${{ env.SCCACHE_PATH }} c++"
347352
SCCACHE_GHA_ENABLED=true
348353
SCCACHE_PREPROCESSOR_CACHE_GHA_ENABLED=true
354+
SCCACHE_SKIP_CACHE_CHECK=true
355+
SCCACHE_CACHE_RATE_LIMIT_ON_ERROR_COUNT=5
356+
SCCACHE_CACHE_RATE_LIMIT_ON_ERROR_WINDOW_SIZE_SECS=5
349357
ACTIONS_RUNTIME_TOKEN=${{ env.ACTIONS_RUNTIME_TOKEN }}
350358
ACTIONS_RESULTS_URL=${{ env.ACTIONS_RESULTS_URL }}
351359
ACTIONS_CACHE_SERVICE_V2=${{ env.ACTIONS_CACHE_SERVICE_V2 }}
@@ -603,7 +611,7 @@ jobs:
603611
604612
- name: Build cuda.core wheel
605613
if: ${{ !inputs.single-cuda-major && env.BUILD_CORE == 'true' }}
606-
uses: pypa/cibuildwheel@b9e566a2b284570af229f6c2a33673410d0389a3 # v4.3.4
614+
uses: pypa/cibuildwheel@f9b966cfadf4109556cadc5bb39ddb72d0ce664e # v4.3.5
607615
with:
608616
package-dir: ./cuda_core/
609617
output-dir: ${{ env.CUDA_CORE_ARTIFACTS_DIR }}
@@ -614,6 +622,7 @@ jobs:
614622
# See the cuda.bindings step above for UV_* vs PIP_*.
615623
CIBW_BUILD_FRONTEND: "build[uv]"
616624
# CIBW mounts the host filesystem under /host
625+
# Skip startup cache probes and back off on repeated cache errors (#3273).
617626
CIBW_ENVIRONMENT_LINUX: >
618627
CUDA_PATH=/host/${{ env.CUDA_PATH }}
619628
CUDA_PYTHON_PARALLEL_LEVEL=${{ env.CUDA_PYTHON_PARALLEL_LEVEL }}
@@ -625,6 +634,9 @@ jobs:
625634
CXX="/host/${{ env.SCCACHE_PATH }} c++"
626635
SCCACHE_GHA_ENABLED=true
627636
SCCACHE_PREPROCESSOR_CACHE_GHA_ENABLED=true
637+
SCCACHE_SKIP_CACHE_CHECK=true
638+
SCCACHE_CACHE_RATE_LIMIT_ON_ERROR_COUNT=5
639+
SCCACHE_CACHE_RATE_LIMIT_ON_ERROR_WINDOW_SIZE_SECS=5
628640
ACTIONS_RUNTIME_TOKEN=${{ env.ACTIONS_RUNTIME_TOKEN }}
629641
ACTIONS_RESULTS_URL=${{ env.ACTIONS_RESULTS_URL }}
630642
ACTIONS_CACHE_SERVICE_V2=${{ env.ACTIONS_CACHE_SERVICE_V2 }}

‎.github/workflows/ci-nightly.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ jobs:
6565

6666
- name: Run CI tools unit tests
6767
run: |
68-
python -m pip install pytest pyyaml==6.0.3
68+
python -m pip install pytest pyyaml==6.0.3 pathspec==0.12.1
6969
# Standalone CI tool tests; skip repo-root conftest.py (imports cuda.pathfinder).
7070
python -m pytest -v --noconftest ci/tools/tests
7171

0 commit comments

Comments
 (0)