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:
Ned Deily 2012-02-11 20:40:24 +01:00
parent 0f7e2df2f1
commit c47a459251
7 changed files with 24 additions and 59 deletions

View File

@ -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

View File

@ -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():

View File

@ -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'}

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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