summaryrefslogtreecommitdiffstats
path: root/TOOLS
diff options
context:
space:
mode:
authorder richter <der.richter@gmx.de>2023-11-07 21:47:30 +0100
committerder richter <der.richter@gmx.de>2023-11-10 14:28:39 +0100
commit1c98ab623955957c8fa9aea4c39b1f48379e3c92 (patch)
treeb4aed338a3025a64eb1dd426f4f8f1cec043ce5c /TOOLS
parentb4e14b9420f1d419b3a32f287a8ff9d0911ebc85 (diff)
downloadmpv-1c98ab623955957c8fa9aea4c39b1f48379e3c92.tar.bz2
mpv-1c98ab623955957c8fa9aea4c39b1f48379e3c92.tar.xz
TOOLS/macos-sdk-version: remove legacy sdk version retrieval
older macOS dev tools were inconsistent with the way how SDK versions were returned, some truncated the minor versions. in those cases the SDK version had to be retrieved through the SDK build version. recently the scheme for the SDK build version changed that our heuristic for converting it to an SDK version produced wrong version strings. the stride of the minor version changed from 1 to 2, so SDK versions ended up higher than they actually were. furthermore macOS 11 was hardcoded. since Xcode 12 Apple fixed the SDK version retrieval and it is no longer truncated when using Xcode as dev tools. Xcode 12 is also the latest supported version on macOS 10.15, which is also our oldest supported version. we can remove the old SDK build version conversation and use the Xcode only tool to retrieve the SDK version in the case Xcode is used as dev tools. furthermore this als keeps support for Xcode 11 where the problem wasn't fixed yet, but is still a supported version on macOS 10.15. Fixes #9907
Diffstat (limited to 'TOOLS')
-rwxr-xr-xTOOLS/macos-sdk-version.py35
1 files changed, 10 insertions, 25 deletions
diff --git a/TOOLS/macos-sdk-version.py b/TOOLS/macos-sdk-version.py
index fc800fb67e..12e1071d75 100755
--- a/TOOLS/macos-sdk-version.py
+++ b/TOOLS/macos-sdk-version.py
@@ -6,6 +6,7 @@
import re
import os
import string
+import subprocess
import sys
from shutil import which
from subprocess import check_output
@@ -13,11 +14,11 @@ from subprocess import check_output
def find_macos_sdk():
sdk = os.environ.get('MACOS_SDK', '')
sdk_version = os.environ.get('MACOS_SDK_VERSION', '0.0')
- build_version = '0.0'
xcrun = which('xcrun')
+ xcodebuild = which('xcodebuild')
if not xcrun:
- return sdk,sdk_version,build_version
+ return sdk,sdk_version
if not sdk:
sdk = check_output([xcrun, '--sdk', 'macosx', '--show-sdk-path'],
@@ -25,36 +26,20 @@ def find_macos_sdk():
# find macOS SDK paths and version
if sdk_version == '0.0':
- # show-sdk-build-version: is not available on older command line tools, but returns a build version (eg 17A360)
- # show-sdk-version: is always available, but on older dev tools it's only the major version
- sdk_build_version = check_output([xcrun, '--sdk', 'macosx',
- '--show-sdk-build-version'], encoding="UTF-8")
-
sdk_version = check_output([xcrun, '--sdk', 'macosx', '--show-sdk-version'],
encoding="UTF-8")
- if sdk:
- build_version = '10.10.0'
-
- # convert build version to a version string
- # first 2 two digits are the major version, starting with 15 which is 10.11 (offset of 4)
- # 1 char is the minor version, A => 0, B => 1 and ongoing
- # last digits are bugfix version, which are not relevant for us
- # eg 16E185 => 10.12.4, 17A360 => 10.13, 18B71 => 10.14.1
- if sdk_build_version and isinstance(sdk_build_version, str):
- verRe = re.compile("(\d+)(\D+)(\d+)")
- version_parts = verRe.search(sdk_build_version)
- major = int(version_parts.group(1)) - 4
- minor = string.ascii_lowercase.index(version_parts.group(2).lower())
- build_version = '10.' + str(major) + '.' + str(minor)
- # from 20 onwards macOS 11.0 starts
- if int(version_parts.group(1)) >= 20:
- build_version = '11.' + str(minor)
+ # use xcode tools when installed, still necessary for xcode versions <12.0
+ try:
+ sdk_version = check_output([xcodebuild, '-sdk', 'macosx', '-version', 'ProductVersion'],
+ encoding="UTF-8", stderr=subprocess.DEVNULL)
+ except:
+ pass
if not isinstance(sdk_version, str):
sdk_version = '10.10.0'
- return sdk,sdk_version,build_version
+ return sdk.strip(),sdk_version.strip()
if __name__ == "__main__":
sdk_info = find_macos_sdk()