summaryrefslogtreecommitdiff
path: root/distutils/command/install.py
diff options
context:
space:
mode:
Diffstat (limited to 'distutils/command/install.py')
-rw-r--r--distutils/command/install.py102
1 files changed, 102 insertions, 0 deletions
diff --git a/distutils/command/install.py b/distutils/command/install.py
new file mode 100644
index 000000000..5f11b3d22
--- /dev/null
+++ b/distutils/command/install.py
@@ -0,0 +1,102 @@
+from types import StringType
+from distutils.command.install import *
+from distutils.command.install import install as old_install
+from distutils.util import convert_path
+from distutils.file_util import write_file
+from distutils.errors import DistutilsOptionError
+from scipy_distutils import log
+
+#install support for Numeric.pth setup
+
+def _quote_name_when_has_spaces(name):
+ if ' ' in name and name[0] not in ['"',"'"]:
+ name = '"%s"' % (name)
+ return name
+
+class install(old_install):
+
+ def run (self):
+
+ # Obviously have to build before we can install
+ if not self.skip_build:
+ self.run_command('build')
+
+ # Run all sub-commands (at least those that need to be run)
+ for cmd_name in self.get_sub_commands():
+ self.run_command(cmd_name)
+
+ if self.path_file:
+ self.create_path_file()
+
+ # write list of installed files, if requested.
+ if self.record:
+ outputs = self.get_outputs()
+ if self.root: # strip any package prefix
+ root_len = len(self.root)
+ for counter in xrange(len(outputs)):
+ outputs[counter] = outputs[counter][root_len:]
+ outputs = map(_quote_name_when_has_spaces,outputs)
+ self.execute(write_file,
+ (self.record, outputs),
+ "writing list of installed files to '%s'" %
+ self.record)
+
+ sys_path = map(os.path.normpath, sys.path)
+ sys_path = map(os.path.normcase, sys_path)
+ install_lib = os.path.normcase(os.path.normpath(self.install_lib))
+ if (self.warn_dir and
+ not (self.path_file and self.install_path_file) and
+ install_lib not in sys_path):
+ log.debug(("modules installed to '%s', which is not in "
+ "Python's module search path (sys.path) -- "
+ "you'll have to change the search path yourself"),
+ self.install_lib)
+
+ # run ()
+
+
+ def finalize_options (self):
+ old_install.finalize_options(self)
+ self.install_lib = self.install_libbase
+
+ def handle_extra_path (self):
+ if self.extra_path is None:
+ self.extra_path = self.distribution.extra_path
+
+ if self.extra_path is not None:
+ if type(self.extra_path) is StringType:
+ self.extra_path = string.split(self.extra_path, ',')
+ if len(self.extra_path) == 1:
+ path_file = extra_dirs = self.extra_path[0]
+ elif len(self.extra_path) == 2:
+ (path_file, extra_dirs) = self.extra_path
+ else:
+ raise DistutilsOptionError, \
+ "'extra_path' option must be a list, tuple, or " + \
+ "comma-separated string with 1 or 2 elements"
+
+ # convert to local form in case Unix notation used (as it
+ # should be in setup scripts)
+ extra_dirs = convert_path(extra_dirs)
+
+ else:
+ path_file = None
+ extra_dirs = ''
+
+ # XXX should we warn if path_file and not extra_dirs? (in which
+ # case the path file would be harmless but pointless)
+ self.path_file = path_file
+ self.extra_dirs = ''
+ self.pth_file = extra_dirs
+
+ # handle_extra_path ()
+
+ def create_path_file (self):
+ filename = os.path.join(self.install_libbase,
+ self.path_file + ".pth")
+ if self.install_path_file:
+ self.execute(write_file,
+ (filename, [self.pth_file]),
+ "creating %s" % filename)
+ else:
+ log.warn("path file '%s' not created" % filename)