[PATCH 2/4] rtemstoolkit/execute: Print the trace exe command as a string and not list.

chrisj at rtems.org chrisj at rtems.org
Tue Feb 5 05:10:11 UTC 2019


From: Chris Johns <chrisj at rtems.org>

---
 rtemstoolkit/execute.py | 38 +++++++++++++++++++++-----------------
 1 file changed, 21 insertions(+), 17 deletions(-)

diff --git a/rtemstoolkit/execute.py b/rtemstoolkit/execute.py
index d509664..35f616c 100755
--- a/rtemstoolkit/execute.py
+++ b/rtemstoolkit/execute.py
@@ -48,6 +48,7 @@ import traceback
 
 from rtemstoolkit import error
 from rtemstoolkit import log
+from rtemstoolkit import stacktraces
 
 # Trace exceptions
 trace_threads = False
@@ -174,13 +175,15 @@ class execute(object):
                 #exe.lock.acquire()
                 #exe.outputting = True
                 #exe.lock.release()
-                if out:
-                    out(prefix + line)
-                else:
-                    log.output(prefix + line)
-                    if count > 10:
-                        log.flush()
-
+                try:
+                    if out:
+                        out(prefix + line)
+                    else:
+                        log.output(prefix + line)
+                        if count > 10:
+                            log.flush()
+                except:
+                    stacktraces.trace()
             if trace_threads:
                 print('execute:_readthread: start')
             count = 0
@@ -339,17 +342,19 @@ class execute(object):
              timeout = None):
         """Open a command with arguments. Provide the arguments as a list or
         a string."""
-        if self.verbose:
-            s = command
-            if type(command) is list:
-                def add(x, y): return x + ' ' + str(y)
-                s = functools.reduce(add, command, '')[1:]
-            what = 'spawn'
-            if shell:
-                what = 'shell'
-            log.output(what + ': ' + s)
         if self.output is None:
             raise error.general('capture needs an output handler')
+        cs = command
+        if type(command) is list:
+            def add(x, y): return x + ' ' + str(y)
+            cs = functools.reduce(add, command, '')[1:]
+        what = 'spawn'
+        if shell:
+            what = 'shell'
+        cs = what + ': ' + cs
+        if self.verbose:
+            log.output(what + ': ' + cs)
+        log.trace('exe: %s' % (cs))
         if shell and self.shell_exe:
             command = arg_list(command)
             command[:0] = self.shell_exe
@@ -373,7 +378,6 @@ class execute(object):
                     r, e = os.path.splitext(command[0])
                     if e not in ['.exe', '.com', '.bat']:
                         command[0] = command[0] + '.exe'
-            log.trace('exe: %s' % (command))
             proc = subprocess.Popen(command, shell = shell,
                                     cwd = cwd, env = env,
                                     stdin = stdin, stdout = stdout,
-- 
2.19.1



More information about the devel mailing list