summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Lib/distutils/ccompiler.py52
-rw-r--r--Lib/distutils/command/build_clib.py2
-rw-r--r--Lib/distutils/command/config.py2
-rw-r--r--Lib/distutils/sysconfig.py14
-rw-r--r--Lib/distutils/tests/test_build_clib.py3
-rw-r--r--Lib/distutils/tests/test_ccompiler.py3
-rw-r--r--Misc/NEWS7
7 files changed, 24 insertions, 59 deletions
diff --git a/Lib/distutils/ccompiler.py b/Lib/distutils/ccompiler.py
index c2b1f6fbe9..7076b93394 100644
--- a/Lib/distutils/ccompiler.py
+++ b/Lib/distutils/ccompiler.py
@@ -18,58 +18,6 @@ from distutils.dep_util import newer_group
from distutils.util import split_quoted, execute
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:
"""Abstract base class to define the interface that must be implemented
by real compiler classes. Also has some utility methods used by
diff --git a/Lib/distutils/command/build_clib.py b/Lib/distutils/command/build_clib.py
index 98a1726ffa..205587e7fc 100644
--- a/Lib/distutils/command/build_clib.py
+++ b/Lib/distutils/command/build_clib.py
@@ -19,7 +19,7 @@ __revision__ = "$Id$"
import os
from distutils.core import Command
from distutils.errors import DistutilsSetupError
-from distutils.ccompiler import customize_compiler
+from distutils.sysconfig import customize_compiler
from distutils import log
def show_compilers():
diff --git a/Lib/distutils/command/config.py b/Lib/distutils/command/config.py
index da8da59538..b084913563 100644
--- a/Lib/distutils/command/config.py
+++ b/Lib/distutils/command/config.py
@@ -16,7 +16,7 @@ import re
from distutils.core import Command
from distutils.errors import DistutilsExecError
-from distutils.ccompiler import customize_compiler
+from distutils.sysconfig import customize_compiler
from distutils import log
LANG_EXT = {'c': '.c', 'c++': '.cxx'}
diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
index 4f9041a794..4b193b2703 100644
--- a/Lib/distutils/sysconfig.py
+++ b/Lib/distutils/sysconfig.py
@@ -150,9 +150,10 @@ def customize_compiler(compiler):
varies across Unices and is stored in Python's Makefile.
"""
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',
- 'CCSHARED', 'LDSHARED', 'SO')
+ 'CCSHARED', 'LDSHARED', 'SO', 'AR',
+ 'ARFLAGS')
newcc = None
if 'CC' in os.environ:
@@ -203,6 +204,12 @@ def customize_compiler(compiler):
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(
@@ -211,7 +218,8 @@ def customize_compiler(compiler):
compiler_so=cc_cmd + ' ' + ccshared,
compiler_cxx=cxx,
linker_so=ldshared,
- linker_exe=cc)
+ linker_exe=cc,
+ archiver=archiver)
compiler.shared_lib_extension = so_ext
diff --git a/Lib/distutils/tests/test_build_clib.py b/Lib/distutils/tests/test_build_clib.py
index 4f4e2bc7c6..bef1bd9953 100644
--- a/Lib/distutils/tests/test_build_clib.py
+++ b/Lib/distutils/tests/test_build_clib.py
@@ -122,7 +122,8 @@ class BuildCLibTestCase(support.TempdirManager,
# before we run the command, we want to make sure
# all commands are present on the system
# 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()
customize_compiler(compiler)
diff --git a/Lib/distutils/tests/test_ccompiler.py b/Lib/distutils/tests/test_ccompiler.py
index e21873e821..45e477a429 100644
--- a/Lib/distutils/tests/test_ccompiler.py
+++ b/Lib/distutils/tests/test_ccompiler.py
@@ -4,7 +4,8 @@ import unittest
from test.test_support import captured_stdout
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.tests import support
diff --git a/Misc/NEWS b/Misc/NEWS
index 024a616878..15293b1b55 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -90,6 +90,13 @@ Core and Builtins
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
Distutils-based packages with C extension modules may fail because
Apple has removed gcc-4.2, the version used to build python.org