mirror of https://github.com/python/cpython
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 ........
This commit is contained in:
parent
4824c25e75
commit
04fe7c01a8
|
@ -5,6 +5,7 @@ Implements the Distutils 'build_py' command."""
|
||||||
__revision__ = "$Id$"
|
__revision__ = "$Id$"
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import sys
|
||||||
from glob import glob
|
from glob import glob
|
||||||
|
|
||||||
from distutils.core import Command
|
from distutils.core import Command
|
||||||
|
@ -369,6 +370,10 @@ class build_py(Command):
|
||||||
self.build_module(module, module_file, package)
|
self.build_module(module, module_file, package)
|
||||||
|
|
||||||
def byte_compile(self, files):
|
def byte_compile(self, files):
|
||||||
|
if sys.dont_write_bytecode:
|
||||||
|
self.warn('byte-compiling is disabled, skipping.')
|
||||||
|
return
|
||||||
|
|
||||||
from distutils.util import byte_compile
|
from distutils.util import byte_compile
|
||||||
prefix = self.build_lib
|
prefix = self.build_lib
|
||||||
if prefix[-1] != os.sep:
|
if prefix[-1] != os.sep:
|
||||||
|
|
|
@ -6,6 +6,8 @@ Implements the Distutils 'install_lib' command
|
||||||
__revision__ = "$Id$"
|
__revision__ = "$Id$"
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
from distutils.core import Command
|
from distutils.core import Command
|
||||||
from distutils.errors import DistutilsOptionError
|
from distutils.errors import DistutilsOptionError
|
||||||
|
|
||||||
|
@ -115,6 +117,10 @@ class install_lib(Command):
|
||||||
return outfiles
|
return outfiles
|
||||||
|
|
||||||
def byte_compile(self, files):
|
def byte_compile(self, files):
|
||||||
|
if sys.dont_write_bytecode:
|
||||||
|
self.warn('byte-compiling is disabled, skipping.')
|
||||||
|
return
|
||||||
|
|
||||||
from distutils.util import byte_compile
|
from distutils.util import byte_compile
|
||||||
|
|
||||||
# Get the "--root" directory supplied to the "install" command,
|
# Get the "--root" directory supplied to the "install" command,
|
||||||
|
|
|
@ -74,6 +74,8 @@ class DistutilsInternalError (DistutilsError):
|
||||||
class DistutilsTemplateError (DistutilsError):
|
class DistutilsTemplateError (DistutilsError):
|
||||||
"""Syntax error in a file list template."""
|
"""Syntax error in a file list template."""
|
||||||
|
|
||||||
|
class DistutilsByteCompileError(DistutilsError):
|
||||||
|
"""Byte compile error."""
|
||||||
|
|
||||||
# Exception classes used by the CCompiler implementation classes
|
# Exception classes used by the CCompiler implementation classes
|
||||||
class CCompilerError (Exception):
|
class CCompilerError (Exception):
|
||||||
|
|
|
@ -89,6 +89,22 @@ class BuildPyTestCase(support.TempdirManager,
|
||||||
os.chdir(cwd)
|
os.chdir(cwd)
|
||||||
sys.stdout = sys.__stdout__
|
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():
|
def test_suite():
|
||||||
return unittest.makeSuite(BuildPyTestCase)
|
return unittest.makeSuite(BuildPyTestCase)
|
||||||
|
|
||||||
|
|
|
@ -31,6 +31,8 @@ class InstallLibTestCase(support.TempdirManager,
|
||||||
cmd.finalize_options()
|
cmd.finalize_options()
|
||||||
self.assertEquals(cmd.optimize, 2)
|
self.assertEquals(cmd.optimize, 2)
|
||||||
|
|
||||||
|
@unittest.skipUnless(not sys.dont_write_bytecode,
|
||||||
|
'byte-compile not supported')
|
||||||
def test_byte_compile(self):
|
def test_byte_compile(self):
|
||||||
pkg_dir, dist = self.create_dist()
|
pkg_dir, dist = self.create_dist()
|
||||||
cmd = install_lib(dist)
|
cmd = install_lib(dist)
|
||||||
|
@ -76,6 +78,21 @@ class InstallLibTestCase(support.TempdirManager,
|
||||||
# get_input should return 2 elements
|
# get_input should return 2 elements
|
||||||
self.assertEquals(len(cmd.get_inputs()), 2)
|
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():
|
def test_suite():
|
||||||
return unittest.makeSuite(InstallLibTestCase)
|
return unittest.makeSuite(InstallLibTestCase)
|
||||||
|
|
|
@ -1,7 +1,4 @@
|
||||||
"""Tests for distutils.util."""
|
"""Tests for distutils.util."""
|
||||||
# not covered yet:
|
|
||||||
# - byte_compile
|
|
||||||
#
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import unittest
|
import unittest
|
||||||
|
@ -9,11 +6,12 @@ from copy import copy
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
from distutils.errors import DistutilsPlatformError
|
from distutils.errors import DistutilsPlatformError, DistutilsByteCompileError
|
||||||
from distutils.util import (get_platform, convert_path, change_root,
|
from distutils.util import (get_platform, convert_path, change_root,
|
||||||
check_environ, split_quoted, strtobool,
|
check_environ, split_quoted, strtobool,
|
||||||
rfc822_escape, get_compiler_versions,
|
rfc822_escape, get_compiler_versions,
|
||||||
_find_exe_version, _MAC_OS_X_LD_VERSION)
|
_find_exe_version, _MAC_OS_X_LD_VERSION,
|
||||||
|
byte_compile)
|
||||||
from distutils import util
|
from distutils import util
|
||||||
from distutils.sysconfig import get_config_vars
|
from distutils.sysconfig import get_config_vars
|
||||||
from distutils import sysconfig
|
from distutils import sysconfig
|
||||||
|
@ -349,6 +347,16 @@ class UtilTestCase(support.EnvironGuard, unittest.TestCase):
|
||||||
res = get_compiler_versions()
|
res = get_compiler_versions()
|
||||||
self.assertEquals(res[2], None)
|
self.assertEquals(res[2], None)
|
||||||
|
|
||||||
|
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():
|
def test_suite():
|
||||||
return unittest.makeSuite(UtilTestCase)
|
return unittest.makeSuite(UtilTestCase)
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,7 @@ from distutils.dep_util import newer
|
||||||
from distutils.spawn import spawn, find_executable
|
from distutils.spawn import spawn, find_executable
|
||||||
from distutils import log
|
from distutils import log
|
||||||
from distutils.version import LooseVersion
|
from distutils.version import LooseVersion
|
||||||
|
from distutils.errors import DistutilsByteCompileError
|
||||||
|
|
||||||
def get_platform():
|
def get_platform():
|
||||||
"""Return a string that identifies the current platform.
|
"""Return a string that identifies the current platform.
|
||||||
|
@ -444,6 +445,10 @@ def byte_compile(py_files, optimize=0, force=0, prefix=None, base_dir=None,
|
||||||
generated in indirect mode; unless you know what you're doing, leave
|
generated in indirect mode; unless you know what you're doing, leave
|
||||||
it set to None.
|
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,
|
# 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
|
# figure out which mode we should be in. We take a conservative
|
||||||
# approach: choose direct mode *only* if the current interpreter is
|
# approach: choose direct mode *only* if the current interpreter is
|
||||||
|
|
|
@ -1152,6 +1152,9 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #7071: byte-compilation in Distutils is now done with respect to
|
||||||
|
sys.dont_write_bytecode.
|
||||||
|
|
||||||
- Issue #7066: archive_util.make_archive now restores the cwd if an error is
|
- Issue #7066: archive_util.make_archive now restores the cwd if an error is
|
||||||
raised. Initial patch by Ezio Melotti.
|
raised. Initial patch by Ezio Melotti.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue