[libc++] Fix codesigning in run.py
Without this patch, we'd always try to codesign the first argument in the command line, which in some cases is not something we can codesign (e.g. `bash` for some .sh.cpp tests). Note that this "hack" is the same thing we do in `ssh.py` - we might need to admit that it's not a hack after all in the future, but I'm not ready for that yet. Differential Revision: https://reviews.llvm.org/D99726
This commit is contained in:
parent
6b05d753e0
commit
232d3a3e47
|
@ -29,13 +29,18 @@ def main():
|
|||
args = parser.parse_args()
|
||||
commandLine = args.command
|
||||
|
||||
# Do any necessary codesigning.
|
||||
# HACK:
|
||||
# If an argument is a file that ends in `.tmp.exe`, assume it is the name
|
||||
# of an executable generated by a test file. We call these test-executables
|
||||
# below. This allows us to do custom processing like codesigning test-executables.
|
||||
# It's also possible for there to be no such executable, for example in the case
|
||||
# of a .sh.cpp test.
|
||||
isTestExe = lambda exe: exe.endswith('.tmp.exe') and os.path.exists(exe)
|
||||
|
||||
# Do any necessary codesigning of test-executables found in the command line.
|
||||
if args.codesign_identity:
|
||||
exe = commandLine[0]
|
||||
rc = subprocess.call(['xcrun', 'codesign', '-f', '-s', args.codesign_identity, exe], env={})
|
||||
if rc != 0:
|
||||
sys.stderr.write('Failed to codesign: ' + exe)
|
||||
return rc
|
||||
for exe in filter(isTestExe, commandLine):
|
||||
subprocess.check_call(['xcrun', 'codesign', '-f', '-s', args.codesign_identity, exe], env={})
|
||||
|
||||
# Extract environment variables into a dictionary
|
||||
env = {k : v for (k, v) in map(lambda s: s.split('=', 1), args.env)}
|
||||
|
|
Loading…
Reference in New Issue