mirror of https://github.com/python/cpython
Issue #13994: Earler partial revert of Distutils enhancements in 2.7
has left two versions of customize_compiler, the original in distutils.sysconfig and another copy in distutils.ccompiler, with some parts of distutils calling one and others using the other. Complete the revert back to only having one in distutils.sysconfig as is the case in 3.x.
This commit is contained in:
parent
0f7e2df2f1
commit
c47a459251
|
@ -18,58 +18,6 @@ from distutils.dep_util import newer_group
|
||||||
from distutils.util import split_quoted, execute
|
from distutils.util import split_quoted, execute
|
||||||
from distutils import log
|
from distutils import log
|
||||||
|
|
||||||
_sysconfig = __import__('sysconfig')
|
|
||||||
|
|
||||||
def customize_compiler(compiler):
|
|
||||||
"""Do any platform-specific customization of a CCompiler instance.
|
|
||||||
|
|
||||||
Mainly needed on Unix, so we can plug in the information that
|
|
||||||
varies across Unices and is stored in Python's Makefile.
|
|
||||||
"""
|
|
||||||
if compiler.compiler_type == "unix":
|
|
||||||
(cc, cxx, opt, cflags, ccshared, ldshared, so_ext, ar, ar_flags) = \
|
|
||||||
_sysconfig.get_config_vars('CC', 'CXX', 'OPT', 'CFLAGS',
|
|
||||||
'CCSHARED', 'LDSHARED', 'SO', 'AR',
|
|
||||||
'ARFLAGS')
|
|
||||||
|
|
||||||
if 'CC' in os.environ:
|
|
||||||
cc = os.environ['CC']
|
|
||||||
if 'CXX' in os.environ:
|
|
||||||
cxx = os.environ['CXX']
|
|
||||||
if 'LDSHARED' in os.environ:
|
|
||||||
ldshared = os.environ['LDSHARED']
|
|
||||||
if 'CPP' in os.environ:
|
|
||||||
cpp = os.environ['CPP']
|
|
||||||
else:
|
|
||||||
cpp = cc + " -E" # not always
|
|
||||||
if 'LDFLAGS' in os.environ:
|
|
||||||
ldshared = ldshared + ' ' + os.environ['LDFLAGS']
|
|
||||||
if 'CFLAGS' in os.environ:
|
|
||||||
cflags = opt + ' ' + os.environ['CFLAGS']
|
|
||||||
ldshared = ldshared + ' ' + os.environ['CFLAGS']
|
|
||||||
if 'CPPFLAGS' in os.environ:
|
|
||||||
cpp = cpp + ' ' + os.environ['CPPFLAGS']
|
|
||||||
cflags = cflags + ' ' + os.environ['CPPFLAGS']
|
|
||||||
ldshared = ldshared + ' ' + os.environ['CPPFLAGS']
|
|
||||||
if 'AR' in os.environ:
|
|
||||||
ar = os.environ['AR']
|
|
||||||
if 'ARFLAGS' in os.environ:
|
|
||||||
archiver = ar + ' ' + os.environ['ARFLAGS']
|
|
||||||
else:
|
|
||||||
archiver = ar + ' ' + ar_flags
|
|
||||||
|
|
||||||
cc_cmd = cc + ' ' + cflags
|
|
||||||
compiler.set_executables(
|
|
||||||
preprocessor=cpp,
|
|
||||||
compiler=cc_cmd,
|
|
||||||
compiler_so=cc_cmd + ' ' + ccshared,
|
|
||||||
compiler_cxx=cxx,
|
|
||||||
linker_so=ldshared,
|
|
||||||
linker_exe=cc,
|
|
||||||
archiver=archiver)
|
|
||||||
|
|
||||||
compiler.shared_lib_extension = so_ext
|
|
||||||
|
|
||||||
class CCompiler:
|
class CCompiler:
|
||||||
"""Abstract base class to define the interface that must be implemented
|
"""Abstract base class to define the interface that must be implemented
|
||||||
by real compiler classes. Also has some utility methods used by
|
by real compiler classes. Also has some utility methods used by
|
||||||
|
|
|
@ -19,7 +19,7 @@ __revision__ = "$Id$"
|
||||||
import os
|
import os
|
||||||
from distutils.core import Command
|
from distutils.core import Command
|
||||||
from distutils.errors import DistutilsSetupError
|
from distutils.errors import DistutilsSetupError
|
||||||
from distutils.ccompiler import customize_compiler
|
from distutils.sysconfig import customize_compiler
|
||||||
from distutils import log
|
from distutils import log
|
||||||
|
|
||||||
def show_compilers():
|
def show_compilers():
|
||||||
|
|
|
@ -16,7 +16,7 @@ import re
|
||||||
|
|
||||||
from distutils.core import Command
|
from distutils.core import Command
|
||||||
from distutils.errors import DistutilsExecError
|
from distutils.errors import DistutilsExecError
|
||||||
from distutils.ccompiler import customize_compiler
|
from distutils.sysconfig import customize_compiler
|
||||||
from distutils import log
|
from distutils import log
|
||||||
|
|
||||||
LANG_EXT = {'c': '.c', 'c++': '.cxx'}
|
LANG_EXT = {'c': '.c', 'c++': '.cxx'}
|
||||||
|
|
|
@ -150,9 +150,10 @@ def customize_compiler(compiler):
|
||||||
varies across Unices and is stored in Python's Makefile.
|
varies across Unices and is stored in Python's Makefile.
|
||||||
"""
|
"""
|
||||||
if compiler.compiler_type == "unix":
|
if compiler.compiler_type == "unix":
|
||||||
(cc, cxx, opt, cflags, ccshared, ldshared, so_ext) = \
|
(cc, cxx, opt, cflags, ccshared, ldshared, so_ext, ar, ar_flags) = \
|
||||||
get_config_vars('CC', 'CXX', 'OPT', 'CFLAGS',
|
get_config_vars('CC', 'CXX', 'OPT', 'CFLAGS',
|
||||||
'CCSHARED', 'LDSHARED', 'SO')
|
'CCSHARED', 'LDSHARED', 'SO', 'AR',
|
||||||
|
'ARFLAGS')
|
||||||
|
|
||||||
newcc = None
|
newcc = None
|
||||||
if 'CC' in os.environ:
|
if 'CC' in os.environ:
|
||||||
|
@ -203,6 +204,12 @@ def customize_compiler(compiler):
|
||||||
cpp = cpp + ' ' + os.environ['CPPFLAGS']
|
cpp = cpp + ' ' + os.environ['CPPFLAGS']
|
||||||
cflags = cflags + ' ' + os.environ['CPPFLAGS']
|
cflags = cflags + ' ' + os.environ['CPPFLAGS']
|
||||||
ldshared = ldshared + ' ' + os.environ['CPPFLAGS']
|
ldshared = ldshared + ' ' + os.environ['CPPFLAGS']
|
||||||
|
if 'AR' in os.environ:
|
||||||
|
ar = os.environ['AR']
|
||||||
|
if 'ARFLAGS' in os.environ:
|
||||||
|
archiver = ar + ' ' + os.environ['ARFLAGS']
|
||||||
|
else:
|
||||||
|
archiver = ar + ' ' + ar_flags
|
||||||
|
|
||||||
cc_cmd = cc + ' ' + cflags
|
cc_cmd = cc + ' ' + cflags
|
||||||
compiler.set_executables(
|
compiler.set_executables(
|
||||||
|
@ -211,7 +218,8 @@ def customize_compiler(compiler):
|
||||||
compiler_so=cc_cmd + ' ' + ccshared,
|
compiler_so=cc_cmd + ' ' + ccshared,
|
||||||
compiler_cxx=cxx,
|
compiler_cxx=cxx,
|
||||||
linker_so=ldshared,
|
linker_so=ldshared,
|
||||||
linker_exe=cc)
|
linker_exe=cc,
|
||||||
|
archiver=archiver)
|
||||||
|
|
||||||
compiler.shared_lib_extension = so_ext
|
compiler.shared_lib_extension = so_ext
|
||||||
|
|
||||||
|
|
|
@ -122,7 +122,8 @@ class BuildCLibTestCase(support.TempdirManager,
|
||||||
# before we run the command, we want to make sure
|
# before we run the command, we want to make sure
|
||||||
# all commands are present on the system
|
# all commands are present on the system
|
||||||
# by creating a compiler and checking its executables
|
# by creating a compiler and checking its executables
|
||||||
from distutils.ccompiler import new_compiler, customize_compiler
|
from distutils.ccompiler import new_compiler
|
||||||
|
from distutils.sysconfig import customize_compiler
|
||||||
|
|
||||||
compiler = new_compiler()
|
compiler = new_compiler()
|
||||||
customize_compiler(compiler)
|
customize_compiler(compiler)
|
||||||
|
|
|
@ -4,7 +4,8 @@ import unittest
|
||||||
from test.test_support import captured_stdout
|
from test.test_support import captured_stdout
|
||||||
|
|
||||||
from distutils.ccompiler import (gen_lib_options, CCompiler,
|
from distutils.ccompiler import (gen_lib_options, CCompiler,
|
||||||
get_default_compiler, customize_compiler)
|
get_default_compiler)
|
||||||
|
from distutils.sysconfig import customize_compiler
|
||||||
from distutils import debug
|
from distutils import debug
|
||||||
from distutils.tests import support
|
from distutils.tests import support
|
||||||
|
|
||||||
|
|
|
@ -90,6 +90,13 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #13994: Earler partial revert of Distutils enhancements in 2.7
|
||||||
|
has left two versions of customize_compiler, the original in
|
||||||
|
distutils.sysconfig and another copy in distutils.ccompiler, with some
|
||||||
|
parts of distutils calling one and others using the other.
|
||||||
|
Complete the revert back to only having one in distutils.sysconfig as
|
||||||
|
is the case in 3.x.
|
||||||
|
|
||||||
- Issue #13590: On OS X 10.7 and 10.6 with Xcode 4.2, building
|
- 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
|
Distutils-based packages with C extension modules may fail because
|
||||||
Apple has removed gcc-4.2, the version used to build python.org
|
Apple has removed gcc-4.2, the version used to build python.org
|
||||||
|
|
Loading…
Reference in New Issue