blob: 313f4e4b29656391836da6afe2b03d59bffb00bd [file] [log] [blame]
#!/usr/bin/env fuchsia-vendored-python
# Copyright 2017 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Prints the lowest locally available SDK version greater than or equal to a
given minimum sdk version to standard output. If --developer-dir is passed, then
the script will use the Xcode toolchain located at DEVELOPER_DIR.
Usage:
python find_sdk.py [--developer-dir DEVELOPER_DIR] 10.12
"""
import argparse
import os
import re
import subprocess
import sys
def parse_version(version_str):
"""'10.6' => [10, 6]"""
return list(map(int, re.findall(r"(\d+)", version_str)))
def main():
parser = argparse.ArgumentParser()
parser.add_argument(
"--print-sdk-path",
action="store_true",
dest="print_sdk_path",
default=False,
help="Print the path to the SDK",
)
parser.add_argument("--developer-dir", help="Path to Xcode")
parser.add_argument("min_sdk_version", help="Minimum SDK version")
args = parser.parse_args()
if args.developer_dir:
os.environ["DEVELOPER_DIR"] = args.developer_dir
# 'xcrun' always returns the latest available SDK
version = subprocess.check_output(
["xcrun", "--sdk", "macosx", "--show-sdk-version"]
).strip()
version = version.decode()
if parse_version(version) < parse_version(args.min_sdk_version):
raise Exception(
"SDK version %s is before minimum version %s"
% (version, args.min_sdk_version)
)
if args.print_sdk_path:
print(
subprocess.check_output(
["xcrun", "--sdk", "macosx", "--show-sdk-path"]
)
.decode()
.strip()
)
print(version)
return 0
if __name__ == "__main__":
if sys.platform != "darwin":
raise Exception("This script only runs on Mac")
sys.exit(main())