summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-java/jython/files/jython-2.5.2-distutils_byte_compilation.patch')
-rw-r--r--dev-java/jython/files/jython-2.5.2-distutils_byte_compilation.patch85
1 files changed, 85 insertions, 0 deletions
diff --git a/dev-java/jython/files/jython-2.5.2-distutils_byte_compilation.patch b/dev-java/jython/files/jython-2.5.2-distutils_byte_compilation.patch
new file mode 100644
index 000000000000..db90e834f46c
--- /dev/null
+++ b/dev-java/jython/files/jython-2.5.2-distutils_byte_compilation.patch
@@ -0,0 +1,85 @@
+--- 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):