@@ -1,9 +1,11 @@
#! /usr/bin/env python3
+import itertools
import os
import pathlib
import signal
import sys
+import threading
import logging
logger = logging.getLogger("RunFVP")
@@ -36,7 +38,8 @@ def parse_args(arguments):
fvp_args = []
args = parser.parse_args(args=arguments)
- logging.basicConfig(level=args.verbose and logging.DEBUG or logging.WARNING)
+ logging.basicConfig(level=args.verbose and logging.DEBUG or logging.WARNING,
+ format='\033[G%(levelname)s: %(message)s')
# If we're hooking up the console, don't start any terminals
if args.console:
@@ -56,8 +59,17 @@ def start_fvp(args, config, extra_args):
if not expected_terminal:
logger.error("--console used but FVP_CONSOLE not set in machine configuration")
return 1
- parser = runner.ConsolePortParser(fvp.stdout)
+ port_stdout, log_stdout = itertools.tee(fvp.stdout, 2)
+ parser = runner.ConsolePortParser(port_stdout)
port = parser.parse_port(expected_terminal)
+
+ def debug_log():
+ for line in log_stdout:
+ line = line.strip().decode(errors='ignore')
+ logger.debug(f'FVP output: {line}')
+ log_thread = threading.Thread(None, debug_log)
+ log_thread.start()
+
telnet = fvp.create_telnet(port)
telnet.wait()
logger.debug(f"Telnet quit, cancelling tasks")