##// END OF EJS Templates
Simplified output stream management in ultratb....
Simplified output stream management in ultratb. This lets us have one less hack in the testing globalipapp code, as well as rationalizing the ultratb code a little more. There is now an ostream property for all output that can be used consistently.

File last commit:

r0:6f629fcc
r2852:6c926026
Show More
install_data_ext.py
80 lines | 3.0 KiB | text/x-python | PythonLexer
# install_data_ext.py
#
# Subclass of normal distutils install_data command to allow more
# configurable installation of data files.
import os
from distutils.command.install_data import install_data
from distutils.util import change_root, convert_path
class install_data_ext(install_data):
def initialize_options(self):
self.install_base = None
self.install_platbase = None
self.install_purelib = None
self.install_headers = None
self.install_lib = None
self.install_scripts = None
self.install_data = None
self.outfiles = []
self.root = None
self.force = 0
self.data_files = self.distribution.data_files
self.warn_dir = 1
def finalize_options(self):
self.set_undefined_options('install',
('root', 'root'),
('force', 'force'),
('install_base', 'install_base'),
('install_platbase',
'install_platbase'),
('install_purelib',
'install_purelib'),
('install_headers',
'install_headers'),
('install_lib', 'install_lib'),
('install_scripts',
'install_scripts'),
('install_data', 'install_data'))
def run(self):
"""
This is where the meat is. Basically the data_files list must
now be a list of tuples of 3 entries. The first
entry is one of 'base', 'platbase', etc, which indicates which
base to install from. The second entry is the path to install
too. The third entry is a list of files to install.
"""
for lof in self.data_files:
if lof[0]:
base = getattr(self, 'install_' + lof[0])
else:
base = getattr(self, 'install_base')
dir = convert_path(lof[1])
if not os.path.isabs(dir):
dir = os.path.join(base, dir)
elif self.root:
dir = change_root(self.root, dir)
self.mkpath(dir)
files = lof[2]
if len(files) == 0:
# If there are no files listed, the user must be
# trying to create an empty directory, so add the the
# directory to the list of output files.
self.outfiles.append(dir)
else:
# Copy files, adding them to the list of output files.
for f in files:
f = convert_path(f)
(out, _) = self.copy_file(f, dir)
#print "DEBUG: ", out # dbg
self.outfiles.append(out)
return self.outfiles