fix(build): scope the errored-package filter to the snapshot's R minor #194

Merged
pat-s merged 1 commit from fix/scope-errored-packages-by-minor into main 2026-09-03 13:37:05 +00:00

View file

@ -355,12 +355,30 @@ query_error <- function(pkg, ver) {
}
# Fetch all relevant columns from the database
# Scoped to the snapshot's own R minor, like `check_package_error()` in
# bincraft (#119) and the per-minor error query (#189). Unscoped, a single
# failure under any one minor removed the package from the candidate list for
# every minor, permanently: the row is keyed by (name, tag, platform, arch)
# only, so an error under 4.6 also cancelled its 4.4 and 4.5 builds.
#
# That is what the residual per-minor gaps were. On amd64/alpine324, 505 of the
# 508 ABI-risky packages missing from 4.4 were also missing from 4.6 -- a 99%
# overlap, which per-minor build failures would not produce. None of them were
# even attempted by the run that had just succeeded.
#
# Errors specific to another minor are still respected downstream:
# `filter_packages_with_errors()` runs per pass with that pass's r_version.
errored_pkgs <- DBI::dbGetQuery(
con,
sprintf(
"SELECT name, tag FROM single_builds WHERE error_occurred = TRUE and platform='%s' and arch='%s'",
paste0(
"SELECT name, tag FROM single_builds WHERE error_occurred = TRUE ",
"and platform='%s' and arch='%s' ",
"and substring(r_version from '^[0-9]+[.][0-9]+') = '%s'"
),
platform,
arch
arch,
snapshot_r_minor
)
)
errored_pkgs <- as.data.table(errored_pkgs)