Bug 1522931 - always check the OSX SDK version; r=firefox-build-system-reviewers,chmanchester

Bug 1500504 added a version check for the SDK, but it only does the
check if --with-macos-sdk is used. We should also check the version when
using the default SDK.

Note that this means we now set MACOS_SDK_DIR to be the default SDK even
if it wasn't set explicitly from --with-macos-sdk

Differential Revision: https://phabricator.services.mozilla.com/D17727

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Mike Shal 2019-04-09 20:38:51 +00:00
Родитель 28fe41e07b
Коммит 3af5e94461
1 изменённых файлов: 27 добавлений и 8 удалений

Просмотреть файл

@ -129,23 +129,42 @@ with only_when(target_is_osx):
option('--with-macos-sdk', env='MACOS_SDK_DIR', nargs=1,
help='Location of platform SDK to use')
@depends_if('--with-macos-sdk')
@depends('--with-macos-sdk')
@imports(_from='os.path', _import='isdir')
@imports(_from='plistlib', _import='readPlist')
@imports(_from='biplist', _import='readPlist')
@imports('subprocess')
@imports('which')
def macos_sdk(value):
sdk_min_version = Version('10.11')
sdk_max_version = Version('10.13')
if not isdir(value[0]):
sdk_path = None
if value:
sdk_path = value[0]
else:
try:
xcrun = which.which('xcrun')
args = [xcrun, '--sdk', 'macosx', '--show-sdk-path']
sdk_path = subprocess.check_output(args).strip()
except which.WhichError:
# On a Linux cross-compile, we don't have xcrun, so just leave
# the SDK unset if --with-macos-sdk isn't specified.
pass
if not sdk_path:
return
if not isdir(sdk_path):
die('SDK not found in %s. When using --with-macos-sdk, you must specify a '
'valid SDK. SDKs are installed when the optional cross-development '
'tools are selected during the Xcode/Developer Tools installation.'
% value[0])
obj = readPlist(os.path.join(value[0], 'SDKSettings.plist'))
% sdk_path)
obj = readPlist(os.path.join(sdk_path, 'SDKSettings.plist'))
if not obj:
die('Error parsing SDKSettings.plist in the SDK directory: %s' % value[0])
die('Error parsing SDKSettings.plist in the SDK directory: %s' % sdk_path)
if 'Version' not in obj:
die('Error finding Version information in SDKSettings.plist from the SDK: %s' % value[0])
die('Error finding Version information in SDKSettings.plist from the '
'SDK: %s' % sdk_path)
version = Version(obj['Version'])
if version < sdk_min_version:
die('SDK version "%s" is too old. Please upgrade to at least %s. '
@ -157,7 +176,7 @@ with only_when(target_is_osx):
'%s. You may need to point to it using --with-macos-sdk=<path> in '
'your mozconfig. Various SDK versions are available from '
'https://github.com/phracker/MacOSX-SDKs' % (version, sdk_max_version))
return value[0]
return sdk_path
set_config('MACOS_SDK_DIR', macos_sdk)