diff options
Diffstat (limited to 'Lib/distutils/command/install_lib.py')
-rw-r--r-- | Lib/distutils/command/install_lib.py | 37 |
1 files changed, 33 insertions, 4 deletions
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 |