From 044a4773785967094863729138a2b54cedf1fc2a Mon Sep 17 00:00:00 2001 From: Juliusz Sosinowicz Date: Thu, 25 Jun 2026 13:05:35 +0000 Subject: [PATCH] parallel-make-check.py: only require bwrap for an actual netns run netns needs bwrap; without it commands silently share the host network namespace and parallel network tests collide on ports. Skip the check for --list (it inspects configs, runs nothing), hard-fail on CI so a missing- bubblewrap misconfig can't silently degrade, and locally just warn and fall back to the shared namespace. --- .github/scripts/parallel-make-check.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/.github/scripts/parallel-make-check.py b/.github/scripts/parallel-make-check.py index 039b01648d..f22e385f7a 100755 --- a/.github/scripts/parallel-make-check.py +++ b/.github/scripts/parallel-make-check.py @@ -622,10 +622,18 @@ def main() -> int: if dups: p.error(f"config names collide after shard fan-out: {' '.join(dups)}") - if any(cfg.netns for cfg in selected) and not BWRAP: - p.error("netns requested but bwrap not found; install bubblewrap " - "(without it the commands share the host network namespace " - "and collide on ports)") + # netns needs bwrap; without it commands silently share the host network + # namespace and parallel network tests collide on ports. On CI that silent + # degradation is a misconfiguration, so fail loudly; locally just warn and + # let the run fall back to the shared namespace. --list needs neither bwrap + # nor a netns, so never block it. + if not opts.list and any(cfg.netns for cfg in selected) and not BWRAP: + msg = ("netns requested but bwrap not found; install bubblewrap " + "(without it commands share the host network namespace and " + "collide on ports)") + if ON_GITHUB: + p.error(msg) + warn(f"{msg}; falling back to the shared namespace") if opts.list: for cfg in selected: