From 30e39e85d081bd750ad5ca9b238d87d2f48a89d8 Mon Sep 17 00:00:00 2001 From: Christopher Pereira Date: Sat, 15 Feb 2025 02:58:16 -0300 Subject: [PATCH] Show docker build errors (#6695) --- openhands/core/logger.py | 3 +++ openhands/runtime/builder/docker.py | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/openhands/core/logger.py b/openhands/core/logger.py index 701a5bb0c39a..b384fedac1d8 100644 --- a/openhands/core/logger.py +++ b/openhands/core/logger.py @@ -156,11 +156,13 @@ class RollingLogger: max_lines: int char_limit: int log_lines: list[str] + all_lines: str def __init__(self, max_lines=10, char_limit=80): self.max_lines = max_lines self.char_limit = char_limit self.log_lines = [''] * self.max_lines + self.all_lines = '' def is_enabled(self): return DEBUG and sys.stdout.isatty() @@ -175,6 +177,7 @@ def add_line(self, line): self.log_lines.pop(0) self.log_lines.append(line[: self.char_limit]) self.print_lines() + self.all_lines += line + '\n' def write_immediately(self, line): self._write(line) diff --git a/openhands/runtime/builder/docker.py b/openhands/runtime/builder/docker.py index de99bd440f3e..dbbea66daed0 100644 --- a/openhands/runtime/builder/docker.py +++ b/openhands/runtime/builder/docker.py @@ -168,8 +168,10 @@ def build( ) except subprocess.CalledProcessError as e: - logger.error(f'Image build failed:\n{e}') + logger.error(f'Image build failed:\n{e}') # TODO: {e} is empty logger.error(f'Command output:\n{e.output}') + if self.rolling_logger.is_enabled(): + logger.error("Docker build output:\n" + self.rolling_logger.all_lines) # Show the error raise except subprocess.TimeoutExpired: