diff --git a/lldb/test/Shell/helper/build.py b/lldb/test/Shell/helper/build.py --- a/lldb/test/Shell/helper/build.py +++ b/lldb/test/Shell/helper/build.py @@ -4,6 +4,7 @@ import argparse import os +import shutil import signal import subprocess import sys @@ -170,16 +171,14 @@ print(' {0} = {1}'.format(e, formatted_value)) def find_executable(binary_name, search_paths): - if sys.platform == 'win32': - binary_name = binary_name + '.exe' - - search_paths = os.pathsep.join(search_paths) - paths = search_paths + os.pathsep + os.environ.get('PATH', '') - for path in paths.split(os.pathsep): - p = os.path.join(path, binary_name) - if os.path.exists(p) and not os.path.isdir(p): - return os.path.normpath(p) - return None + # shutil.which will ignore PATH if given a path argument, we want to include it. + search_paths.append(os.environ.get('PATH', '')) + search_path = os.pathsep.join(search_paths) + binary_path = shutil.which(binary_name, path=search_path) + if binary_path is not None: + # So for example, we get '/bin/gcc' instead of '/usr/../bin/gcc'. + binary_path = os.path.normpath(binary_path) + return binary_path def find_toolchain(compiler, tools_dir): if compiler == 'msvc':