diff options
author | Greg Ward <gward@python.net> | 1999-05-02 21:39:13 (GMT) |
---|---|---|
committer | Greg Ward <gward@python.net> | 1999-05-02 21:39:13 (GMT) |
commit | 0f72695da324d4cc24ebbeb4873c23d01f97f861 (patch) | |
tree | 4ea1e1c5332f2957f923c49e5b43d1f921c9fb6f /Lib/distutils/command/install_py.py | |
parent | 85460a58f8935b56ad5fa3aae5c3545a444d0ace (diff) | |
download | cpython-0f72695da324d4cc24ebbeb4873c23d01f97f861.zip cpython-0f72695da324d4cc24ebbeb4873c23d01f97f861.tar.gz cpython-0f72695da324d4cc24ebbeb4873c23d01f97f861.tar.bz2 |
Rearranged things so that compilation of .py files is the responsibility
of the 'install_py' command rather than 'build_py'. Obviously, this
meant that the 'build_py' and 'install_py' modules had to change; less
obviously, so did 'install' and 'build', since these higher-level
commands must make options available to control the lower-level
commands, and some compilation-related options had to migrate with the
code.
Diffstat (limited to 'Lib/distutils/command/install_py.py')
-rw-r--r-- | Lib/distutils/command/install_py.py | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/Lib/distutils/command/install_py.py b/Lib/distutils/command/install_py.py index 22ab71e..f147af4 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 |