apolyakov updated this revision to Diff 166936. apolyakov added a comment. Changed python version required to use 'pass_fds' argument to 3.2. I tested this patch with python 2.7 and 3.5.
https://reviews.llvm.org/D52498 Files: lit/tools/lldb-mi/target/inputs/target-select-so-path.py Index: lit/tools/lldb-mi/target/inputs/target-select-so-path.py =================================================================== --- lit/tools/lldb-mi/target/inputs/target-select-so-path.py +++ lit/tools/lldb-mi/target/inputs/target-select-so-path.py @@ -1,5 +1,3 @@ -#!/usr/bin/env python2 - import os import sys import subprocess @@ -9,22 +7,26 @@ hostname = 'localhost' (r, w) = os.pipe() +kwargs = {} +if sys.version_info >= (3,2): + kwargs['pass_fds'] = [w] + args = sys.argv # Get debugserver, lldb-mi and FileCheck executables' paths with arguments. debugserver = ' '.join([args[1], '--pipe', str(w), hostname + ':0']) lldbmi = args[2] test_file = args[3] filecheck = 'FileCheck ' + test_file # Run debugserver, lldb-mi and FileCheck. -debugserver_proc = subprocess.Popen(debugserver.split()) +debugserver_proc = subprocess.Popen(debugserver.split(), **kwargs) lldbmi_proc = subprocess.Popen(lldbmi, stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True) filecheck_proc = subprocess.Popen(filecheck, stdin=subprocess.PIPE, shell=True) timeout_sec = 30 -timer = Timer(timeout_sec, lldbmi_proc.kill) +timer = Timer(timeout_sec, exit, [filecheck_proc.returncode]) try: timer.start() @@ -37,9 +39,10 @@ with open(test_file, 'r') as f: # Replace '$PORT' with a free port number and pass # test's content to lldb-mi. - lldbmi_proc.stdin.write(f.read().replace('$PORT', port)) + lldbmi_proc.stdin.write(f.read().replace('$PORT', port).encode('utf-8')) out, err = lldbmi_proc.communicate() filecheck_proc.stdin.write(out) + filecheck_proc.communicate() finally: timer.cancel()
Index: lit/tools/lldb-mi/target/inputs/target-select-so-path.py =================================================================== --- lit/tools/lldb-mi/target/inputs/target-select-so-path.py +++ lit/tools/lldb-mi/target/inputs/target-select-so-path.py @@ -1,5 +1,3 @@ -#!/usr/bin/env python2 - import os import sys import subprocess @@ -9,22 +7,26 @@ hostname = 'localhost' (r, w) = os.pipe() +kwargs = {} +if sys.version_info >= (3,2): + kwargs['pass_fds'] = [w] + args = sys.argv # Get debugserver, lldb-mi and FileCheck executables' paths with arguments. debugserver = ' '.join([args[1], '--pipe', str(w), hostname + ':0']) lldbmi = args[2] test_file = args[3] filecheck = 'FileCheck ' + test_file # Run debugserver, lldb-mi and FileCheck. -debugserver_proc = subprocess.Popen(debugserver.split()) +debugserver_proc = subprocess.Popen(debugserver.split(), **kwargs) lldbmi_proc = subprocess.Popen(lldbmi, stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True) filecheck_proc = subprocess.Popen(filecheck, stdin=subprocess.PIPE, shell=True) timeout_sec = 30 -timer = Timer(timeout_sec, lldbmi_proc.kill) +timer = Timer(timeout_sec, exit, [filecheck_proc.returncode]) try: timer.start() @@ -37,9 +39,10 @@ with open(test_file, 'r') as f: # Replace '$PORT' with a free port number and pass # test's content to lldb-mi. - lldbmi_proc.stdin.write(f.read().replace('$PORT', port)) + lldbmi_proc.stdin.write(f.read().replace('$PORT', port).encode('utf-8')) out, err = lldbmi_proc.communicate() filecheck_proc.stdin.write(out) + filecheck_proc.communicate() finally: timer.cancel()
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits