Copy setup.py from 2014.7.

Fixes #17138
This commit is contained in:
Pedro Algarvio 2014-11-04 17:42:03 +00:00
parent d499d7262a
commit 1372d65a7c

242
setup.py
View file

@ -492,98 +492,158 @@ class InstallLib(install_lib):
os.chmod(filename, 0755) os.chmod(filename, 0755)
# <---- Custom Distutils/Setuptools Commands ------------------------------------------------------------------------- # <---- Custom Distutils/Setuptools Commands -------------------------------------------------------------------------
if PACKAGED_FOR_SALT_SSH:
NAME = 'salt-ssh'
else:
NAME = 'salt'
VER = __version__ # pylint: disable=E0602 # ----- Custom Distribution Class ----------------------------------------------------------------------------------->
DESC = 'Portable, distributed, remote execution and configuration management system' # We use this to override the package name in case --ssh-packaging is passed to
SETUP_KWARGS = {'name': NAME, # setup.py or the special .salt-ssh-package is found
'version': VER, class SaltDistribution(distutils.dist.Distribution):
'description': DESC, '''
'author': 'Thomas S Hatch', Just so it's completely clear
'author_email': 'thatch45@gmail.com',
'url': 'http://saltstack.org', Under windows, the following scripts should be installed:
'cmdclass': {
'test': TestCommand, * salt-call
'clean': Clean, * salt-cp
'build': Build, * salt-minion
'sdist': Sdist, * salt-unity
'install': Install,
'write-salt-version': WriteSaltVersion, When packaged for salt-ssh, the following scripts should be installed:
'write-salt-ssh-packaging-file': WriteSaltSshPackaingFile, * salt-call
}, * salt-run
'classifiers': ['Programming Language :: Python', * salt-ssh
'Programming Language :: Cython', * salt-cloud
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7', Under windows, the following scripts should be omitted from the salt-ssh package:
'Development Status :: 5 - Production/Stable', * salt-cloud
'Environment :: Console', * salt-run
'Intended Audience :: Developers',
'Intended Audience :: Information Technology', Under *nix, all scripts should be installed
'Intended Audience :: System Administrators', '''
('License :: OSI Approved ::' global_options = distutils.dist.Distribution.global_options + [
' Apache Software License'), ('ssh-packaging', None, 'Run in SSH packaging mode'),
'Operating System :: POSIX :: Linux', ('salt-transport=', None, 'The transport to prepare salt for. Choices are \'zeromq\' '
'Topic :: System :: Clustering', '\'raet\' or \'both\'. Defaults to \'zeromq\'', 'zeromq')
'Topic :: System :: Distributed Computing', ]
],
'packages': ['salt', def __init__(self, attrs=None):
'salt.auth', distutils.dist.Distribution.__init__(self, attrs)
'salt.cli',
'salt.client', self.ssh_packaging = PACKAGED_FOR_SALT_SSH
'salt.client.raet', self.salt_transport = None
'salt.client.ssh',
'salt.client.ssh.wrapper', self.name = 'salt-ssh' if PACKAGED_FOR_SALT_SSH else 'salt'
'salt.cloud', self.version = __version__ # pylint: disable=undefined-variable
'salt.cloud.clouds', self.description = 'Portable, distributed, remote execution and configuration management system'
'salt.daemons', self.author = 'Thomas S Hatch'
'salt.daemons.flo', self.author_email = 'thatch45@gmail.com'
'salt.ext', self.url = 'http://saltstack.org'
'salt.fileserver', self.cmdclass.update({'test': TestCommand,
'salt.grains', 'clean': Clean,
'salt.log', 'build': Build,
'salt.log.handlers', 'sdist': Sdist,
'salt.modules', 'install': Install,
'salt.netapi', 'write-salt-version': WriteSaltVersion,
'salt.netapi.rest_cherrypy', 'write-salt-ssh-packaging-file': WriteSaltSshPackaingFile})
'salt.netapi.rest_cherrypy.tools', if not IS_WINDOWS_PLATFORM:
'salt.netapi.rest_tornado', self.cmdclass.update({'sdist': CloudSdist,
'salt.output', 'install_lib': InstallLib})
'salt.pillar',
'salt.proxy', self.license = 'Apache Software License 2.0'
'salt.renderers', self.packages = self.discover_packages()
'salt.returners', self.zip_safe = False
'salt.roster',
'salt.runners', if HAS_ESKY:
'salt.search', self.setup_esky()
'salt.states',
'salt.tops', self.update_metadata()
'salt.templates',
'salt.transport', def update_metadata(self):
'salt.utils', for attrname in dir(self):
'salt.utils.decorators', attrvalue = getattr(self, attrname, None)
'salt.utils.openstack', if attrvalue == 0:
'salt.utils.openstack.pyrax', continue
'salt.utils.validate', if hasattr(self.metadata, 'set_{0}'.format(attrname)):
'salt.utils.serializers', getattr(self.metadata, 'set_{0}'.format(attrname))(attrvalue)
'salt.wheel', elif hasattr(self.metadata, attrname):
], setattr(self.metadata, attrname, attrvalue)
'package_data': {'salt.templates': [
'rh_ip/*.jinja', def discover_packages(self):
'debian_ip/*.jinja', modules = []
'virt/*.jinja', for root, _, files in os.walk(os.path.join(SETUP_DIRNAME, 'salt')):
'git/*', if '__init__.py' not in files:
'lxc/*', continue
], modules.append(os.path.relpath(root, SETUP_DIRNAME).replace(os.sep, '.'))
'salt.daemons.flo': [ return modules
'*.flo'
] # ----- Static Data ---------------------------------------------------------------------------------------------
}, @property
'data_files': [('share/man/man1', def _property_classifiers(self):
['doc/man/salt-cp.1', return ['Programming Language :: Python',
'doc/man/salt-call.1', 'Programming Language :: Cython',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Development Status :: 5 - Production/Stable',
'Environment :: Console',
'Intended Audience :: Developers',
'Intended Audience :: Information Technology',
'Intended Audience :: System Administrators',
'License :: OSI Approved :: Apache Software License',
'Operating System :: POSIX :: Linux',
'Topic :: System :: Clustering',
'Topic :: System :: Distributed Computing']
@property
def _property_dependency_links(self):
return ['https://github.com/saltstack/salt-testing/tarball/develop#egg=SaltTesting']
@property
def _property_tests_require(self):
return ['SaltTesting']
# <---- Static Data ----------------------------------------------------------------------------------------------
# ----- Dynamic Data -------------------------------------------------------------------------------------------->
@property
def _property_package_data(self):
package_data = {'salt.templates': ['rh_ip/*.jinja',
'debian_ip/*.jinja',
'virt/*.jinja',
'git/*',
'lxc/*',
]}
if not IS_WINDOWS_PLATFORM:
package_data['salt.cloud'] = ['deploy/*.sh']
if not self.ssh_packaging and not PACKAGED_FOR_SALT_SSH:
package_data['salt.daemons.flo'] = ['*.flo']
return package_data
@property
def _property_data_files(self):
# Data files common to all scenarios
data_files = [
('share/man/man1', ['doc/man/salt-call.1']),
('share/man/man7', ['doc/man/salt.7'])
]
if self.ssh_packaging or PACKAGED_FOR_SALT_SSH:
data_files[0][1].append('doc/man/salt-ssh.1')
if IS_WINDOWS_PLATFORM:
return data_files
data_files[0][1].extend(['doc/man/salt-run.1',
'doc/man/salt-cloud.1'])
return data_files
if IS_WINDOWS_PLATFORM:
data_files[0][1].extend(['doc/man/salt-cp.1',
'doc/man/salt-minion.1',
'doc/man/salt-unity.1'])
return data_files
# *nix, so, we need all man pages
data_files[0][1].extend(['doc/man/salt-api.1',
'doc/man/salt-cloud.1',
'doc/man/salt-cp.1',
'doc/man/salt-key.1',
'doc/man/salt-master.1',
'doc/man/salt-minion.1', 'doc/man/salt-minion.1',
'doc/man/salt-run.1', 'doc/man/salt-run.1',
'doc/man/salt-ssh.1', 'doc/man/salt-ssh.1',