fix(local): stop proposing per-dependent patches for dependency-cascade failures
The `--open-issue` run proposed 800+ entries, all `rcppparallel-bundled-tbb` on ubuntu-2604, each pre-filling `RcppParallel/disable-tbb.patch` for an unrelated package (ACEsimFit, AovBay, ...). Those packages fail only because their RcppParallel *dependency* does not build there, so bincraft records RcppParallel's TBB error text against each dependent and they all match the signature. Applying a RcppParallel source patch to a dependent's source is not just noise -- it is broken (the diff targets RcppParallel's Makevars.in). Add an optional `applies_to` field pinning a package-specific fix to the package it targets. A signature whose fix is a curated per-package source patch (rcppparallel-bundled-tbb -> RcppParallel) is only ever proposed for that package; other matching packages are downstream failures reported as "blocked on <dependency>" and never proposed a bogus entry. Fix the dependency once and the whole cascade clears. - gate proposal generation in build_triage_report on applies_to, add blocked_on - surface blocked groups in the report and proposer instead of a misleading "already registered" note - cover both the dependent-blocked and RcppParallel-itself-proposed cases
This commit is contained in:
parent
f1dd661213
commit
a8c8b23f70
1 changed files with 87 additions and 1 deletions
|
|
@ -135,6 +135,21 @@ for (r in report) {
|
|||
}
|
||||
}
|
||||
|
||||
# Groups blocked on a dependency (e.g. RcppParallel dependents) are reported,
|
||||
# not proposed: fixing the named dependency clears them all at once.
|
||||
blocked <- Filter(function(r) !is.null(r$blocked_on), report)
|
||||
if (length(blocked) > 0L) {
|
||||
cat("\nBlocked on a dependency (fix the dependency, not each dependent):\n")
|
||||
for (r in blocked) {
|
||||
cat(sprintf(
|
||||
" %s: %d package(s) fail because %s does not build\n",
|
||||
toString(r$blocked_on),
|
||||
length(r$packages),
|
||||
toString(r$blocked_on)
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
# A package that maps to more than one auto-proposable signature is ambiguous
|
||||
# (conflicting fix tiers) and would collide on the same registry key; route it
|
||||
# to human triage instead of emitting both.
|
||||
|
|
|
|||
Loading…
Reference in a new issue