summaryrefslogtreecommitdiffstats
path: root/libcxx/utils/run.py
blob: fcfee96c69eb23d90444fc31d49b473442975638 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#===----------------------------------------------------------------------===##
#
# 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())
OpenPOWER on IntegriCloud