__revision__ = "$Id$"
import os
+import sys
from glob import glob
from distutils.core import Command
self.build_module(module, module_file, package)
def byte_compile(self, files):
+ if sys.dont_write_bytecode:
+ self.warn('byte-compile not supported on this platform, skipping.')
+ return
+
from distutils.util import byte_compile
prefix = self.build_lib
if prefix[-1] != os.sep:
__revision__ = "$Id$"
import os
+import sys
+
from distutils.core import Command
from distutils.errors import DistutilsOptionError
return outfiles
def byte_compile(self, files):
+ if sys.dont_write_bytecode:
+ self.warn('byte-compile not supported on this platform, skipping.')
+ return
+
from distutils.util import byte_compile
# Get the "--root" directory supplied to the "install" command,
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):
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-compile not supported ' in self.logs[0][1])
+
def test_suite():
return unittest.makeSuite(BuildPyTestCase)
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)
# 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-compile not supported ' in self.logs[0][1])
def test_suite():
return unittest.makeSuite(InstallLibTestCase)
"""Tests for distutils.util."""
-# not covered yet:
-# - byte_compile
-#
import os
import sys
import unittest
from StringIO import StringIO
import subprocess
-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, 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.sysconfig import get_config_vars
from distutils import sysconfig
res = get_compiler_versions()
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 = False
+
def test_suite():
return unittest.makeSuite(UtilTestCase)
from distutils.spawn import spawn, find_executable
from distutils import log
from distutils.version import LooseVersion
+from distutils.errors import DistutilsByteCompileError
def get_platform():
"""Return a string that identifies the current platform.
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 not supported.')
+
# 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
# approach: choose direct mode *only* if the current interpreter is
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
raised. Initial patch by Ezio Melotti.