run.py 1.05 KB
#===----------------------------------------------------------------------===##
#
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#
#===----------------------------------------------------------------------===##

"""run.py is a utility for running a program.

It can perform code signing, forward arguments to the program, and return the
program's error code.
"""

import subprocess
import sys


def main():
    codesign_ident = sys.argv[1]

    # Ignore 'run.py' and the codesigning identity.
    argv = sys.argv[2:]

    exec_path = argv[0]

    # Do any necessary codesigning.
    if codesign_ident:
        sign_cmd = ['xcrun', 'codesign', '-f', '-s', codesign_ident, exec_path]
        cs_rc = subprocess.call(sign_cmd, env={})
        if cs_rc != 0:
            sys.stderr.write('Failed to codesign: ' + exec_path)
            return cs_rc

    return subprocess.call(argv)

if __name__ == '__main__':
    exit(main())