diff options
Diffstat (limited to 'Lib/distutils/command/bdist_packager.py')
-rw-r--r-- | Lib/distutils/command/bdist_packager.py | 227 |
1 files changed, 0 insertions, 227 deletions
diff --git a/Lib/distutils/command/bdist_packager.py b/Lib/distutils/command/bdist_packager.py deleted file mode 100644 index 1960425..0000000 --- a/Lib/distutils/command/bdist_packager.py +++ /dev/null @@ -1,227 +0,0 @@ -"""distutils.command.bdist_ packager - -Modified from bdist_dumb by Mark W. Alexander <slash@dotnetslash.net> - -Implements the Distutils 'bdist_packager' abstract command -to be subclassed by binary package creation commands. -""" - -__revision__ = "$Id: bdist_packager.py,v 0.1 2001/04/4 mwa" - -import os -from distutils.core import Command -from distutils.util import get_platform -from distutils.dir_util import create_tree, remove_tree -from distutils.file_util import write_file -from distutils.errors import * -from distutils import log -import string, sys - -class bdist_packager (Command): - - description = "abstract base for package manager specific bdist commands" - -# XXX update user_options - user_options = [ - ('bdist-base=', None, - "base directory for creating built distributions"), - ('pkg-dir=', None, - "base directory for creating binary packages (defaults to \"binary\" under "), - ('dist-dir=', 'd', - "directory to put final RPM files in " - "(and .spec files if --spec-only)"), - ('category=', None, - "Software category (packager dependent format)"), - ('revision=', None, - "package revision number"), - ('icon=', None, - "Package icon"), - ('subpackages=', None, - "Comma seperated list of seperately packaged trees"), - ('preinstall=', None, - "preinstall script (Bourne shell code)"), - ('postinstall=', None, - "postinstall script (Bourne shell code)"), - ('preremove=', None, - "preremove script (Bourne shell code)"), - ('postremove=', None, - "postremove script (Bourne shell code)"), - ('requires=', None, - "capabilities required by this package"), - ('keep-temp', 'k', - "don't clean up RPM build directory"), - ('control-only', None, - "Generate package control files and stop"), - ('no-autorelocate', None, - "Inhibit automatic relocation to installed site-packages"), - ] - - boolean_options = ['keep-temp', 'control-only', 'no_autorelocate'] - - def ensure_string_not_none (self,option,default=None): - val = getattr(self,option) - if val is not None: - return - Command.ensure_string(self,option,default) - val = getattr(self,option) - if val is None: - raise DistutilsOptionError, "'%s' must be provided" % option - - def ensure_script(self, arg): - if not arg: - return - try: - self.ensure_string(arg) - except: - try: - self.ensure_filename(arg) - except: - raise RuntimeError, "cannot decipher script option (%s)" % arg - - def write_script (self,path,attr,default=None): - """ write the script specified in attr to path. if attr is None, - write use default instead """ - val = getattr(self,attr) - if not val: - if not default: - return - else: - setattr(self,attr,default) - val = default - if val != "": - log.info('Creating %s script', attr) - self.execute(write_file, - (path, self.get_script(attr)), - "writing '%s'" % path) - - def get_binary_name(self): - py_ver = sys.version[0:string.find(sys.version,' ')] - return self.name + '-' + self.version + '-' + \ - self.revision + '-' + py_ver - - def get_script (self, attr): - # accept a script as a string ("line\012line\012..."), - # a filename, or a list - # XXX We could probably get away with copy_file, but I'm - # guessing this will be more flexible later on.... - val = getattr(self, attr) - if val is None: - return None - try: - os.stat(val) - # script is a file - ret = [] - f = open(val) - ret = string.split(f.read(), "\012"); - f.close() - except: - if type(val) == type(""): - # script is a string - ret = string.split(val, "\012") - elif type(val) == type([]): - # script is a list - ret = val - else: - raise RuntimeError, \ - "cannot figure out what to do with 'request' option (%s)" \ - % val - return ret - - - def initialize_options (self): - self.keep_temp = 0 - self.control_only = 0 - self.no_autorelocate = 0 - self.pkg_dir = None - self.plat_name = None - self.icon = None - self.requires = None - self.subpackages = None - self.category = None - self.revision = None - - # PEP 241 Metadata - self.name = None - self.version = None - #self.url = None - #self.author = None - #self.author_email = None - #self.maintainer = None - #self.maintainer_email = None - #self.description = None - #self.long_description = None - #self.licence = None - #self.platforms = None - #self.keywords = None - self.root_package = None - - # package installation scripts - self.preinstall = None - self.postinstall = None - self.preremove = None - self.postremove = None - # initialize_options() - - - def finalize_options (self): - - if self.pkg_dir is None: - bdist_base = self.get_finalized_command('bdist').bdist_base - self.pkg_dir = os.path.join(bdist_base, 'binary') - - if not self.plat_name: - self.plat = self.distribution.get_platforms() - if self.distribution.has_ext_modules(): - self.plat_name = [sys.platform,] - else: - self.plat_name = ["noarch",] - - d = self.distribution - self.ensure_string_not_none('name', d.get_name()) - self.ensure_string_not_none('version', d.get_version()) - self.ensure_string('category') - self.ensure_string('revision',"1") - #self.ensure_string('url',d.get_url()) - if type(self.distribution.packages) == type([]): - self.root_package=self.distribution.packages[0] - else: - self.root_package=self.name - self.ensure_string('root_package',self.root_package) - #self.ensure_string_list('keywords') - #self.ensure_string_not_none('author', d.get_author()) - #self.ensure_string_not_none('author_email', d.get_author_email()) - self.ensure_filename('icon') - #self.ensure_string_not_none('maintainer', d.get_maintainer()) - #self.ensure_string_not_none('maintainer_email', - #d.get_maintainer_email()) - #self.ensure_string_not_none('description', d.get_description()) - #self.ensure_string_not_none('long_description', d.get_long_description()) - #if self.long_description=='UNKNOWN': - #self.long_description=self.description - #self.ensure_string_not_none('license', d.get_license()) - self.ensure_string_list('requires') - self.ensure_filename('preinstall') - self.ensure_filename('postinstall') - self.ensure_filename('preremove') - self.ensure_filename('postremove') - - # finalize_options() - - - def run (self): - - raise RuntimeError, \ - "abstract method -- subclass %s must override" % self.__class__ - self.run_command('build') - - install = self.reinitialize_command('install', reinit_subcommands=1) - install.root = self.pkg_dir - - log.info("installing to %s", self.pkg_dir) - self.run_command('install') - if not self.keep_temp: - remove_tree(self.pkg_dir, dry_run=self.dry_run) - - # run() - -# class bdist_packager |