summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGregory P. Smith <greg@mad-scientist.com>2000-05-12 00:52:23 (GMT)
committerGregory P. Smith <greg@mad-scientist.com>2000-05-12 00:52:23 (GMT)
commitb2e3bb3d6aaf4ef04211b932c64ef9cd5adc56bb (patch)
treee8d4e539fef4c83ccbf22ee1169a8e21cc25ddc9
parentbb8c71d56370a97d2c9b5db0935475f1c99d422a (diff)
downloadcpython-b2e3bb3d6aaf4ef04211b932c64ef9cd5adc56bb.zip
cpython-b2e3bb3d6aaf4ef04211b932c64ef9cd5adc56bb.tar.gz
cpython-b2e3bb3d6aaf4ef04211b932c64ef9cd5adc56bb.tar.bz2
Patch from Bastien Kleineidam:
adds the 'install_data' and 'install_scripts' commands; these two are trivial thanks to the 'install_misc' base class in cmd.py. (Minor tweaks and commentary by me; the code is untested so far.)
-rw-r--r--Lib/distutils/cmd.py30
-rw-r--r--Lib/distutils/command/__init__.py2
-rw-r--r--Lib/distutils/command/install.py5
-rw-r--r--Lib/distutils/command/install_data.py14
-rw-r--r--Lib/distutils/command/install_scripts.py16
-rw-r--r--Lib/distutils/dist.py2
6 files changed, 68 insertions, 1 deletions
diff --git a/Lib/distutils/cmd.py b/Lib/distutils/cmd.py
index abb23c9..3937344 100644
--- a/Lib/distutils/cmd.py
+++ b/Lib/distutils/cmd.py
@@ -344,5 +344,35 @@ class Command:
# class Command
+class install_misc (Command):
+ """Common base class for installing some files in a subdirectory.
+ Currently used by install_data and install_scripts.
+ """
+
+ user_options = [('install-dir=', 'd', "directory to install the files to")]
+
+ def initialize_options (self):
+ self.install_dir = None
+ self.outfiles = None
+
+ def _install_dir_from(self, dirname):
+ self.set_undefined_options('install', (dirname, 'install_dir'))
+
+ def _copydata(self, filelist):
+ self.outfiles = []
+ if not filelist:
+ return
+ self.mkpath(self.install_dir)
+ for f in filelist:
+ self.outfiles.append(self.copy_file (f, self.install_dir))
+
+ def _outputdata(self, filelist):
+ if self.outfiles is not None:
+ return self.outfiles
+ # XXX de-lambda-fy
+ return map(lambda x: os.path.join(self.install_dir, x), filelist)
+
+
+
if __name__ == "__main__":
print "ok"
diff --git a/Lib/distutils/command/__init__.py b/Lib/distutils/command/__init__.py
index 385330b..573ae51 100644
--- a/Lib/distutils/command/__init__.py
+++ b/Lib/distutils/command/__init__.py
@@ -11,6 +11,8 @@ __all__ = ['build',
'build_clib',
'install',
'install_lib',
+ 'install_scripts',
+ 'install_data',
'clean',
'sdist',
'bdist',
diff --git a/Lib/distutils/command/install.py b/Lib/distutils/command/install.py
index c70ed9a..3f6fa33 100644
--- a/Lib/distutils/command/install.py
+++ b/Lib/distutils/command/install.py
@@ -90,7 +90,10 @@ class install (Command):
# (func, command) where 'func' is a function to call that returns
# true if 'command' (the sub-command name, a string) needs to be
# run. If 'func' is None, assume that 'command' must always be run.
- sub_commands = [(None, 'install_lib')]
+ sub_commands = [(None, 'install_lib'),
+ (None, 'install_scripts'),
+ (None, 'install_data'),
+ ]
def initialize_options (self):
diff --git a/Lib/distutils/command/install_data.py b/Lib/distutils/command/install_data.py
new file mode 100644
index 0000000..f86d95e
--- /dev/null
+++ b/Lib/distutils/command/install_data.py
@@ -0,0 +1,14 @@
+from distutils.cmd import install_misc
+
+class install_data (install_misc):
+
+ description = "install data files"
+
+ def finalize_options (self):
+ self._install_dir_from('install_data')
+
+ def run (self):
+ self._copydata(self.distribution.data)
+
+ def get_outputs (self):
+ return self._outputdata(self.distribution.data)
diff --git a/Lib/distutils/command/install_scripts.py b/Lib/distutils/command/install_scripts.py
new file mode 100644
index 0000000..665208e
--- /dev/null
+++ b/Lib/distutils/command/install_scripts.py
@@ -0,0 +1,16 @@
+from distutils.cmd import install_misc
+
+class install_scripts(install_misc):
+
+ description = "install scripts"
+ # XXX needed?
+ user_options = [('install-dir=', 'd', "directory to install to")]
+
+ def finalize_options (self):
+ self._install_dir_from('install_scripts')
+
+ def run (self):
+ self._copydata(self.distribution.scripts)
+
+ def get_outputs(self):
+ return self._outputdata(self.distribution.scripts)
diff --git a/Lib/distutils/dist.py b/Lib/distutils/dist.py
index a0c6c9e..998cff7 100644
--- a/Lib/distutils/dist.py
+++ b/Lib/distutils/dist.py
@@ -154,6 +154,8 @@ class Distribution:
self.ext_package = None
self.include_dirs = None
self.extra_path = None
+ self.scripts = None
+ self.data = None
# And now initialize bookkeeping stuff that can't be supplied by
# the caller at all. 'command_obj' maps command names to