summaryrefslogtreecommitdiffstats
path: root/Lib/distutils
diff options
context:
space:
mode:
authorTarek Ziadé <ziade.tarek@gmail.com>2009-10-25 23:16:51 (GMT)
committerTarek Ziadé <ziade.tarek@gmail.com>2009-10-25 23:16:51 (GMT)
commitc76bceae1ab7cca8d1aabe2294c3b77bc1e8c8c8 (patch)
treeefa364ccaa988521e3a4d5cd3f23049c7c27ca08 /Lib/distutils
parentaa9f3d3dfbc650eadea253462986ab9ae76d2080 (diff)
downloadcpython-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.py5
-rw-r--r--Lib/distutils/command/install_lib.py6
-rw-r--r--Lib/distutils/errors.py2
-rw-r--r--Lib/distutils/tests/test_build_py.py16
-rw-r--r--Lib/distutils/tests/test_install_lib.py17
-rw-r--r--Lib/distutils/tests/test_util.py17
-rw-r--r--Lib/distutils/util.py4
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