From ac5a842081d9571989d169e805a429936443571e Mon Sep 17 00:00:00 2001 From: pat-s Date: Tue, 30 Jun 2026 14:14:54 +0200 Subject: [PATCH 1/2] fix(patches): build-one image bincraft v4.4.0 + ship patch registry 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. --- docker/build-one.Dockerfile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docker/build-one.Dockerfile b/docker/build-one.Dockerfile index 2cd4d51..2c1af97 100644 --- a/docker/build-one.Dockerfile +++ b/docker/build-one.Dockerfile @@ -16,6 +16,9 @@ ARG CACHEBUST WORKDIR /work COPY build-one.R /work/build-one.R +# Ship the patch registry so build-one.R's `patches = "local/patches"` resolves +# (build context is `local/`, CWD is /work). +COPY patches /work/local/patches RUN --mount=type=secret,id=b2_access,required=true \ --mount=type=secret,id=b2_secret,required=true \ @@ -37,7 +40,7 @@ RUN --mount=type=secret,id=b2_access,required=true \ echo "No working virtual display; building without xvfb" >&2; \ fi; \ run_build() { if [ "$USE_XVFB" = 1 ]; then $XVFB -a $XVFB_ARGS -- "$@"; else "$@"; fi; }; \ - ensure_bincraft() { "$1" -q -e 'if (!requireNamespace("bincraft", quietly = TRUE) || packageVersion("bincraft") != "4.2.1") pak::pak("git::https://codefloe.com/rpkgs/bincraft.git@v4.2.1")'; }; \ + ensure_bincraft() { "$1" -q -e 'if (!requireNamespace("bincraft", quietly = TRUE) || packageVersion("bincraft") != "4.4.0") pak::pak("git::https://codefloe.com/rpkgs/bincraft.git@v4.4.0")'; }; \ PRIMARY_MINOR=$(echo "$R_VERSION" | cut -d. -f1-2); \ seen=" $PRIMARY_MINOR "; \ prc=0; failed=""; \ From 4c6fbd1e4c327494d75deb1e4c2bbff29239d733 Mon Sep 17 00:00:00 2001 From: pat-s Date: Tue, 30 Jun 2026 14:23:02 +0200 Subject: [PATCH 2/2] fix(otel): silence otelsdk warnings in build-one The build-env images set an OTEL traces/logs/metrics exporter, but otelsdk isn't installed, so pak's otel instrumentation logs 'no package called otelsdk'. OTEL_SDK_DISABLED is ignored by the R otel package; it gates on OTEL_R__EXPORTER. Set those to 'none' so the R otel providers are a clean no-op (without disabling OTel for any non-R tooling). --- docker/build-one.Dockerfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docker/build-one.Dockerfile b/docker/build-one.Dockerfile index 2c1af97..a99db07 100644 --- a/docker/build-one.Dockerfile +++ b/docker/build-one.Dockerfile @@ -30,6 +30,9 @@ RUN --mount=type=secret,id=b2_access,required=true \ export GITHUB_PAT="$(cat /run/secrets/github_pat 2>/dev/null || true)" && \ export GIT_TERMINAL_PROMPT=0 && \ export OTEL_SDK_DISABLED=true && \ + export OTEL_R_TRACES_EXPORTER=none && \ + export OTEL_R_LOGS_EXPORTER=none && \ + export OTEL_R_METRICS_EXPORTER=none && \ XVFB=$(command -v xwfb-run 2>/dev/null || command -v xvfb-run || true); \ XVFB_ARGS=""; \ if command -v xwfb-run >/dev/null 2>&1; then dnf install -y -q weston 2>/dev/null; XVFB_ARGS="-c weston"; fi; \