[PATCH] D134015: [Utils] Refactor update_cc_test_checks.py to use shutil
John McIver via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 20 23:28:42 PDT 2022
jmciver updated this revision to Diff 461797.
jmciver added a comment.
Add a local function `find_executable` to `update_cc_test_checks.py`, which takes the necessary functionality from `distutils.spawn.find_executable` and makes use of `shutil.which`.
The local `find_executable` appends `.exe` to the executable name when the environment is `win32`. `shutil.which` correctly handles executables that are specified by absolute or relative path.
I have tested in both Windows 11 and Linux using PATH, --clang (both absolute and relative), and --llvm-bin (both absolute and relative).
https://github.com/python/cpython/blob/main/Lib/distutils/spawn.py#L95
https://github.com/python/cpython/blob/main/Lib/shutil.py#L1441
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D134015/new/
https://reviews.llvm.org/D134015
Files:
llvm/utils/update_cc_test_checks.py
Index: llvm/utils/update_cc_test_checks.py
===================================================================
--- llvm/utils/update_cc_test_checks.py
+++ llvm/utils/update_cc_test_checks.py
@@ -16,11 +16,11 @@
import argparse
import collections
-import distutils.spawn
import json
import os
import re
import shlex
+import shutil
import subprocess
import sys
import tempfile
@@ -140,6 +140,14 @@
args.opt = os.path.join(args.llvm_bin, 'opt')
+def find_executable(executable):
+ _, ext = os.path.splitext(executable)
+ if sys.platform == 'win32' and ext != '.exe':
+ executable = executable + '.exe'
+
+ return shutil.which(executable)
+
+
def config():
parser = argparse.ArgumentParser(
description=__doc__,
@@ -167,7 +175,7 @@
args = common.parse_commandline_args(parser)
infer_dependent_args(args)
- if not distutils.spawn.find_executable(args.clang):
+ if not find_executable(args.clang):
print('Please specify --llvm-bin or --clang', file=sys.stderr)
sys.exit(1)
@@ -183,7 +191,7 @@
common.warn('Could not determine clang builtins directory, some tests '
'might not update correctly.')
- if not distutils.spawn.find_executable(args.opt):
+ if not find_executable(args.opt):
# Many uses of this tool will not need an opt binary, because it's only
# needed for updating a test that runs clang | opt | FileCheck. So we
# defer this error message until we find that opt is actually needed.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D134015.461797.patch
Type: text/x-patch
Size: 1492 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220921/b13441ec/attachment.bin>
More information about the llvm-commits
mailing list