|
6 | 6 | # its bytes are not what the pinned pixi version generates. Pull requests also |
7 | 7 | # check stale workspaces at the base SHA so diagnostics can distinguish changes |
8 | 8 | # introduced by the PR from maintenance already needed on the base branch. |
9 | | -# Attribution changes remediation only; the aggregate job remains strict for |
10 | | -# every stale classification. See #2298 and #2926. |
| 9 | +# Attribution changes remediation only. A temporary, exact-match exception |
| 10 | +# covers Pixi 0.73.0 pruning the samples environment's local source references; |
| 11 | +# every other stale classification remains strict. See #2298 and #2926. |
11 | 12 |
|
12 | 13 | name: "CI: pixi lockfile freshness check" |
13 | 14 |
|
|
28 | 29 | - "**/pixi.lock" |
29 | 30 | - "**/pyproject.toml" |
30 | 31 | - "ci/tools/classify_pixi_lockfile_freshness.py" |
| 32 | + - "ci/tools/check_pixi_samples_source_pruning.py" |
| 33 | + - "ci/tools/tests/test_check_pixi_samples_source_pruning.py" |
31 | 34 | - "ci/tools/list_pixi_workspaces.py" |
32 | 35 | - "ci/pixi-version.env" |
33 | 36 | - ".github/actions/setup-pixi/action.yml" |
@@ -195,7 +198,35 @@ jobs: |
195 | 198 | continue |
196 | 199 | fi |
197 | 200 |
|
| 201 | + known_samples_pruning=0 |
| 202 | + if [[ "${manifest}" == "cuda_core" ]]; then |
| 203 | + defect_status=0 |
| 204 | + python3 ci/tools/check_pixi_samples_source_pruning.py \ |
| 205 | + --original-blob "${candidate_original}" \ |
| 206 | + --lockfile "${lockfile}" \ |
| 207 | + --manifest-path "${manifest}/pixi.toml" \ |
| 208 | + --pixi-version "${PIXI_VERSION}" \ |
| 209 | + --check-status "${check_status}" \ |
| 210 | + || defect_status=$? |
| 211 | + if ((defect_status == 0)); then |
| 212 | + known_samples_pruning=1 |
| 213 | + elif ((defect_status != 1)); then |
| 214 | + echo "::error::Could not determine whether '${lockfile}' matches the known Pixi samples-source pruning defect. Resolve the detector error above and rerun." |
| 215 | + echo "| \`${manifest}\` | Operational error: known-defect detector failed. |" >> "${GITHUB_STEP_SUMMARY}" |
| 216 | + failed=1 |
| 217 | + echo "::endgroup::" |
| 218 | + continue |
| 219 | + fi |
| 220 | + fi |
| 221 | +
|
198 | 222 | if [[ "${EVENT_NAME}" != "pull_request" ]]; then |
| 223 | + if ((known_samples_pruning != 0)); then |
| 224 | + echo "::warning title=Known Pixi samples lockfile bug::Pixi ${PIXI_VERSION} removed only the nine samples local-source references. Keeping the committed references; all other lockfile changes remain strict. Remove this temporary exception once the upstream fix is released and verified." |
| 225 | + echo "| \`${manifest}\` | Known Pixi samples-source pruning bug: warning only; committed local-source references retained. |" >> "${GITHUB_STEP_SUMMARY}" |
| 226 | + git cat-file blob "${candidate_original}" > "${lockfile}" |
| 227 | + echo "::endgroup::" |
| 228 | + continue |
| 229 | + fi |
199 | 230 | echo "::error title=Stale Pixi lockfile::Lockfile '${lockfile}' is stale. Regenerate and commit it with pixi ${PIXI_VERSION}: pixi lock --manifest-path ${manifest}." |
200 | 231 | echo "| \`${manifest}\` | Stale: regenerate and commit the lockfile. |" >> "${GITHUB_STEP_SUMMARY}" |
201 | 232 | failed=1 |
@@ -256,6 +287,19 @@ jobs: |
256 | 287 | python3 ci/tools/classify_pixi_lockfile_freshness.py "${classifier_args[@]}" |
257 | 288 | )" |
258 | 289 |
|
| 290 | + # Do not let a matching solver result hide PR-specific manifest |
| 291 | + # changes, even if they happen to produce the same lockfile blobs. |
| 292 | + if ((known_samples_pruning != 0)) && \ |
| 293 | + [[ "${classification}" == "base-maintenance" ]] && \ |
| 294 | + git diff --quiet "${BASE_SHA}" HEAD -- \ |
| 295 | + ':(glob)**/pixi.toml' ':(glob)**/pyproject.toml' ci/pixi-version.env; then |
| 296 | + echo "::warning title=Known inherited Pixi samples lockfile bug::Base and candidate reproduce the same nine-reference samples-source pruning defect, with no PR changes to lock inputs. Keeping the committed local-source references; all other lockfile changes remain strict. Remove this temporary exception once the upstream fix is released and verified." |
| 297 | + echo "| \`${manifest}\` | Known inherited Pixi samples-source pruning bug: warning only; no lock-input changes in this PR. Committed local-source references retained. |" >> "${GITHUB_STEP_SUMMARY}" |
| 298 | + git cat-file blob "${candidate_original}" > "${lockfile}" |
| 299 | + echo "::endgroup::" |
| 300 | + continue |
| 301 | + fi |
| 302 | +
|
259 | 303 | case "${classification}" in |
260 | 304 | pr-induced) |
261 | 305 | echo "::error title=PR-induced Pixi lockfile change::Lockfile '${lockfile}' became stale in this PR. Regenerate and commit it with pixi ${PIXI_VERSION}: pixi lock --manifest-path ${manifest}." |
|
0 commit comments