From: Ned Deily Date: Fri, 25 Oct 2013 23:01:42 +0000 (-0700) Subject: Issue #19400: Prevent extension module build failures with Xcode 5 on OS X X-Git-Tag: v2.7.6rc1~5 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7c5ba45fd87443f3bc50e6dd486fc88704a2428a;p=python Issue #19400: Prevent extension module build failures with Xcode 5 on OS X 10.8+ when using a universal Python that included a PPC architecture, such as with a python.org 32-bit-only binary installer. --- diff --git a/Lib/_osx_support.py b/Lib/_osx_support.py index 42a8ebb406..5a0b71e9ca 100644 --- a/Lib/_osx_support.py +++ b/Lib/_osx_support.py @@ -235,13 +235,19 @@ def _remove_unsupported_archs(_config_vars): if re.search('-arch\s+ppc', _config_vars['CFLAGS']) is not None: # NOTE: Cannot use subprocess here because of bootstrap # issues when building Python itself - status = os.system("'%s' -arch ppc -x c /dev/null 2>/dev/null"%( - _config_vars['CC'].replace("'", "'\"'\"'"),)) - # The Apple compiler drivers return status 255 if no PPC - if (status >> 8) == 255: - # Compiler doesn't support PPC, remove the related - # '-arch' flags if not explicitly overridden by an - # environment variable + status = os.system( + """echo 'int main{};' | """ + """'%s' -c -arch ppc -x c -o /dev/null /dev/null 2>/dev/null""" + %(_config_vars['CC'].replace("'", "'\"'\"'"),)) + if status: + # The compile failed for some reason. Because of differences + # across Xcode and compiler versions, there is no reliable way + # to be sure why it failed. Assume here it was due to lack of + # PPC support and remove the related '-arch' flags from each + # config variables not explicitly overriden by an environment + # variable. If the error was for some other reason, we hope the + # failure will show up again when trying to compile an extension + # module. for cv in _UNIVERSAL_CONFIG_VARS: if cv in _config_vars and cv not in os.environ: flags = _config_vars[cv] diff --git a/Misc/NEWS b/Misc/NEWS index 3b98031515..b341c5b8fd 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -253,6 +253,10 @@ Library existing directory caused mkstemp and related APIs to fail instead of retrying. Report and fix by Vlad Shcherbina. +- Issue #19400: Prevent extension module build failures with Xcode 5 on OS X + 10.8+ when using a universal Python that included a PPC architecture, + such as with a python.org 32-bit-only binary installer. + Tools/Demos -----------