mirror of
https://github.com/python/cpython.git
synced 2025-10-01 12:52:18 +00:00
Issue #13590: merge
This commit is contained in:
commit
7347df1504
2 changed files with 45 additions and 1 deletions
|
@ -146,6 +146,7 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
|
||||||
"I don't know where Python installs its library "
|
"I don't know where Python installs its library "
|
||||||
"on platform '%s'" % os.name)
|
"on platform '%s'" % os.name)
|
||||||
|
|
||||||
|
_USE_CLANG = None
|
||||||
|
|
||||||
def customize_compiler(compiler):
|
def customize_compiler(compiler):
|
||||||
"""Do any platform-specific customization of a CCompiler instance.
|
"""Do any platform-specific customization of a CCompiler instance.
|
||||||
|
@ -158,8 +159,38 @@ def customize_compiler(compiler):
|
||||||
get_config_vars('CC', 'CXX', 'OPT', 'CFLAGS',
|
get_config_vars('CC', 'CXX', 'OPT', 'CFLAGS',
|
||||||
'CCSHARED', 'LDSHARED', 'SO', 'AR', 'ARFLAGS')
|
'CCSHARED', 'LDSHARED', 'SO', 'AR', 'ARFLAGS')
|
||||||
|
|
||||||
|
newcc = None
|
||||||
if 'CC' in os.environ:
|
if 'CC' in os.environ:
|
||||||
cc = os.environ['CC']
|
newcc = os.environ['CC']
|
||||||
|
elif sys.platform == 'darwin' and cc == 'gcc-4.2':
|
||||||
|
# Issue #13590:
|
||||||
|
# Since Apple removed gcc-4.2 in Xcode 4.2, we can no
|
||||||
|
# longer assume it is available for extension module builds.
|
||||||
|
# If Python was built with gcc-4.2, check first to see if
|
||||||
|
# it is available on this system; if not, try to use clang
|
||||||
|
# instead unless the caller explicitly set CC.
|
||||||
|
global _USE_CLANG
|
||||||
|
if _USE_CLANG is None:
|
||||||
|
from distutils import log
|
||||||
|
from subprocess import Popen, PIPE
|
||||||
|
p = Popen("! type gcc-4.2 && type clang && exit 2",
|
||||||
|
shell=True, stdout=PIPE, stderr=PIPE)
|
||||||
|
p.wait()
|
||||||
|
if p.returncode == 2:
|
||||||
|
_USE_CLANG = True
|
||||||
|
log.warn("gcc-4.2 not found, using clang instead")
|
||||||
|
else:
|
||||||
|
_USE_CLANG = False
|
||||||
|
if _USE_CLANG:
|
||||||
|
newcc = 'clang'
|
||||||
|
if newcc:
|
||||||
|
# On OS X, if CC is overridden, use that as the default
|
||||||
|
# command for LDSHARED as well
|
||||||
|
if (sys.platform == 'darwin'
|
||||||
|
and 'LDSHARED' not in os.environ
|
||||||
|
and ldshared.startswith(cc)):
|
||||||
|
ldshared = newcc + ldshared[len(cc):]
|
||||||
|
cc = newcc
|
||||||
if 'CXX' in os.environ:
|
if 'CXX' in os.environ:
|
||||||
cxx = os.environ['CXX']
|
cxx = os.environ['CXX']
|
||||||
if 'LDSHARED' in os.environ:
|
if 'LDSHARED' in os.environ:
|
||||||
|
|
13
Misc/NEWS
13
Misc/NEWS
|
@ -466,6 +466,19 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #13590: On OS X 10.7 and 10.6 with Xcode 4.2, building
|
||||||
|
Distutils-based packages with C extension modules may fail because
|
||||||
|
Apple has removed gcc-4.2, the version used to build python.org
|
||||||
|
64-bit/32-bit Pythons. If the user does not explicitly override
|
||||||
|
the default C compiler by setting the CC environment variable,
|
||||||
|
Distutils will now attempt to compile extension modules with clang
|
||||||
|
if gcc-4.2 is required but not found. Also as a convenience, if
|
||||||
|
the user does explicitly set CC, substitute its value as the default
|
||||||
|
compiler in the Distutils LDSHARED configuration variable for OS X.
|
||||||
|
(Note, the python.org 32-bit-only Pythons use gcc-4.0 and the 10.4u
|
||||||
|
SDK, neither of which are available in Xcode 4. This change does not
|
||||||
|
attempt to override settings to support their use with Xcode 4.)
|
||||||
|
|
||||||
- Issue #13960: HTMLParser is now able to handle broken comments when
|
- Issue #13960: HTMLParser is now able to handle broken comments when
|
||||||
strict=False.
|
strict=False.
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue