summaryrefslogtreecommitdiff
path: root/.github/workflows/build_util.yml
diff options
context:
space:
mode:
authorhathach <[email protected]>2026-07-30 02:35:02 +0700
committerhathach <[email protected]>2026-07-30 02:35:02 +0700
commit6271842ea874812f1157b42bcd650c59ab59259b (patch)
treefba445d655d77108700c519f3c8f1f7346a9318e /.github/workflows/build_util.yml
parent1b628e3fb581d56639fac9287448203db7d10ff1 (diff)
parenteef5af86aa26fe3d72e41156a586a6ed3ffce9f8 (diff)
Merge remote-tracking branch 'origin/master' into tmp/pr3790-merge
Diffstat (limited to '.github/workflows/build_util.yml')
-rw-r--r--.github/workflows/build_util.yml15
1 files changed, 15 insertions, 0 deletions
diff --git a/.github/workflows/build_util.yml b/.github/workflows/build_util.yml
index 90115862b..02f16488a 100644
--- a/.github/workflows/build_util.yml
+++ b/.github/workflows/build_util.yml
@@ -39,6 +39,21 @@ on:
jobs:
family:
+ # PR-scoped HIL selection can produce an empty build-args list for a toolchain
+ # (e.g. a dwc2-only change with no riscv boards affected); an empty matrix
+ # vector fails the job outright ("Matrix vector 'arg' does not contain any
+ # values"), so skip cleanly instead.
+ #
+ # Why that is safe for callers: GitHub SKIPS the dependents of a skipped
+ # `needs:` job, so this only works because the caller (hil-build) is itself a
+ # *matrix* job - a matrix with one skipped leg and one successful leg
+ # aggregates to success, and its dependents run.
+ #
+ # NOT covered: if every leg is empty the whole caller job skips, and so does
+ # everything that needs it. That is fine only because an all-empty selection
+ # means no board was selected for those rigs, so the rig jobs would have had
+ # nothing to run anyway (see the invariant on hil-build in build.yml).
+ if: inputs.build-args != '[]'
runs-on: ${{ inputs.os }}
strategy:
fail-fast: false