From 3d572a49b8edb162515fcffecb9cc2f5092d7803 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Thu, 26 Mar 2020 04:41:39 -0700 Subject: [PATCH] scons: Add a mechanism to accumulate warnings to reprint at the end. When building gem5, it's possible for warnings printed early in the build to be quickly wisked away in a see of compile lines, never to be seen again (or driven off the end of the scrollback buffer). To avoid those messages getting lost or ignored, this change adds a mechanism to aggregate them into a list so that they can be summarized at the end of the build, successful or not. Change-Id: Ie13320717698fcbcd3a8f8d1c062467e8d6d2914 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/27129 Tested-by: Gem5 Cloud Project GCB service account <345032938727@cloudbuild.gserviceaccount.com> Tested-by: kokoro Reviewed-by: Bobby R. Bruce Maintainer: Gabe Black --- site_scons/gem5_scons/__init__.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/site_scons/gem5_scons/__init__.py b/site_scons/gem5_scons/__init__.py index e7e7a0afc..169e0fe06 100644 --- a/site_scons/gem5_scons/__init__.py +++ b/site_scons/gem5_scons/__init__.py @@ -169,12 +169,25 @@ def print_message(prefix, color, message, **kwargs): # Finally add the prefix and padding on extra lines, and glue it all back # together. message = prefix + ('\n' + padding).join(wrapped_lines) - # Print the message in bold in the requested color. - print(color + termcap.Bold + message + termcap.Normal, **kwargs) + # Add in terminal escape sequences. + message = color + termcap.Bold + message + termcap.Normal + # Actually print the message. + print(message, **kwargs) + return message + +all_warnings = [] +def summarize_warnings(): + if not all_warnings: + return + print(termcap.Yellow + termcap.Bold + + '*** Summary of Warnings ***' + + termcap.Normal) + list(map(print, all_warnings)) def warning(*args, **kwargs): message = ' '.join(args) - print_message('Warning: ', termcap.Yellow, message, **kwargs) + printed = print_message('Warning: ', termcap.Yellow, message, **kwargs) + all_warnings.append(printed) def error(*args, **kwargs): message = ' '.join(args) -- 2.30.2