import os from distutils.core import Command, DEBUG from distutils.dep_util import newer from distutils import util class InstallSysconf(Command): command_name = 'install_sysconf' description = "install read-only host-specific data (configuration files)" user_options = [] def initialize_options(self): self.install_dir = None return def finalize_options(self): self.set_undefined_options('install', ('install_sysconf', 'install_dir')) self.sysconf_files = self.distribution.sysconf_files return def run(self): self.mkpath(self.install_dir) for dest, src in self.sysconf_files: dest = os.path.join(self.install_dir, util.convert_path(dest)) src = util.convert_path(src) if os.path.exists(dest) and newer(src, dest): # Save off the existing file self.warn('saving %r as %r' % (dest, dest + '.orig')) self.copy_file(dest, dest + '.orig') self.copy_file(util.convert_path(src), dest) return # -- Reporting methods --------------------------------------------- def get_source_files(self): sources = [] for dest, src in self.sysconf_files: sources.append(util.convert_path(src)) return sources def get_inputs(self): inputs = [] for dest, src in self.sysconf_files: inputs.append(util.convert_path(src)) return inputs def get_outputs(self): outputs = [] for dest, src in self.sysconf_files: dest = os.path.join(self.install_dir, util.convert_path(dest)) outputs.append(dest) return outputs