scons: only wrap message with positive value
authorEarl Ou <shunhsingou@google.com>
Mon, 5 Oct 2020 07:51:56 +0000 (15:51 +0800)
committerEarl Ou <shunhsingou@google.com>
Tue, 6 Oct 2020 00:25:13 +0000 (00:25 +0000)
In case we have small TTY, scons failed with wrong testwrap value. Fix
the issue.

Change-Id: I8ec1d55c6856c1e592a57a68067091b796ac84ae
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/35596
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>
site_scons/gem5_scons/__init__.py

index 33231127cf9ce132242c8edfc5ee9291fb67a5a6..4208cf1a5bb0595bcac5abea4ef05757680b5555 100644 (file)
@@ -160,20 +160,23 @@ if text_width is None:
     text_width = 80
 
 def print_message(prefix, color, message, **kwargs):
-    # Precompute some useful values.
     prefix_len = len(prefix)
-    wrap_width = text_width - prefix_len
-    padding = ' ' * prefix_len
-
-    # First split on newlines.
-    lines = message.split('\n')
-    # Then wrap each line to the required width.
-    wrapped_lines = []
-    for line in lines:
-        wrapped_lines.extend(textwrap.wrap(line, wrap_width))
-    # Finally add the prefix and padding on extra lines, and glue it all back
-    # together.
-    message = prefix + ('\n' + padding).join(wrapped_lines)
+    if text_width > prefix_len:
+        wrap_width = text_width - prefix_len
+        padding = ' ' * prefix_len
+
+        # First split on newlines.
+        lines = message.split('\n')
+        # Then wrap each line to the required width.
+        wrapped_lines = []
+        for line in lines:
+            wrapped_lines.extend(textwrap.wrap(line, wrap_width))
+        # Finally add the prefix and padding on extra lines, and glue it all
+        # back together.
+        message = prefix + ('\n' + padding).join(wrapped_lines)
+    else:
+        # We have very small terminal, indent formatting doesn't help.
+        message = prefix + message
     # Add in terminal escape sequences.
     message = color + termcap.Bold + message + termcap.Normal
     # Actually print the message.