summaryrefslogtreecommitdiffstats
path: root/Lib/distutils/command/bdist_sdux.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/distutils/command/bdist_sdux.py')
-rw-r--r--Lib/distutils/command/bdist_sdux.py302
1 files changed, 0 insertions, 302 deletions
diff --git a/Lib/distutils/command/bdist_sdux.py b/Lib/distutils/command/bdist_sdux.py
deleted file mode 100644
index 875f3d8..0000000
--- a/Lib/distutils/command/bdist_sdux.py
+++ /dev/null
@@ -1,302 +0,0 @@
-"""distutils.command.bdist_pkgtool
-
-Implements the Distutils 'bdist_sdux' command to create HP-UX
-swinstall depot.
-"""
-
-# Mark Alexander <slash@dotnetslash.net>
-
-__revision__ = "$Id: bdist_sdux.py,v 0.2 "
-import os, string
-from types import *
-from distutils.util import get_platform
-from distutils.file_util import write_file
-from distutils.errors import *
-from distutils.command import bdist_packager
-from distutils import log
-import sys
-from commands import getoutput
-
-DEFAULT_CHECKINSTALL="""#!/bin/sh
-/usr/bin/which python 2>&1 >/dev/null
-if [ $? -ne 0 ]; then
- echo "ERROR: Python must be on your PATH" &>2
- echo "ERROR: (You may need to link it to /usr/bin) " &>2
- exit 1
-fi
-PY_DIR=`python -c "import sys;print '%s/lib/python%s' % (sys.exec_prefix,sys.version[0:3])" #2>/dev/null`
-PY_PKG_DIR=`python -c "import sys;print '%s/lib/python%s/site-packages' % (sys.exec_prefix,sys.version[0:3])" #2>/dev/null`
-PY_LIB_DIR=`dirname $PY_PKG_DIR`
-
-if [ "`dirname ${SW_LOCATION}`" = "__DISTUTILS_PKG_DIR__" ]; then
- # swinstall to default location
- if [ "${PY_PKG_DIR}" != "__DISTUTILS_PKG_DIR__" ]; then
- echo "ERROR: " &>2
- echo "ERROR: Python is not installed where this package expected!" &>2
- echo "ERROR: You need to manually relocate this package to your python installation." &>2
- echo "ERROR: " &>2
- echo "ERROR: Re-run swinstall specifying the product name:location, e.g.:" &>2
- echo "ERROR: " &>2
- echo "ERROR: swinstall -s [source] __DISTUTILS_NAME__:${PY_PKG_DIR}/__DISTUTILS_DIRNAME__" &>2
- echo "ERROR: " &>2
- echo "ERROR: to relocate this package to match your python installation" &>2
- echo "ERROR: " &>2
- exit 1
- fi
-else
- if [ "`dirname ${SW_LOCATION}`" != "${PY_PKG_DIR}" -a "`dirname ${SWLOCATION}`" != "${PY_LIB_DIR}" ]; then
- echo "WARNING: " &>2
- echo "WARNING: Package is being installed outside the 'normal' python search path!" &>2
- echo "WARNING: Add ${SW_LOCATION} to PYTHONPATH to use this package" &>2
- echo "WARNING: " &>2
- fi
-fi
-"""
-
-DEFAULT_POSTINSTALL="""#!/bin/sh
-/usr/bin/which python 2>&1 >/dev/null
-if [ $? -ne 0 ]; then
- echo "ERROR: Python must be on your PATH" &>2
- echo "ERROR: (You may need to link it to /usr/bin) " &>2
- exit 1
-fi
-python -c "import compileall;compileall.compile_dir(\\"${SW_LOCATION}\\")"
-"""
-
-DEFAULT_PREREMOVE="""#!/bin/sh
-# remove compiled bytecode files
-find ${SW_LOCATION} -name "*.pyc" -exec rm {} \;
-find ${SW_LOCATION} -name "*.pyo" -exec rm {} \;
-"""
-
-DEFAULT_POSTREMOVE="""#!/bin/sh
-if [ `find ${SW_LOCATION} ! -type d | wc -l` -eq 0 ]; then
- # remove if there's nothing but empty directories left
- rm -rf ${SW_LOCATION}
-fi
-"""
-
-class bdist_sdux(bdist_packager.bdist_packager):
-
- description = "create an HP swinstall depot"
-
- user_options = bdist_packager.bdist_packager.user_options + [
- #('revision=', None,
- #"package revision number (PSTAMP)"),
- ('keep-permissions', None,
- "Don't reset permissions and ownership to root/bin"), # XXX
- ('corequisites=', None,
- "corequisites"), # XXX
- ('prerequisites=', None,
- "prerequisites"), # XXX
- #('category=', None,
- #"Software category"),
- ('checkinstall=', None, # XXX ala request
- "checkinstall script (Bourne shell code)"),
- ('configure=', None, # XXX
- "configure script (Bourne shell code)"),
- ('unconfigure=', None, # XXX
- "unconfigure script (Bourne shell code)"),
- ('verify=', None, # XXX
- "verify script (Bourne shell code)"),
- ('unpreinstall=', None, # XXX
- "unpreinstall script (Bourne shell code)"),
- ('unpostinstall=', None, # XXX
- "unpostinstall script (Bourne shell code)"),
- ]
-
- boolean_options = ['keep-permissions']
-
- def initialize_options (self):
- bdist_packager.bdist_packager.initialize_options(self)
- self.corequisites = None
- self.prerequesites = None
- self.checkinstall = None
- self.configure = None
- self.unconfigure = None
- self.verify = None
- self.unpreinstall = None
- self.unpostinstall = None
- # More
- self.copyright = None
- self.readme = None
- self.machine_type = None
- self.os_name = None
- self.os_release = None
- self.directory = None
- self.readme = None
- self.copyright = None
- self.architecture= None
- self.keep_permissions= None
- options = self.distribution.get_option_dict('bdist_packager')
- for key in options.keys():
- setattr(self,key,options[key][1])
-
- # initialize_options()
-
-
- def finalize_options (self):
- global DEFAULT_CHECKINSTALL, DEFAULT_POSTINSTALL
- global DEFAULT_PREREMOVE, DEFAULT_POSTREMOVE
- if self.pkg_dir==None:
- dist_dir = self.get_finalized_command('bdist').dist_dir
- self.pkg_dir = os.path.join(dist_dir, "sdux")
- self.ensure_script('corequisites')
- self.ensure_script('prerequesites')
- self.ensure_script('checkinstall')
- self.ensure_script('configure')
- self.ensure_script('unconfigure')
- self.ensure_script('verify')
- self.ensure_script('unpreinstall')
- self.ensure_script('unpostinstall')
- self.ensure_script('copyright')
- self.ensure_script('readme')
- self.ensure_string('machine_type','*')
- if not self.__dict__.has_key('platforms'):
- # This is probably HP, but if it's not, use sys.platform
- if sys.platform[0:5] == "hp-ux":
- self.platforms = "HP-UX"
- else:
- self.platforms = string.upper(sys.platform)
- else:
- # we can only handle one
- self.platforms=string.join(self.platforms[0])
- self.ensure_string('os_release','*')
- self.ensure_string('directory','%s/lib/python%s/site-packages' % \
- (sys.exec_prefix, sys.version[0:3]))
- bdist_packager.bdist_packager.finalize_options(self)
- DEFAULT_CHECKINSTALL = string.replace(DEFAULT_CHECKINSTALL,
- "__DISTUTILS_NAME__", self.name)
- DEFAULT_CHECKINSTALL = string.replace(DEFAULT_CHECKINSTALL,
- "__DISTUTILS_DIRNAME__", self.root_package)
- DEFAULT_CHECKINSTALL = string.replace(DEFAULT_CHECKINSTALL,
- "__DISTUTILS_PKG_DIR__", self.directory)
- DEFAULT_POSTINSTALL = string.replace(DEFAULT_POSTINSTALL,
- "__DISTUTILS_DIRNAME__", self.root_package)
- #DEFAULT_PREREMOVE = string.replace(DEFAULT_PREREMOVE,
- #"__DISTUTILS_NAME__", self.root_package)
- #DEFAULT_POSTREMOVE = string.replace(DEFAULT_POSTREMOVE,
- #"__DISTUTILS_NAME__", self.root_package)
- # finalize_options()
-
- def run (self):
- # make directories
- self.mkpath(self.pkg_dir)
- psf_path = os.path.join(self.pkg_dir,
- "%s.psf" % self.get_binary_name())
- # build package
- log.info('Building package')
- self.run_command('build')
- log.info('Creating psf file')
- self.execute(write_file,
- (psf_path,
- self._make_control_file()),
- "writing '%s'" % psf_path)
- if self.control_only: # stop if requested
- return
-
- log.info('Creating package')
- spawn_cmd = ['swpackage', '-s']
- spawn_cmd.append(psf_path)
- spawn_cmd.append('-x')
- spawn_cmd.append('target_type=tape')
- spawn_cmd.append('@')
- spawn_cmd.append(self.pkg_dir+"/"+self.get_binary_name()+'.depot')
- self.spawn(spawn_cmd)
-
- # run()
-
-
- def _make_control_file(self):
- # Generate a psf file and return it as list of strings (one per line).
- # definitions and headers
- title = "%s %s" % (self.maintainer,self.maintainer_email)
- title=title[0:80]
- #top=self.distribution.packages[0]
- psf_file = [
- 'vendor', # Vendor information
- ' tag %s' % "DISTUTILS",
- ' title %s' % title,
- ' description Distutils package maintainer (%s)' % self.license,
- 'end', # end of vendor
- 'product', # Product information
- ' tag %s' % self.name,
- ' title %s' % self.description,
- ' description %s' % self.description,
- ' revision %s' % self.version,
- ' architecture %s' % self.platforms,
- ' machine_type %s' % self.machine_type,
- ' os_name %s' % self.platforms,
- ' os_release %s' % self.os_release,
- ' directory %s' % self.directory + "/" + self.root_package,
- ]
-
- self.write_script(os.path.join(self.pkg_dir, "checkinstall"),
- 'checkinstall',DEFAULT_CHECKINSTALL)
- psf_file.extend([' checkinstall %s/checkinstall' % self.pkg_dir])
- self.write_script(os.path.join(self.pkg_dir, "postinstall"),
- 'postinstall',DEFAULT_POSTINSTALL)
- psf_file.extend([' postinstall %s/postinstall' % self.pkg_dir])
- self.write_script(os.path.join(self.pkg_dir, "preremove"),
- 'preremove',DEFAULT_PREREMOVE)
- psf_file.extend([' preremove %s/preremove' % self.pkg_dir])
- self.write_script(os.path.join(self.pkg_dir, "postremove"),
- 'postremove',DEFAULT_POSTREMOVE)
- psf_file.extend([' postremove %s/postremove' % self.pkg_dir])
- if self.preinstall:
- self.write_script(self.pkg_dir+"/preinstall", 'preinstall', None)
- psf_file.extend([' preinstall %s/preinstall' % self.pkg_dir])
- if self.configure:
- self.write_script(self.pkg_dir+"/configure", 'configure', None)
- psf_file.extend([' configure %s/configure' % self.pkg_dir])
- if self.unconfigure:
- self.write_script(self.pkg_dir+"/unconfigure", 'unconfigure', None)
- psf_file.extend([' unconfigure %s/unconfigure' % self.pkg_dir])
- if self.verify:
- self.write_script(self.pkg_dir+"/verify", 'verify', None)
- psf_file.extend([' verify %s/verify' % self.pkg_dir])
- if self.unpreinstall:
- self.write_script(self.pkg_dir+"/unpreinstall", 'unpreinstall', None)
- psf_file.extend([' unpreinstall %s/unpreinstall' % self.pkg_dir])
- if self.unpostinstall:
- self.write_script(self.pkg_dir+"/unpostinstall", 'unpostinstall', None)
- psf_file.extend([' unpostinstall %s/unpostinstall' % self.pkg_dir])
- psf_file.extend([' is_locatable true'])
- #if self.long_description:
- #psf_file.extend([self.long_description])
- if self.copyright:
- # XX make a copyright file XXX
- self.write_script('copyright')
- psf_file.extend([' copyright <copyright'])
- if self.readme:
- # XX make a readme file XXX
- self.write_script('readme')
- psf_file.extend([' readme <readme'])
-
- psf_file.extend([' fileset']) # start fileset
- if self.distribution.ext_modules:
- platlib=self.get_finalized_command('build').build_platlib
- else:
- platlib=self.get_finalized_command('build').build_lib
- title = "%s installation files" % (self.name)
- psf_file.extend([
- ' tag %s' % 'FILES',
- ' title %s' % "%s installation files" % (self.name),
- ' revision %s' % self.version,
- ' directory %s/%s=%s/%s' % (platlib,self.root_package,self.directory,self.root_package),
- ])
- if not self.keep_permissions:
- psf_file.extend([' file_permissions -m 555 -o root -g bin'])
- psf_file.extend([' file *'])
- psf_file.extend([' end']) # end of fileset
- psf_file.extend(['end']) # end of product
-
-# XXX add fileset information
-
-
- return psf_file
-
- # _make_control_file ()
-
-
-# class bdist_sdux