diff --git a/Lib/distutils/command/build.py b/Lib/distutils/command/build.py index 788609282d1..d0e939e9b64 100644 --- a/Lib/distutils/command/build.py +++ b/Lib/distutils/command/build.py @@ -15,10 +15,6 @@ class Build (Command): options = [('basedir=', 'b', "base directory for build library"), ('libdir=', 'l', "directory for platform-shared files"), ('platdir=', 'p', "directory for platform-specific files"), - - # Flags for 'build_py' - ('compile-py', None, "compile .py to .pyc"), - ('optimize-py', None, "compile .py to .pyo (optimized)"), ] def set_default_options (self): @@ -28,9 +24,6 @@ class Build (Command): self.libdir = None self.platdir = None - self.compile_py = 1 - self.optimize_py = 1 - def set_final_options (self): # 'libdir' and 'platdir' just default to 'lib' and 'plat' under # the base build directory diff --git a/Lib/distutils/command/build_py.py b/Lib/distutils/command/build_py.py index 0ed8486ea05..d956eef396b 100644 --- a/Lib/distutils/command/build_py.py +++ b/Lib/distutils/command/build_py.py @@ -15,21 +15,15 @@ from distutils.util import mkpath, newer, make_file, copy_file class BuildPy (Command): options = [('dir=', 'd', "directory for platform-shared files"), - ('compile', 'c', "compile .py to .pyc"), - ('optimize', 'o', "compile .py to .pyo (optimized)"), ] def set_default_options (self): self.dir = None - self.compile = 1 - self.optimize = 1 def set_final_options (self): self.set_undefined_options ('build', - ('libdir', 'dir'), - ('compile_py', 'compile'), - ('optimize_py', 'optimize')) + ('libdir', 'dir')) def run (self): @@ -88,25 +82,5 @@ class BuildPy (Command): created[outdir] = 1 self.copy_file (infiles[i], outfiles[i]) - - # (Optionally) compile .py to .pyc - # XXX hey! we can't control whether we optimize or not; that's up - # to the invocation of the current Python interpreter (at least - # according to the py_compile docs). That sucks. - - if self.compile: - from py_compile import compile - - for f in outfiles: - # XXX can't assume this filename mapping! - out_fn = string.replace (f, '.py', '.pyc') - - self.make_file (f, out_fn, compile, (f,), - "compiling %s -> %s" % (f, out_fn), - "compilation of %s skipped" % f) - - # XXX ignore self.optimize for now, since we don't really know if - # we're compiling optimally or not, and couldn't pick what to do - # even if we did know. ;-( # end class BuildPy diff --git a/Lib/distutils/command/install.py b/Lib/distutils/command/install.py index 1f457807e18..ec73b1c1a86 100644 --- a/Lib/distutils/command/install.py +++ b/Lib/distutils/command/install.py @@ -43,6 +43,9 @@ class Install (Command): ('install-html=', None, "directory for HTML documentation"), ('install-info=', None, "directory for GNU info files"), + # Flags for 'build_py' + ('compile-py', None, "compile .py to .pyc"), + ('optimize-py', None, "compile .py to .pyo (optimized)"), ] def set_default_options (self): @@ -74,6 +77,9 @@ class Install (Command): self.install_html = None self.install_info = None + self.compile_py = 1 + self.optimize_py = 1 + def set_final_options (self): diff --git a/Lib/distutils/command/install_lib.py b/Lib/distutils/command/install_lib.py index 22ab71e7999..f147af47f30 100644 --- a/Lib/distutils/command/install_lib.py +++ b/Lib/distutils/command/install_lib.py @@ -2,19 +2,25 @@ __rcsid__ = "$Id$" -import sys +import sys, string from distutils.core import Command from distutils.util import copy_tree class InstallPy (Command): options = [('dir=', 'd', "directory to install to"), - ('build-dir=' 'b', "build directory (where to install from)")] + ('build-dir=' 'b', "build directory (where to install from)"), + ('compile', 'c', "compile .py to .pyc"), + ('optimize', 'o', "compile .py to .pyo (optimized)"), + ] + def set_default_options (self): # let the 'install' command dictate our installation directory self.dir = None self.build_dir = None + self.compile = 1 + self.optimize = 1 def set_final_options (self): # If we don't have a 'dir' value, we'll have to ask the 'install' @@ -25,7 +31,10 @@ class InstallPy (Command): self.set_undefined_options ('install', ('build_lib', 'build_dir'), - ('install_site_lib', 'dir')) + ('install_site_lib', 'dir'), + ('compile_py', 'compile'), + ('optimize_py', 'optimize')) + def run (self): @@ -33,8 +42,28 @@ class InstallPy (Command): # Dump entire contents of the build directory to the installation # directory (that's the beauty of having a build directory!) - self.copy_tree (self.build_dir, self.dir) + outfiles = self.copy_tree (self.build_dir, self.dir) + # (Optionally) compile .py to .pyc + # XXX hey! we can't control whether we optimize or not; that's up + # to the invocation of the current Python interpreter (at least + # according to the py_compile docs). That sucks. + + if self.compile: + from py_compile import compile + + for f in outfiles: + # XXX can't assume this filename mapping! + out_fn = string.replace (f, '.py', '.pyc') + + self.make_file (f, out_fn, compile, (f,), + "compiling %s -> %s" % (f, out_fn), + "compilation of %s skipped" % f) + + # XXX ignore self.optimize for now, since we don't really know if + # we're compiling optimally or not, and couldn't pick what to do + # even if we did know. ;-( + # run () # class InstallPy diff --git a/Lib/distutils/command/install_py.py b/Lib/distutils/command/install_py.py index 22ab71e7999..f147af47f30 100644 --- a/Lib/distutils/command/install_py.py +++ b/Lib/distutils/command/install_py.py @@ -2,19 +2,25 @@ __rcsid__ = "$Id$" -import sys +import sys, string from distutils.core import Command from distutils.util import copy_tree class InstallPy (Command): options = [('dir=', 'd', "directory to install to"), - ('build-dir=' 'b', "build directory (where to install from)")] + ('build-dir=' 'b', "build directory (where to install from)"), + ('compile', 'c', "compile .py to .pyc"), + ('optimize', 'o', "compile .py to .pyo (optimized)"), + ] + def set_default_options (self): # let the 'install' command dictate our installation directory self.dir = None self.build_dir = None + self.compile = 1 + self.optimize = 1 def set_final_options (self): # If we don't have a 'dir' value, we'll have to ask the 'install' @@ -25,7 +31,10 @@ class InstallPy (Command): self.set_undefined_options ('install', ('build_lib', 'build_dir'), - ('install_site_lib', 'dir')) + ('install_site_lib', 'dir'), + ('compile_py', 'compile'), + ('optimize_py', 'optimize')) + def run (self): @@ -33,8 +42,28 @@ class InstallPy (Command): # Dump entire contents of the build directory to the installation # directory (that's the beauty of having a build directory!) - self.copy_tree (self.build_dir, self.dir) + outfiles = self.copy_tree (self.build_dir, self.dir) + # (Optionally) compile .py to .pyc + # XXX hey! we can't control whether we optimize or not; that's up + # to the invocation of the current Python interpreter (at least + # according to the py_compile docs). That sucks. + + if self.compile: + from py_compile import compile + + for f in outfiles: + # XXX can't assume this filename mapping! + out_fn = string.replace (f, '.py', '.pyc') + + self.make_file (f, out_fn, compile, (f,), + "compiling %s -> %s" % (f, out_fn), + "compilation of %s skipped" % f) + + # XXX ignore self.optimize for now, since we don't really know if + # we're compiling optimally or not, and couldn't pick what to do + # even if we did know. ;-( + # run () # class InstallPy