fix(build): scope the errored-package filter to the snapshot's R minor
The candidate list removed every package with an error row for this platform/arch, regardless of the R version that produced it. The row is keyed by (name, tag, platform, arch) only, so one failure under 4.6 also cancelled that package's 4.4 and 4.5 builds, permanently and silently. This is what the residual per-minor gaps were. On amd64/alpine324, 505 of the 508 ABI-risky packages missing from the 4.4 index were also missing from 4.6, a 99% overlap that per-minor build failures would not produce, and none of them were attempted by the run that had just succeeded. Errors specific to another minor are still respected: bincraft's filter_packages_with_errors() runs per pass with that pass's own r_version. This change will: - add the same substring(r_version ...) scoping used by #119 and #189
This commit is contained in:
parent
7e0f3d0ac6
commit
699d299185
1 changed files with 20 additions and 2 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in a new issue