fix: build-one image bincraft v4.4.0 + ship patch registry #104

Merged
pat-s merged 1 commit from fix/build-one-patch-registry into main 2026-06-30 12:15:40 +00:00
Owner

Summary

Fixes the targeted rebuild path (just rebuilddocker/build-one.Dockerfile) so it actually applies patches.

Two problems, both of which would make build-one.R's patches = "local/patches" a silent no-op or a hard error:

  1. Stale bincraft pin. The Dockerfile pinned bincraft v4.2.1, which predates the patches argument — so build_binary_package(patches = ...) would fail with unused argument. Bumped to v4.4.0 to match the .crow workflows.
  2. Registry not shipped into the image. Only build-one.R was copied in; local/patches/registry.json was absent, so patches = "local/patches" resolved to a nonexistent /work/local/patches and silently applied nothing. Added COPY patches /work/local/patches (build context is local/, CWD is /work).

Why

This is the path used to verify the patching end-to-end, e.g.:

just rebuild alpine 3.23 amd64 rts2 1.0.3

rts2 depends on RcppParallel; with this fix the container installs bincraft v4.4.0, ships the registry, and the patched RcppParallel binary (RCPP_PARALLEL_USE_TBB=0) is served to pak during dependency install. Expect Applying patch to RcppParallel … in the log, RcppParallel installed as a binary (no recompile), then rts2 building and uploading.

## Summary Fixes the **targeted rebuild** path (`just rebuild` → `docker/build-one.Dockerfile`) so it actually applies patches. Two problems, both of which would make `build-one.R`'s `patches = "local/patches"` a silent no-op or a hard error: 1. **Stale bincraft pin.** The Dockerfile pinned bincraft `v4.2.1`, which predates the `patches` argument — so `build_binary_package(patches = ...)` would fail with `unused argument`. Bumped to **v4.4.0** to match the `.crow` workflows. 2. **Registry not shipped into the image.** Only `build-one.R` was copied in; `local/patches/registry.json` was absent, so `patches = "local/patches"` resolved to a nonexistent `/work/local/patches` and silently applied nothing. Added `COPY patches /work/local/patches` (build context is `local/`, CWD is `/work`). ## Why This is the path used to verify the patching end-to-end, e.g.: ```bash just rebuild alpine 3.23 amd64 rts2 1.0.3 ``` rts2 depends on RcppParallel; with this fix the container installs bincraft v4.4.0, ships the registry, and the patched RcppParallel binary (`RCPP_PARALLEL_USE_TBB=0`) is served to pak during dependency install. Expect `Applying patch to RcppParallel …` in the log, RcppParallel installed as a binary (no recompile), then rts2 building and uploading.
The targeted rebuild Dockerfile still pinned bincraft v4.2.1 (predates the
patches argument), so build-one.R's patches= call would error. Bump to v4.4.0
to match the .crow workflows.
Also COPY the patch registry into the image so patches='local/patches'
resolves at /work/local/patches instead of silently no-opping.
pat-s merged commit b744ae1bb1 into main 2026-06-30 12:15:40 +00:00
pat-s deleted branch fix/build-one-patch-registry 2026-06-30 12:15:40 +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!104
No description provided.