[Python-checkins] r73896 - in python/branches/py3k: Lib/distutils/command/build_ext.py Lib/distutils/tests/test_build_ext.py
tarek.ziade
python-checkins at python.org
Thu Jul 9 00:42:44 CEST 2009
Author: tarek.ziade
Date: Thu Jul 9 00:42:43 2009
New Revision: 73896
Log:
Merged revisions 73895 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r73895 | tarek.ziade | 2009-07-09 00:40:51 +0200 (Thu, 09 Jul 2009) | 1 line
Sets the compiler attribute to keep the old behavior for third-party packages.
........
Modified:
python/branches/py3k/ (props changed)
python/branches/py3k/Lib/distutils/command/build_ext.py
python/branches/py3k/Lib/distutils/tests/test_build_ext.py
Modified: python/branches/py3k/Lib/distutils/command/build_ext.py
==============================================================================
--- python/branches/py3k/Lib/distutils/command/build_ext.py (original)
+++ python/branches/py3k/Lib/distutils/command/build_ext.py Thu Jul 9 00:42:43 2009
@@ -132,13 +132,17 @@
def _set_compiler(self, compiler):
if not isinstance(compiler, str) and compiler is not None:
# we don't want to allow that anymore in the future
- warn("'compiler' specify the compiler type in build_ext. "
+ warn("'compiler' specifies the compiler type in build_ext. "
"If you want to get the compiler object itself, "
"use 'compiler_obj'", PendingDeprecationWarning)
-
self._compiler = compiler
def _get_compiler(self):
+ if not isinstance(self._compiler, str) and self._compiler is not None:
+ # we don't want to allow that anymore in the future
+ warn("'compiler' specifies the compiler type in build_ext. "
+ "If you want to get the compiler object itself, "
+ "use 'compiler_obj'", PendingDeprecationWarning)
return self._compiler
compiler = property(_get_compiler, _set_compiler)
@@ -341,10 +345,22 @@
# Setup the CCompiler object that we'll use to do all the
# compiling and linking
- self.compiler_obj = new_compiler(compiler=self.compiler,
+
+ # used to prevent the usage of an existing compiler for the
+ # compiler option when calling new_compiler()
+ # this will be removed in 3.3 and 2.8
+ if not isinstance(self._compiler, str):
+ self._compiler = None
+
+ self.compiler_obj = new_compiler(compiler=self._compiler,
verbose=self.verbose,
dry_run=self.dry_run,
force=self.force)
+
+ # used to keep the compiler object reachable with
+ # "self.compiler". this will be removed in 3.3 and 2.8
+ self._compiler = self.compiler_obj
+
customize_compiler(self.compiler_obj)
# If we are cross-compiling, init the compiler now (if we are not
# cross-compiling, init would not hurt, but people may rely on
Modified: python/branches/py3k/Lib/distutils/tests/test_build_ext.py
==============================================================================
--- python/branches/py3k/Lib/distutils/tests/test_build_ext.py (original)
+++ python/branches/py3k/Lib/distutils/tests/test_build_ext.py Thu Jul 9 00:42:43 2009
@@ -402,12 +402,21 @@
dist = Distribution()
cmd = build_ext(dist)
+ class MyCompiler(object):
+ def do_something(self):
+ pass
+
with check_warnings() as w:
warnings.simplefilter("always")
- cmd.compiler = object()
+ cmd.compiler = MyCompiler()
self.assertEquals(len(w.warnings), 1)
cmd.compile = 'unix'
self.assertEquals(len(w.warnings), 1)
+ cmd.compiler = MyCompiler()
+ cmd.compiler.do_something()
+ # two more warnings genereated by the get
+ # and the set
+ self.assertEquals(len(w.warnings), 3)
def test_suite():
src = _get_source_filename()
More information about the Python-checkins
mailing list