Issue #21811: Anticipated fixes to 3.x and 2.7 for OS X 10.10 Yosemite.

This commit is contained in:
Ned Deily 2014-06-25 13:36:14 -07:00
parent 975735f729
commit 04cdfa1147
6 changed files with 40 additions and 18 deletions

View File

@ -450,8 +450,16 @@ def get_platform_osx(_config_vars, osname, release, machine):
# case and disallow installs. # case and disallow installs.
cflags = _config_vars.get(_INITPRE+'CFLAGS', cflags = _config_vars.get(_INITPRE+'CFLAGS',
_config_vars.get('CFLAGS', '')) _config_vars.get('CFLAGS', ''))
if ((macrelease + '.') >= '10.4.' and if macrelease:
'-arch' in cflags.strip()): try:
macrelease = tuple(int(i) for i in macrelease.split('.')[0:2])
except ValueError:
macrelease = (10, 0)
else:
# assume no universal support
macrelease = (10, 0)
if (macrelease >= (10, 4)) and '-arch' in cflags.strip():
# The universal build will build fat binaries, but not on # The universal build will build fat binaries, but not on
# systems before 10.4 # systems before 10.4

View File

@ -444,8 +444,16 @@ class BuildExtTestCase(TempdirManager,
# get the deployment target that the interpreter was built with # get the deployment target that the interpreter was built with
target = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET') target = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET')
target = tuple(map(int, target.split('.'))) target = tuple(map(int, target.split('.')[0:2]))
target = '%02d%01d0' % target # format the target value as defined in the Apple
# Availability Macros. We can't use the macro names since
# at least one value we test with will not exist yet.
if target[1] < 10:
# for 10.1 through 10.9.x -> "10n0"
target = '%02d%01d0' % target
else:
# for 10.10 and beyond -> "10nn00"
target = '%02d%02d00' % target
deptarget_ext = Extension( deptarget_ext = Extension(
'deptarget', 'deptarget',
[deptarget_c], [deptarget_c],

View File

@ -109,7 +109,9 @@ class Test_OSXSupport(unittest.TestCase):
def test__supports_universal_builds(self): def test__supports_universal_builds(self):
import platform import platform
self.assertEqual(platform.mac_ver()[0].split('.') >= ['10', '4'], mac_ver_tuple = tuple(int(i) for i in
platform.mac_ver()[0].split('.')[0:2])
self.assertEqual(mac_ver_tuple >= (10, 4),
_osx_support._supports_universal_builds()) _osx_support._supports_universal_builds())
def test__find_appropriate_compiler(self): def test__find_appropriate_compiler(self):

View File

@ -768,7 +768,7 @@ class PosixTester(unittest.TestCase):
if sys.platform == 'darwin': if sys.platform == 'darwin':
import sysconfig import sysconfig
dt = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET') or '10.0' dt = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET') or '10.0'
if float(dt) < 10.6: if tuple(int(n) for n in dt.split('.')[0:2]) < (10, 6):
raise unittest.SkipTest("getgroups(2) is broken prior to 10.6") raise unittest.SkipTest("getgroups(2) is broken prior to 10.6")
# 'id -G' and 'os.getgroups()' should return the same # 'id -G' and 'os.getgroups()' should return the same

View File

@ -150,17 +150,19 @@ SRCDIR = os.path.dirname(
# $MACOSX_DEPLOYMENT_TARGET -> minimum OS X level # $MACOSX_DEPLOYMENT_TARGET -> minimum OS X level
DEPTARGET = '10.3' DEPTARGET = '10.3'
target_cc_map = { def getDeptargetTuple():
return tuple([int(n) for n in DEPTARGET.split('.')[0:2]])
def getTargetCompilers():
target_cc_map = {
'10.3': ('gcc-4.0', 'g++-4.0'), '10.3': ('gcc-4.0', 'g++-4.0'),
'10.4': ('gcc-4.0', 'g++-4.0'), '10.4': ('gcc-4.0', 'g++-4.0'),
'10.5': ('gcc-4.2', 'g++-4.2'), '10.5': ('gcc-4.2', 'g++-4.2'),
'10.6': ('gcc-4.2', 'g++-4.2'), '10.6': ('gcc-4.2', 'g++-4.2'),
'10.7': ('clang', 'clang++'), }
'10.8': ('clang', 'clang++'), return target_cc_map.get(DEPTARGET, ('clang', 'clang++') )
'10.9': ('clang', 'clang++'),
}
CC, CXX = target_cc_map[DEPTARGET] CC, CXX = getTargetCompilers()
PYTHON_3 = getVersionTuple() >= (3, 0) PYTHON_3 = getVersionTuple() >= (3, 0)
@ -193,10 +195,10 @@ EXPECTED_SHARED_LIBS = {}
def library_recipes(): def library_recipes():
result = [] result = []
LT_10_5 = bool(DEPTARGET < '10.5') LT_10_5 = bool(getDeptargetTuple() < (10, 5))
# Disable for now # Disable for now
if False: # if (DEPTARGET > '10.5') and (getVersionTuple() >= (3, 5)): if False: # if (getDeptargetTuple() > (10, 5)) and (getVersionTuple() >= (3, 5)):
result.extend([ result.extend([
dict( dict(
name="Tcl 8.5.15", name="Tcl 8.5.15",
@ -304,7 +306,7 @@ def library_recipes():
), ),
]) ])
if DEPTARGET < '10.5': if getDeptargetTuple() < (10, 5):
result.extend([ result.extend([
dict( dict(
name="Bzip2 1.0.6", name="Bzip2 1.0.6",
@ -458,7 +460,7 @@ def pkg_recipes():
) )
) )
if DEPTARGET < '10.4' and not PYTHON_3: if getDeptargetTuple() < (10, 4) and not PYTHON_3:
result.append( result.append(
dict( dict(
name="PythonSystemFixes", name="PythonSystemFixes",
@ -679,7 +681,7 @@ def parseOptions(args=None):
SDKPATH=os.path.abspath(SDKPATH) SDKPATH=os.path.abspath(SDKPATH)
DEPSRC=os.path.abspath(DEPSRC) DEPSRC=os.path.abspath(DEPSRC)
CC, CXX=target_cc_map[DEPTARGET] CC, CXX = getTargetCompilers()
print("Settings:") print("Settings:")
print(" * Source directory:", SRCDIR) print(" * Source directory:", SRCDIR)

View File

@ -697,7 +697,9 @@ class PyBuildExt(build_ext):
if host_platform == 'darwin': if host_platform == 'darwin':
os_release = int(os.uname()[2].split('.')[0]) os_release = int(os.uname()[2].split('.')[0])
dep_target = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET') dep_target = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET')
if dep_target and dep_target.split('.') < ['10', '5']: if (dep_target and
(tuple(int(n) for n in dep_target.split('.')[0:2])
< (10, 5) ) ):
os_release = 8 os_release = 8
if os_release < 9: if os_release < 9:
# MacOSX 10.4 has a broken readline. Don't try to build # MacOSX 10.4 has a broken readline. Don't try to build