scons: Add "warning" and "error" methods.
authorGabe Black <gabeblack@google.com>
Tue, 19 Nov 2019 01:40:37 +0000 (17:40 -0800)
committerGabe Black <gabeblack@google.com>
Thu, 21 Nov 2019 23:37:03 +0000 (23:37 +0000)
These methods will make reporting errors less verbose and more
consistent, since they'll handle some formating, setting colors,
prefixing with an appropriate "Warning:" or "Error:" tag, and exiting
in the case of an error.

Change-Id: Iddea5bf342a4fc4b26002d8e98292f9dc57fa8cc
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/22885
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Tested-by: kokoro <noreply+kokoro@google.com>
site_scons/gem5_scons/__init__.py

index 0521862df1596a2d8fab1511e6c614cdaabec06a..86494cf6a5802969cb8a8bac36c50cd26d411b6c 100644 (file)
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+from __future__ import print_function
+
 import os
 
 from gem5_scons.util import get_termcap
+import SCons.Script
 
 termcap = get_termcap()
 
@@ -124,4 +127,18 @@ class Transform(object):
             return ', '.join(f)
         return self.format % (com_pfx, fmt(srcs), fmt(tgts))
 
-__all__ = ['Transform']
+def print_message(prefix, color, message, **kwargs):
+    lines = message.split('\n')
+    message = prefix + ('\n' + ' ' * len(prefix)).join(lines)
+    print(color + termcap.Bold + message + termcap.Normal, **kwargs)
+
+def warning(*args, **kwargs):
+    message = ' '.join(args)
+    print_message('Warning: ', termcap.Yellow, message, **kwargs)
+
+def error(*args, **kwargs):
+    message = ' '.join(args)
+    print_message('Error: ', termcap.Red, message, **kwargs)
+    SCons.Script.Exit(1)
+
+__all__ = ['Transform', 'warning', 'error']