diff options
author | Tarek Ziadé <ziade.tarek@gmail.com> | 2009-07-08 22:42:43 (GMT) |
---|---|---|
committer | Tarek Ziadé <ziade.tarek@gmail.com> | 2009-07-08 22:42:43 (GMT) |
commit | 556934b385b287add684c5022cfae64c93c5e0eb (patch) | |
tree | a450dc1c728ec021ede9b8721d7acb6796fc2d69 | |
parent | 74c96ec39920380ce081c3bd078e9045c95fcc34 (diff) | |
download | cpython-556934b385b287add684c5022cfae64c93c5e0eb.zip cpython-556934b385b287add684c5022cfae64c93c5e0eb.tar.gz cpython-556934b385b287add684c5022cfae64c93c5e0eb.tar.bz2 |
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.
........
-rw-r--r-- | Lib/distutils/command/build_ext.py | 22 | ||||
-rw-r--r-- | Lib/distutils/tests/test_build_ext.py | 11 |
2 files changed, 29 insertions, 4 deletions
diff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py index 4a3aec2..d8bb251 100644 --- a/Lib/distutils/command/build_ext.py +++ b/Lib/distutils/command/build_ext.py @@ -132,13 +132,17 @@ class build_ext(Command): 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 @@ class build_ext(Command): # 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 diff --git a/Lib/distutils/tests/test_build_ext.py b/Lib/distutils/tests/test_build_ext.py index d531293..6829583 100644 --- a/Lib/distutils/tests/test_build_ext.py +++ b/Lib/distutils/tests/test_build_ext.py @@ -402,12 +402,21 @@ class BuildExtTestCase(TempdirManager, 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() |