From f871fd33e11f9c989a865db20d2e478b0b4418b5 Mon Sep 17 00:00:00 2001 From: Jason Lowe-Power Date: Tue, 12 Mar 2019 09:01:09 -0700 Subject: [PATCH] ext,test: Provide default terminal size When creating the separator for printing things to the terminal (=.*) we use an ioctl that isn't supported in some sandboxed environments. When running on the Google jenkins server (kokoro) it errors with an IOError. Change-Id: I148dd87cffe6e93d6723a386aecf9a9ea6c5b455 Signed-off-by: Jason Lowe-Power Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17449 Reviewed-by: Andreas Sandberg Maintainer: Andreas Sandberg --- ext/testlib/terminal.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/ext/testlib/terminal.py b/ext/testlib/terminal.py index 3afbb42a2..bdb20edea 100644 --- a/ext/testlib/terminal.py +++ b/ext/testlib/terminal.py @@ -106,10 +106,16 @@ def get_termcap(use_colors = None): def terminal_size(): '''Return the (width, heigth) of the terminal screen.''' - h, w, hp, wp = struct.unpack('HHHH', - fcntl.ioctl(0, termios.TIOCGWINSZ, - struct.pack('HHHH', 0, 0, 0, 0))) - return w, h + try: + h, w, hp, wp = struct.unpack('HHHH', + fcntl.ioctl(0, termios.TIOCGWINSZ, + struct.pack('HHHH', 0, 0, 0, 0))) + return w, h + except IOError: + # It's possible that in sandboxed environments the above ioctl is not + # allowed (e.g., some jenkins setups) + return 80, 24 + def separator(char=default_separator, color=None): ''' -- 2.30.2