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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
#!/usr/bin/env python3
##===----------------------------------------------------------------------===##
##
## This source file is part of the Swift open source project
##
## Copyright (c) 2014-2020 Apple Inc. and the Swift project authors
## Licensed under Apache License v2.0 with Runtime Library Exception
##
## See http://swift.org/LICENSE.txt for license information
## See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
##
##===----------------------------------------------------------------------===##
import subprocess
import sys
import os
import errno
def note(message):
print("--- %s: note: %s" % (os.path.basename(sys.argv[0]), message))
sys.stdout.flush()
def error(message):
print("--- %s: error: %s" % (os.path.basename(sys.argv[0]), message))
sys.stdout.flush()
raise SystemExit(1)
def symlink_force(source, destination):
try:
os.symlink(source, destination)
except OSError as e:
if e.errno == errno.EEXIST:
os.remove(destination)
os.symlink(source, destination)
def mkdir_p(path):
"""Create the given directory, if it does not exist."""
try:
os.makedirs(path)
except OSError as e:
# Ignore EEXIST, which may occur during a race condition.
if e.errno != errno.EEXIST:
raise
def call(cmd, cwd=None, verbose=False):
"""Calls a subprocess."""
if verbose:
print(' '.join(cmd))
try:
subprocess.check_call(cmd, cwd=cwd)
except Exception as e:
if not verbose:
print(' '.join(cmd))
error(str(e))
def call_output(cmd, cwd=None, stderr=False, verbose=False):
"""Calls a subprocess for its return data."""
if verbose:
print(' '.join(cmd))
try:
return subprocess.check_output(cmd, cwd=cwd, stderr=stderr, universal_newlines=True).strip()
except Exception as e:
if not verbose:
print(' '.join(cmd))
error(str(e))
|