You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/dev-java/jython/files/jython-2.5.2-distutils_byte...

86 lines
2.9 KiB

--- Lib/distutils/tests/test_build_py.py
+++ Lib/distutils/tests/test_build_py.py
@@ -92,6 +92,25 @@
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 = os.environ.get("PYTHONDONTWRITEBYTECODE")
+ os.environ["PYTHONDONTWRITEBYTECODE"] = "1"
+ try:
+ cmd.byte_compile([])
+ finally:
+ if old_dont_write_bytecode is None:
+ del os.environ["PYTHONDONTWRITEBYTECODE"]
+ else:
+ os.environ["PYTHONDONTWRITEBYTECODE"] = old_dont_write_bytecode
+
+ self.assertTrue('byte-compiling is disabled' in self.logs[0][1])
+
def test_suite():
return unittest.makeSuite(BuildPyTestCase)
--- Lib/distutils/util.py
+++ Lib/distutils/util.py
@@ -11,6 +11,7 @@
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
@@ -397,6 +398,9 @@
generated in indirect mode; unless you know what you're doing, leave
it set to None.
"""
+ # nothing is done if PYTHONDONTWRITEBYTECODE environment variable is set
+ if os.environ.get("PYTHONDONTWRITEBYTECODE") is not None:
+ 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
--- Lib/distutils/command/build_py.py
+++ Lib/distutils/command/build_py.py
@@ -418,6 +418,10 @@
def byte_compile (self, files):
+ if os.environ.get("PYTHONDONTWRITEBYTECODE") is not None:
+ self.warn('byte-compiling is disabled, skipping.')
+ return
+
from distutils.util import byte_compile
prefix = self.build_lib
if prefix[-1] != os.sep:
--- Lib/distutils/command/install_lib.py
+++ Lib/distutils/command/install_lib.py
@@ -121,6 +121,10 @@
return outfiles
def byte_compile (self, files):
+ if os.environ.get("PYTHONDONTWRITEBYTECODE") is not None:
+ self.warn('byte-compiling is disabled, skipping.')
+ return
+
from distutils.util import byte_compile
# Get the "--root" directory supplied to the "install" command,
--- Lib/distutils/errors.py
+++ Lib/distutils/errors.py
@@ -76,6 +76,8 @@
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):