Commit 4d70c7aa authored by Tarek Ziadé's avatar Tarek Ziadé

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
  ........
................
parent 57a2a657
...@@ -5,6 +5,7 @@ Implements the Distutils 'build_py' command.""" ...@@ -5,6 +5,7 @@ Implements the Distutils 'build_py' command."""
__revision__ = "$Id$" __revision__ = "$Id$"
import sys, os import sys, 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): ...@@ -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 ...@@ -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): ...@@ -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): ...@@ -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, ...@@ -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, ...@@ -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, ...@@ -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)
......
"""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
from copy import copy 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, from distutils.util import (get_platform, convert_path, change_root,
check_environ, split_quoted, strtobool, check_environ, split_quoted, strtobool,
rfc822_escape) rfc822_escape, byte_compile)
from distutils import util # used to patch _environ_checked from distutils import util # used to patch _environ_checked
from distutils.sysconfig import get_config_vars from distutils.sysconfig import get_config_vars
from distutils import sysconfig from distutils import sysconfig
...@@ -258,6 +255,16 @@ class UtilTestCase(support.EnvironGuard, unittest.TestCase): ...@@ -258,6 +255,16 @@ class UtilTestCase(support.EnvironGuard, unittest.TestCase):
'header%(8s)s') % {'8s': '\n'+8*' '} 'header%(8s)s') % {'8s': '\n'+8*' '}
self.assertEquals(res, wanted) 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(): def test_suite():
return unittest.makeSuite(UtilTestCase) return unittest.makeSuite(UtilTestCase)
......
...@@ -11,6 +11,7 @@ from distutils.errors import DistutilsPlatformError ...@@ -11,6 +11,7 @@ from distutils.errors import DistutilsPlatformError
from distutils.dep_util import newer from distutils.dep_util import newer
from distutils.spawn import spawn from distutils.spawn import spawn
from distutils import log from distutils import log
from distutils.errors import DistutilsByteCompileError
def get_platform (): def get_platform ():
"""Return a string that identifies the current platform. This is used """Return a string that identifies the current platform. This is used
...@@ -443,6 +444,9 @@ def byte_compile (py_files, ...@@ -443,6 +444,9 @@ def byte_compile (py_files,
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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment