From 180b7b5007936443b3893e48fa3e89a2e6c64978 Mon Sep 17 00:00:00 2001 From: sora <2075279110@qq.com> Date: Thu, 17 Sep 2026 06:26:04 +0000 Subject: [PATCH] docker pull --progress=plain: docker 25+ hides layer progress when piped Even a real 9GB/74s pull printed only 'Pulling from' + 'Status' -- the CLI suppresses per-layer Downloading lines for non-TTY stdout since docker 25, so the CR-splitting/summary pipeline had nothing to parse. --progress=plain forces them out. Co-Authored-By: Claude --- evalharness/sandbox/prefetch.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/evalharness/sandbox/prefetch.py b/evalharness/sandbox/prefetch.py index f513bb6..efaa97b 100644 --- a/evalharness/sandbox/prefetch.py +++ b/evalharness/sandbox/prefetch.py @@ -126,7 +126,10 @@ def _pull_one(image: str, verbose: bool = True) -> None: # stream progress: a multi-GB pull with captured output is minutes # of silence that reads as a hang. Non-TTY docker pull emits clean # per-layer lines; forward the informative ones (throttled). - proc = subprocess.Popen(['docker', 'pull', ref], + # docker 25+ hides per-layer progress when stdout is not a TTY; + # --progress=plain forces the id: Downloading x/y lines our ⏳ + # summary parses (without it even a real 9GB/74s pull is silent) + proc = subprocess.Popen(['docker', 'pull', '--progress=plain', ref], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, bufsize=0) # idle watchdog: a dead mirror emits NOTHING (0 bytes/s for hours);