refactor(build-one): delegate ABI classification to bincraft #136

Merged
pat-s merged 1 commit from t3code/github-app-rate-limits into main 2026-07-20 17:06:36 +00:00
Owner

Motivation

The weekly rebuild hit GitHub's per-user REST rate limit (HTTP 403 "API rate limit exceeded for user ID ..."). The root cause and the shared fix live in bincraft (rpkgs/bincraft#74): version resolution now comes from CRAN metadata instead of the GitHub tags API, and ABI classification is cached.

This PR wires the consumer side.

Changes

  • local/build-one.R: classify() no longer clones github.com/cran and calls bincraft::needs_per_minor_recompile() itself. It now delegates to the newly exported bincraft::classify_r_minor_sensitive(), passing the metadata-DB parameters so the verdict is fetched from the CRAN source tarball (no GitHub) and cached in the abi_classification table. Repeated runs and new-OS full rebuilds reuse the cached verdict.

Behaviour change

  • No functional change to what gets built or where; only how sensitivity is determined (cached, CRAN-tarball-based, no GitHub clone in this path).

Dependency

  • Requires a bincraft release that includes rpkgs/bincraft#74 (exports classify_r_minor_sensitive()). Merge and release that first; this branch only takes effect once CI installs the updated bincraft.
## Motivation The weekly rebuild hit GitHub's per-user REST rate limit (HTTP 403 "API rate limit exceeded for user ID ..."). The root cause and the shared fix live in bincraft (rpkgs/bincraft#74): version resolution now comes from CRAN metadata instead of the GitHub tags API, and ABI classification is cached. This PR wires the consumer side. ## Changes - `local/build-one.R`: `classify()` no longer clones `github.com/cran` and calls `bincraft::needs_per_minor_recompile()` itself. It now delegates to the newly exported `bincraft::classify_r_minor_sensitive()`, passing the metadata-DB parameters so the verdict is fetched from the CRAN source tarball (no GitHub) and cached in the `abi_classification` table. Repeated runs and new-OS full rebuilds reuse the cached verdict. ## Behaviour change - No functional change to what gets built or where; only how sensitivity is determined (cached, CRAN-tarball-based, no GitHub clone in this path). ## Dependency - Requires a bincraft release that includes rpkgs/bincraft#74 (exports `classify_r_minor_sensitive()`). Merge and release that first; this branch only takes effect once CI installs the updated bincraft.
Replace the per-version git clone of github.com/cran plus
bincraft::needs_per_minor_recompile() with a single call to the newly exported
bincraft::classify_r_minor_sensitive(). That classifier now fetches the CRAN
source tarball (no GitHub) and caches its verdict in the metadata database, so
repeated runs and new-OS rebuilds reuse it instead of recomputing.
pat-s merged commit 99f090e33a into main 2026-07-20 17:06:36 +00:00
pat-s deleted branch t3code/github-app-rate-limits 2026-07-20 17:06:36 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
devxy/build-cran-binaries!136
No description provided.