From 9c83ca59683f9c4d428cde89140c73bcdfa24843 Mon Sep 17 00:00:00 2001 From: monsieurleberre Date: Sat, 25 Jul 2026 09:46:44 +0200 Subject: [PATCH] fix(publish): multi-pass pack cap honors dependency chain depth The Splice/Finance DAR multi-pass packer capped retries at a hardcoded 5 passes. Families pack in alphabetical order against a local feed, so a deep dependency (splice-wallet-payments) can pack after its dependents in the same pass; the loop-while-progress recovers on the next pass, but 0.6.13 deepened the chain enough that 30/33 packed and the 6th pass needed to resolve splice-amulet-name-service / splice-dso-governance / splice-wallet was cut off by the cap (NU1102: Found 0 versions in local-feed). Tie the cap to the family count (families + 1). The progress==0 guard remains the real terminator (monotonic status, no infinite loop), so this can never be too few for any chain depth and never loops longer than necessary. --- .github/scripts/build-pack.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/scripts/build-pack.sh b/.github/scripts/build-pack.sh index 1890c6d..3f86560 100755 --- a/.github/scripts/build-pack.sh +++ b/.github/scripts/build-pack.sh @@ -115,9 +115,10 @@ EOF } pass=1 +max_passes=$(( ${#families[@]} + 1 )) while :; do echo "" - echo "########## PASS $pass ##########" + echo "########## PASS $pass of at most $max_passes ##########" progress=0 for fam in "${families[@]}"; do [ -n "${status[$fam]:-}" ] && continue @@ -128,7 +129,7 @@ while :; do done [ "$progress" -eq 0 ] && break pass=$((pass + 1)) - [ "$pass" -gt 5 ] && { echo "Hit 5-pass cap."; break; } + [ "$pass" -gt "$max_passes" ] && { echo "Hit ${max_passes}-pass cap."; break; } done ok_count=0; skip_count=0; fail_count=0