diff options
author | Greg Ward <gward@python.net> | 2000-09-23 01:20:19 (GMT) |
---|---|---|
committer | Greg Ward <gward@python.net> | 2000-09-23 01:20:19 (GMT) |
commit | f84fb660cbd7f66bacf2e58dbafd950f43f6e216 (patch) | |
tree | 42593b48be0d7b91e38d7de33806ebed03f8e0e2 | |
parent | 7b87c0e1bbf886808b0d5d689fee85d57f87b625 (diff) | |
download | cpython-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.py | 36 |
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 |