Commit 14ab73a6 authored by Ned Deily's avatar Ned Deily

Issue #13590: Improve support for OS X Xcode 4:

- fix test_distutils and test_sysconfig test failures by
  aligning sysconfig and distutils.sysconfig tailoring of
  configure variables (as in 2.7)
parent b44cc1ee
...@@ -624,7 +624,7 @@ def get_config_vars(*args): ...@@ -624,7 +624,7 @@ def get_config_vars(*args):
# are in CFLAGS or LDFLAGS and remove them if they are. # are in CFLAGS or LDFLAGS and remove them if they are.
# This is needed when building extensions on a 10.3 system # This is needed when building extensions on a 10.3 system
# using a universal build of python. # using a universal build of python.
for key in ('LDFLAGS', 'BASECFLAGS', for key in ('LDFLAGS', 'BASECFLAGS', 'LDSHARED',
# a number of derived variables. These need to be # a number of derived variables. These need to be
# patched up as well. # patched up as well.
'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'): 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'):
...@@ -669,16 +669,39 @@ def get_config_vars(*args): ...@@ -669,16 +669,39 @@ def get_config_vars(*args):
# that OS release. # that OS release.
if 'ARCHFLAGS' in os.environ: if 'ARCHFLAGS' in os.environ:
arch = os.environ['ARCHFLAGS'] arch = os.environ['ARCHFLAGS']
for key in ('LDFLAGS', 'BASECFLAGS', for key in ('LDFLAGS', 'BASECFLAGS', 'LDSHARED',
# a number of derived variables. These need to be # a number of derived variables. These need to be
# patched up as well. # patched up as well.
'CFLAGS', 'PY_CFLAGS', 'BLDSHARED', 'LDSHARED'): 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'):
flags = _config_vars[key] flags = _config_vars[key]
flags = re.sub('-arch\s+\w+\s', ' ', flags) flags = re.sub('-arch\s+\w+\s', ' ', flags)
flags = flags + ' ' + arch flags = flags + ' ' + arch
_config_vars[key] = flags _config_vars[key] = flags
# If we're on OSX 10.5 or later and the user tries to
# compiles an extension using an SDK that is not present
# on the current machine it is better to not use an SDK
# than to fail.
#
# The major usecase for this is users using a Python.org
# binary installer on OSX 10.6: that installer uses
# the 10.4u SDK, but that SDK is not installed by default
# when you install Xcode.
#
m = re.search('-isysroot\s+(\S+)', _config_vars['CFLAGS'])
if m is not None:
sdk = m.group(1)
if not os.path.exists(sdk):
for key in ('LDFLAGS', 'BASECFLAGS', 'LDSHARED',
# a number of derived variables. These need to be
# patched up as well.
'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'):
flags = _config_vars[key]
flags = re.sub('-isysroot\s+\S+(\s|$)', ' ', flags)
_config_vars[key] = flags
if args: if args:
vals = [] vals = []
for name in args: for name in args:
......
...@@ -83,8 +83,9 @@ def _darwin_compiler_fixup(compiler_so, cc_args): ...@@ -83,8 +83,9 @@ def _darwin_compiler_fixup(compiler_so, cc_args):
except ValueError: except ValueError:
pass pass
# Check if the SDK that is used during compilation actually exists. # Check if the SDK that is used during compilation actually exists,
# If not, revert to using the installed headers and hope for the best. # the universal build requires the usage of a universal SDK and not all
# users have that installed by default.
sysroot = None sysroot = None
if '-isysroot' in cc_args: if '-isysroot' in cc_args:
idx = cc_args.index('-isysroot') idx = cc_args.index('-isysroot')
...@@ -96,21 +97,7 @@ def _darwin_compiler_fixup(compiler_so, cc_args): ...@@ -96,21 +97,7 @@ def _darwin_compiler_fixup(compiler_so, cc_args):
if sysroot and not os.path.isdir(sysroot): if sysroot and not os.path.isdir(sysroot):
log.warn("Compiling with an SDK that doesn't seem to exist: %s", log.warn("Compiling with an SDK that doesn't seem to exist: %s",
sysroot) sysroot)
log.warn("Attempting to compile without the SDK") log.warn("Please check your Xcode installation")
while True:
try:
index = cc_args.index('-isysroot')
# Strip this argument and the next one:
del cc_args[index:index+2]
except ValueError:
break
while True:
try:
index = compiler_so.index('-isysroot')
# Strip this argument and the next one:
del compiler_so[index:index+2]
except ValueError:
break
return compiler_so return compiler_so
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment