fix(ci): do not gate the targeted repair on the source classifier (#205)
All checks were successful
ci/crow/cron/process-updates/12 Pipeline was successful
ci/crow/cron/process-updates/17 Pipeline was successful
ci/crow/cron/process-updates/6 Pipeline was successful
ci/crow/cron/process-updates/5 Pipeline was successful
ci/crow/cron/process-updates/1 Pipeline was successful
ci/crow/cron/process-updates/2 Pipeline was successful
ci/crow/cron/process-updates/7 Pipeline was successful
ci/crow/cron/process-updates/8 Pipeline was successful
ci/crow/cron/process-updates/9 Pipeline was successful
ci/crow/cron/process-updates/3 Pipeline was successful
ci/crow/cron/process-updates/10 Pipeline was successful
ci/crow/cron/process-updates/4 Pipeline was successful
ci/crow/cron/process-updates/13 Pipeline was successful
ci/crow/cron/process-updates/14 Pipeline was successful
ci/crow/cron/process-updates/15 Pipeline was successful
ci/crow/cron/process-updates/16 Pipeline was successful
ci/crow/cron/process-updates/11 Pipeline was successful
ci/crow/cron/process-updates/18 Pipeline was successful
ci/crow/manual/reindex/4 Pipeline was successful
All checks were successful
ci/crow/cron/process-updates/12 Pipeline was successful
ci/crow/cron/process-updates/17 Pipeline was successful
ci/crow/cron/process-updates/6 Pipeline was successful
ci/crow/cron/process-updates/5 Pipeline was successful
ci/crow/cron/process-updates/1 Pipeline was successful
ci/crow/cron/process-updates/2 Pipeline was successful
ci/crow/cron/process-updates/7 Pipeline was successful
ci/crow/cron/process-updates/8 Pipeline was successful
ci/crow/cron/process-updates/9 Pipeline was successful
ci/crow/cron/process-updates/3 Pipeline was successful
ci/crow/cron/process-updates/10 Pipeline was successful
ci/crow/cron/process-updates/4 Pipeline was successful
ci/crow/cron/process-updates/13 Pipeline was successful
ci/crow/cron/process-updates/14 Pipeline was successful
ci/crow/cron/process-updates/15 Pipeline was successful
ci/crow/cron/process-updates/16 Pipeline was successful
ci/crow/cron/process-updates/11 Pipeline was successful
ci/crow/cron/process-updates/18 Pipeline was successful
ci/crow/manual/reindex/4 Pipeline was successful
## Why The repair workflow ran `build-one.R --sensitive-only`. That flag skips any version the **source** classifier does not call r-minor-sensitive — and it misses `Rcpp`. So the repair skipped `Rcpp` on every slot, leaving its 4.5-built flat binary as the only copy: ``` flat 200 built under R 4.5.3 4.4/ 404 4.5/ 404 4.6/ 404 ``` Every R 4.4 client on those slots then failed at `dyn.load()`. A real install check across 8 slots x 3 minors x 3 repository forms found **44 such failures**, `Rcpp`, `Matrix` and `RJSONIO` among them. ## What changed Drops `--sensitive-only`. Since bincraft v5.3.0 the destination is decided by the built binary's symbols in `upload_single_binary()`, so building unconditionally is safe and correct: a package that needs a per-minor slot lands there, one that does not lands in the flat slot. Skipping before the build is exactly what removed that decision from the path. `crow lint` passes. ## Companion bincraft #129 is the other half: the index build could not compensate either, because it only considered dropping records whose *package* was flagged risky, and `Rcpp` is not — even though the backfill had recorded that object as unable to load under 4.4. Reviewed-on: #205
This commit is contained in:
parent
f3984f337d
commit
cceda03935
1 changed files with 10 additions and 4 deletions
|
|
@ -14,9 +14,15 @@
|
|||
# minor from CI, only `just rebuild` from a workstation with the S3 and Postgres
|
||||
# credentials to hand. This adds that path.
|
||||
#
|
||||
# `build-one.R --sensitive-only` re-runs the ABI classifier per version, so a
|
||||
# package that turns out not to be risky is skipped rather than written into the
|
||||
# wrong slot.
|
||||
# `--sensitive-only` is deliberately NOT passed. That flag gates on the source
|
||||
# classifier, which misses Rcpp: the repair therefore skipped Rcpp entirely,
|
||||
# leaving its 4.5-built flat binary as the only copy and breaking every R 4.4
|
||||
# client on the slot.
|
||||
#
|
||||
# Since bincraft v5.3.0 the destination is decided by the built binary's symbols
|
||||
# in `upload_single_binary()`, so building unconditionally is safe: a package
|
||||
# that needs a per-minor slot lands there, and one that does not lands in the
|
||||
# flat slot. Skipping before the build is what removed that decision.
|
||||
#
|
||||
# Trigger with the slot and an explicit package list:
|
||||
#
|
||||
|
|
@ -207,7 +213,7 @@ steps:
|
|||
continue
|
||||
fi
|
||||
echo "=== rebuilding $$pkg $$ver into $$ABI_R_MINOR ==="
|
||||
"$$RBIN/Rscript" local/build-one.R --sensitive-only "$$pkg" "$$ver" || rc=1
|
||||
"$$RBIN/Rscript" local/build-one.R "$$pkg" "$$ver" || rc=1
|
||||
done
|
||||
exit $$rc
|
||||
backend_options:
|
||||
|
|
|
|||
Loading…
Reference in a new issue