summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Ward <gward@python.net>2000-09-23 01:20:19 (GMT)
committerGreg Ward <gward@python.net>2000-09-23 01:20:19 (GMT)
commitf84fb660cbd7f66bacf2e58dbafd950f43f6e216 (patch)
tree42593b48be0d7b91e38d7de33806ebed03f8e0e2
parent7b87c0e1bbf886808b0d5d689fee85d57f87b625 (diff)
downloadcpython-f84fb660cbd7f66bacf2e58dbafd950f43f6e216.zip
cpython-f84fb660cbd7f66bacf2e58dbafd950f43f6e216.tar.gz
cpython-f84fb660cbd7f66bacf2e58dbafd950f43f6e216.tar.bz2
Split 'run()' up into 'build()', 'install()', and 'bytecompile()' (for
easier extensibility).
-rw-r--r--Lib/distutils/command/install_lib.py36
1 files changed, 28 insertions, 8 deletions
diff --git a/Lib/distutils/command/install_lib.py b/Lib/distutils/command/install_lib.py
index dac644e..b104fa9 100644
--- a/Lib/distutils/command/install_lib.py
+++ b/Lib/distutils/command/install_lib.py
@@ -46,31 +46,46 @@ class install_lib (Command):
def run (self):
# Make sure we have built everything we need first
+ self.build()
+
+ # Install everything: simply dump the entire contents of the build
+ # directory to the installation directory (that's the beauty of
+ # having a build directory!)
+ outfiles = self.install()
+
+ # (Optionally) compile .py to .pyc
+ self.bytecompile(outfiles)
+
+ # run ()
+
+
+ # -- Top-level worker functions ------------------------------------
+ # (called from 'run()')
+
+ def build (self):
if not self.skip_build:
if self.distribution.has_pure_modules():
self.run_command('build_py')
if self.distribution.has_ext_modules():
self.run_command('build_ext')
-
- # Install everything: simply dump the entire contents of the build
- # directory to the installation directory (that's the beauty of
- # having a build directory!)
+
+ def install (self):
if os.path.isdir(self.build_dir):
outfiles = self.copy_tree(self.build_dir, self.install_dir)
else:
self.warn("'%s' does not exist -- no Python modules to install" %
self.build_dir)
return
+ return outfiles
- # (Optionally) compile .py to .pyc
+ def bytecompile (self, files):
# 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:
+ for f in files:
# only compile the file if it is actually a .py file
if f[-3:] == '.py':
out_fn = f + (__debug__ and "c" or "o")
@@ -79,9 +94,10 @@ class install_lib (Command):
skip_msg = "skipping byte-compilation of %s" % f
self.make_file(f, out_fn, compile, (f,),
compile_msg, skip_msg)
- # run ()
+ # -- Utility methods -----------------------------------------------
+
def _mutate_outputs (self, has_any, build_cmd, cmd_option, output_dir):
if not has_any:
@@ -108,6 +124,10 @@ class install_lib (Command):
return bytecode_files
+
+ # -- External interface --------------------------------------------
+ # (called by outsiders)
+
def get_outputs (self):
"""Return the list of files that would be installed if this command
were actually run. Not affected by the "dry-run" flag or whether