[Python-checkins] r75705 - in python/branches/release31-maint: Lib/distutils/command/build_py.py Lib/distutils/command/install_lib.py Lib/distutils/errors.py Lib/distutils/tests/test_build_py.py Lib/distutils/tests/test_install_lib.py Lib/distutils/tests/test_util.py Lib/distutils/util.py Misc/NEWS

tarek.ziade python-checkins at python.org
Mon Oct 26 00:16:52 CET 2009


Author: tarek.ziade
Date: Mon Oct 26 00:16:51 2009
New Revision: 75705

Log:
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
  ........
................


Modified:
   python/branches/release31-maint/   (props changed)
   python/branches/release31-maint/Lib/distutils/command/build_py.py
   python/branches/release31-maint/Lib/distutils/command/install_lib.py
   python/branches/release31-maint/Lib/distutils/errors.py
   python/branches/release31-maint/Lib/distutils/tests/test_build_py.py
   python/branches/release31-maint/Lib/distutils/tests/test_install_lib.py
   python/branches/release31-maint/Lib/distutils/tests/test_util.py
   python/branches/release31-maint/Lib/distutils/util.py
   python/branches/release31-maint/Misc/NEWS

Modified: python/branches/release31-maint/Lib/distutils/command/build_py.py
==============================================================================
--- python/branches/release31-maint/Lib/distutils/command/build_py.py	(original)
+++ python/branches/release31-maint/Lib/distutils/command/build_py.py	Mon Oct 26 00:16:51 2009
@@ -5,6 +5,7 @@
 __revision__ = "$Id$"
 
 import sys, os
+import sys
 from glob import glob
 
 from distutils.core import Command
@@ -369,6 +370,10 @@
                 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:

Modified: python/branches/release31-maint/Lib/distutils/command/install_lib.py
==============================================================================
--- python/branches/release31-maint/Lib/distutils/command/install_lib.py	(original)
+++ python/branches/release31-maint/Lib/distutils/command/install_lib.py	Mon Oct 26 00:16:51 2009
@@ -6,6 +6,8 @@
 __revision__ = "$Id$"
 
 import os
+import sys
+
 from distutils.core import Command
 from distutils.errors import DistutilsOptionError
 
@@ -115,6 +117,10 @@
         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,

Modified: python/branches/release31-maint/Lib/distutils/errors.py
==============================================================================
--- python/branches/release31-maint/Lib/distutils/errors.py	(original)
+++ python/branches/release31-maint/Lib/distutils/errors.py	Mon Oct 26 00:16:51 2009
@@ -74,6 +74,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):

Modified: python/branches/release31-maint/Lib/distutils/tests/test_build_py.py
==============================================================================
--- python/branches/release31-maint/Lib/distutils/tests/test_build_py.py	(original)
+++ python/branches/release31-maint/Lib/distutils/tests/test_build_py.py	Mon Oct 26 00:16:51 2009
@@ -89,6 +89,22 @@
             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)
 

Modified: python/branches/release31-maint/Lib/distutils/tests/test_install_lib.py
==============================================================================
--- python/branches/release31-maint/Lib/distutils/tests/test_install_lib.py	(original)
+++ python/branches/release31-maint/Lib/distutils/tests/test_install_lib.py	Mon Oct 26 00:16:51 2009
@@ -31,6 +31,8 @@
         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 @@
         # 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)

Modified: python/branches/release31-maint/Lib/distutils/tests/test_util.py
==============================================================================
--- python/branches/release31-maint/Lib/distutils/tests/test_util.py	(original)
+++ python/branches/release31-maint/Lib/distutils/tests/test_util.py	Mon Oct 26 00:16:51 2009
@@ -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 @@
                   '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)
 

Modified: python/branches/release31-maint/Lib/distutils/util.py
==============================================================================
--- python/branches/release31-maint/Lib/distutils/util.py	(original)
+++ python/branches/release31-maint/Lib/distutils/util.py	Mon Oct 26 00:16:51 2009
@@ -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
@@ -443,6 +444,9 @@
     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

Modified: python/branches/release31-maint/Misc/NEWS
==============================================================================
--- python/branches/release31-maint/Misc/NEWS	(original)
+++ python/branches/release31-maint/Misc/NEWS	Mon Oct 26 00:16:51 2009
@@ -34,6 +34,9 @@
 Library
 -------
 
+- Issue #7071: byte-compilation in Distutils is now done with respect to
+  sys.dont_write_bytecode.
+
 - Issue #7099: Decimal.is_normal now returns True for numbers with exponent
   larger than emax.
 


More information about the Python-checkins mailing list