From 03e007069a70fdb2f3ba307b0ea74dbfdd5af1d8 Mon Sep 17 00:00:00 2001 From: pat-s Date: Wed, 9 Sep 2026 15:01:29 +0000 Subject: [PATCH] fix(ci): do not print a missing timing as "NAs" (#210) ## Why A `MISSING_FROM_INDEX` row has no install to time, and `sprintf("%.1fs", NA_real_)` renders it as the literal `NAs`: ``` ROW arch amd64 alpine323 4.5 Rcpp MISSING_FROM_INDEX |NAs ``` Read quickly, `NAs` looks like a unit rather than a missing measurement. ## What changed Rows without a timing print the `built` field alone. Every other row is unchanged. ## Where it showed up Pipeline 12492, the deliberate failure-path check against a slot known to have gaps. That run is otherwise a good result: it caught `Rcpp` missing from the alpine323 4.5 and 4.6 indexes on both contractual URL forms, and it caught the reverse-direction ABI break on the flat slot (objects built under R 4.5.3 failing `dyn.load()` under 4.4), which no previous reprex had surfaced. Reviewed-on: https://git.devxy.io/devxy/build-cran-binaries/pulls/210 --- local/verify-repo-routing.R | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/local/verify-repo-routing.R b/local/verify-repo-routing.R index 4e984f6..c19494d 100644 --- a/local/verify-repo-routing.R +++ b/local/verify-repo-routing.R @@ -96,7 +96,10 @@ emit <- function(package, status, built = "", secs = NA_real_) { r_minor, package, status, - sprintf("%s|%.1fs", built, secs) + # `%.1f` renders NA as the literal "NAs", which reads as a unit rather + # than as a missing measurement. A package that was never in the index + # has no timing at all. + if (is.na(secs)) built else sprintf("%s|%.1fs", built, secs) ) ) }