diff options
author | Tarek Ziadé <ziade.tarek@gmail.com> | 2009-10-25 23:16:51 (GMT) |
---|---|---|
committer | Tarek Ziadé <ziade.tarek@gmail.com> | 2009-10-25 23:16:51 (GMT) |
commit | c76bceae1ab7cca8d1aabe2294c3b77bc1e8c8c8 (patch) | |
tree | efa364ccaa988521e3a4d5cd3f23049c7c27ca08 /Lib/distutils | |
parent | aa9f3d3dfbc650eadea253462986ab9ae76d2080 (diff) | |
download | cpython-c76bceae1ab7cca8d1aabe2294c3b77bc1e8c8c8.zip cpython-c76bceae1ab7cca8d1aabe2294c3b77bc1e8c8c8.tar.gz cpython-c76bceae1ab7cca8d1aabe2294c3b77bc1e8c8c8.tar.bz2 |
Merged revisions 75704 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
................
r75704 | tarek.ziade | 2009-10-26 00:08:47 +0100 (Mon, 26 Oct 2009) | 17 lines
Merged revisions 75669-75671 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r75669 | tarek.ziade | 2009-10-24 17:10:37 +0200 (Sat, 24 Oct 2009) | 1 line
Issue #7071: byte-compilation in Distutils now looks at sys.dont_write_bytecode
........
r75670 | tarek.ziade | 2009-10-24 17:19:03 +0200 (Sat, 24 Oct 2009) | 1 line
fixed finally state in distutils.test_util
........
r75671 | tarek.ziade | 2009-10-24 17:51:30 +0200 (Sat, 24 Oct 2009) | 1 line
fixed warning and error message
........
................
Diffstat (limited to 'Lib/distutils')
-rw-r--r-- | Lib/distutils/command/build_py.py | 5 | ||||
-rw-r--r-- | Lib/distutils/command/install_lib.py | 6 | ||||
-rw-r--r-- | Lib/distutils/errors.py | 2 | ||||
-rw-r--r-- | Lib/distutils/tests/test_build_py.py | 16 | ||||
-rw-r--r-- | Lib/distutils/tests/test_install_lib.py | 17 | ||||
-rw-r--r-- | Lib/distutils/tests/test_util.py | 17 | ||||
-rw-r--r-- | Lib/distutils/util.py | 4 |
7 files changed, 62 insertions, 5 deletions
diff --git a/Lib/distutils/command/build_py.py b/Lib/distutils/command/build_py.py index 99d85be..26002e4 100644 --- a/Lib/distutils/command/build_py.py +++ b/Lib/distutils/command/build_py.py @@ -5,6 +5,7 @@ Implements the Distutils 'build_py' command.""" __revision__ = "$Id$" import sys, os +import sys from glob import glob from distutils.core import Command @@ -369,6 +370,10 @@ class build_py (Command): self.build_module(module, module_file, package) def byte_compile(self, files): + if sys.dont_write_bytecode: + self.warn('byte-compiling is disabled, skipping.') + return + from distutils.util import byte_compile prefix = self.build_lib if prefix[-1] != os.sep: diff --git a/Lib/distutils/command/install_lib.py b/Lib/distutils/command/install_lib.py index 85fb3ac..6022d30 100644 --- a/Lib/distutils/command/install_lib.py +++ b/Lib/distutils/command/install_lib.py @@ -6,6 +6,8 @@ Implements the Distutils 'install_lib' command __revision__ = "$Id$" import os +import sys + from distutils.core import Command from distutils.errors import DistutilsOptionError @@ -115,6 +117,10 @@ class install_lib(Command): return outfiles def byte_compile(self, files): + if sys.dont_write_bytecode: + self.warn('byte-compiling is disabled, skipping.') + return + from distutils.util import byte_compile # Get the "--root" directory supplied to the "install" command, diff --git a/Lib/distutils/errors.py b/Lib/distutils/errors.py index 963d833..acecacc 100644 --- a/Lib/distutils/errors.py +++ b/Lib/distutils/errors.py @@ -74,6 +74,8 @@ class DistutilsInternalError (DistutilsError): class DistutilsTemplateError (DistutilsError): """Syntax error in a file list template.""" +class DistutilsByteCompileError(DistutilsError): + """Byte compile error.""" # Exception classes used by the CCompiler implementation classes class CCompilerError (Exception): diff --git a/Lib/distutils/tests/test_build_py.py b/Lib/distutils/tests/test_build_py.py index 8ad3bbc..582f246 100644 --- a/Lib/distutils/tests/test_build_py.py +++ b/Lib/distutils/tests/test_build_py.py @@ -89,6 +89,22 @@ class BuildPyTestCase(support.TempdirManager, os.chdir(cwd) sys.stdout = sys.__stdout__ + def test_dont_write_bytecode(self): + # makes sure byte_compile is not used + pkg_dir, dist = self.create_dist() + cmd = build_py(dist) + cmd.compile = 1 + cmd.optimize = 1 + + old_dont_write_bytecode = sys.dont_write_bytecode + sys.dont_write_bytecode = True + try: + cmd.byte_compile([]) + finally: + sys.dont_write_bytecode = old_dont_write_bytecode + + self.assertTrue('byte-compiling is disabled' in self.logs[0][1]) + def test_suite(): return unittest.makeSuite(BuildPyTestCase) diff --git a/Lib/distutils/tests/test_install_lib.py b/Lib/distutils/tests/test_install_lib.py index b2185b8..99a6d90 100644 --- a/Lib/distutils/tests/test_install_lib.py +++ b/Lib/distutils/tests/test_install_lib.py @@ -31,6 +31,8 @@ class InstallLibTestCase(support.TempdirManager, cmd.finalize_options() self.assertEquals(cmd.optimize, 2) + @unittest.skipUnless(not sys.dont_write_bytecode, + 'byte-compile not supported') def test_byte_compile(self): pkg_dir, dist = self.create_dist() cmd = install_lib(dist) @@ -76,6 +78,21 @@ class InstallLibTestCase(support.TempdirManager, # get_input should return 2 elements self.assertEquals(len(cmd.get_inputs()), 2) + def test_dont_write_bytecode(self): + # makes sure byte_compile is not used + pkg_dir, dist = self.create_dist() + cmd = install_lib(dist) + cmd.compile = 1 + cmd.optimize = 1 + + old_dont_write_bytecode = sys.dont_write_bytecode + sys.dont_write_bytecode = True + try: + cmd.byte_compile([]) + finally: + sys.dont_write_bytecode = old_dont_write_bytecode + + self.assertTrue('byte-compiling is disabled' in self.logs[0][1]) def test_suite(): return unittest.makeSuite(InstallLibTestCase) diff --git a/Lib/distutils/tests/test_util.py b/Lib/distutils/tests/test_util.py index 35f81a6..dcc1a20 100644 --- a/Lib/distutils/tests/test_util.py +++ b/Lib/distutils/tests/test_util.py @@ -1,16 +1,13 @@ """Tests for distutils.util.""" -# not covered yet: -# - byte_compile -# import os import sys import unittest from copy import copy -from distutils.errors import DistutilsPlatformError +from distutils.errors import DistutilsPlatformError, DistutilsByteCompileError from distutils.util import (get_platform, convert_path, change_root, check_environ, split_quoted, strtobool, - rfc822_escape) + rfc822_escape, byte_compile) from distutils import util # used to patch _environ_checked from distutils.sysconfig import get_config_vars from distutils import sysconfig @@ -258,6 +255,16 @@ class UtilTestCase(support.EnvironGuard, unittest.TestCase): 'header%(8s)s') % {'8s': '\n'+8*' '} self.assertEquals(res, wanted) + def test_dont_write_bytecode(self): + # makes sure byte_compile raise a DistutilsError + # if sys.dont_write_bytecode is True + old_dont_write_bytecode = sys.dont_write_bytecode + sys.dont_write_bytecode = True + try: + self.assertRaises(DistutilsByteCompileError, byte_compile, []) + finally: + sys.dont_write_bytecode = old_dont_write_bytecode + def test_suite(): return unittest.makeSuite(UtilTestCase) diff --git a/Lib/distutils/util.py b/Lib/distutils/util.py index 5054d0c..4bc4c98 100644 --- a/Lib/distutils/util.py +++ b/Lib/distutils/util.py @@ -11,6 +11,7 @@ from distutils.errors import DistutilsPlatformError from distutils.dep_util import newer from distutils.spawn import spawn from distutils import log +from distutils.errors import DistutilsByteCompileError def get_platform (): """Return a string that identifies the current platform. This is used @@ -443,6 +444,9 @@ def byte_compile (py_files, generated in indirect mode; unless you know what you're doing, leave it set to None. """ + # nothing is done if sys.dont_write_bytecode is True + if sys.dont_write_bytecode: + raise DistutilsByteCompileError('byte-compiling is disabled.') # First, if the caller didn't force us into direct or indirect mode, # figure out which mode we should be in. We take a conservative |