145 lines
4.7 KiB
Python
145 lines
4.7 KiB
Python
"""Installs CherryPy using distutils
|
|
|
|
Run:
|
|
python setup.py install
|
|
|
|
to install this package.
|
|
"""
|
|
|
|
try:
|
|
from setuptools import setup
|
|
except ImportError:
|
|
from distutils.core import setup
|
|
|
|
from distutils.command.install import INSTALL_SCHEMES
|
|
from distutils.command.build_py import build_py
|
|
import sys
|
|
import os
|
|
import re
|
|
|
|
class cherrypy_build_py(build_py):
|
|
"Custom version of build_py that selects Python-specific wsgiserver"
|
|
def build_module(self, module, module_file, package):
|
|
python3 = sys.version_info >= (3,)
|
|
if python3:
|
|
exclude_pattern = re.compile('wsgiserver2|ssl_pyopenssl')
|
|
else:
|
|
exclude_pattern = re.compile('wsgiserver3')
|
|
if exclude_pattern.match(module):
|
|
return # skip it
|
|
return build_py.build_module(self, module, module_file, package)
|
|
|
|
|
|
###############################################################################
|
|
# arguments for the setup command
|
|
###############################################################################
|
|
name = "CherryPy"
|
|
version = "3.2.2"
|
|
desc = "Object-Oriented HTTP framework"
|
|
long_desc = "CherryPy is a pythonic, object-oriented HTTP framework"
|
|
classifiers=[
|
|
"Development Status :: 5 - Production/Stable",
|
|
"Environment :: Web Environment",
|
|
"Intended Audience :: Developers",
|
|
"License :: Freely Distributable",
|
|
"Operating System :: OS Independent",
|
|
"Programming Language :: Python",
|
|
"Programming Language :: Python :: 2",
|
|
"Programming Language :: Python :: 3",
|
|
"Topic :: Internet :: WWW/HTTP",
|
|
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
|
|
"Topic :: Internet :: WWW/HTTP :: HTTP Servers",
|
|
"Topic :: Internet :: WWW/HTTP :: WSGI",
|
|
"Topic :: Internet :: WWW/HTTP :: WSGI :: Application",
|
|
"Topic :: Internet :: WWW/HTTP :: WSGI :: Server",
|
|
"Topic :: Software Development :: Libraries :: Application Frameworks",
|
|
]
|
|
author="CherryPy Team"
|
|
author_email="team@cherrypy.org"
|
|
url="http://www.cherrypy.org"
|
|
cp_license="BSD"
|
|
packages=[
|
|
"cherrypy", "cherrypy.lib",
|
|
"cherrypy.tutorial", "cherrypy.test",
|
|
"cherrypy.process",
|
|
"cherrypy.scaffold",
|
|
"cherrypy.wsgiserver",
|
|
]
|
|
download_url="http://download.cherrypy.org/cherrypy/3.2.2/"
|
|
data_files=[
|
|
('cherrypy', ['cherrypy/cherryd',
|
|
'cherrypy/favicon.ico',
|
|
'cherrypy/LICENSE.txt',
|
|
]),
|
|
('cherrypy/process', []),
|
|
('cherrypy/scaffold', ['cherrypy/scaffold/example.conf',
|
|
'cherrypy/scaffold/site.conf',
|
|
]),
|
|
('cherrypy/scaffold/static', ['cherrypy/scaffold/static/made_with_cherrypy_small.png',
|
|
]),
|
|
('cherrypy/test', ['cherrypy/test/style.css',
|
|
'cherrypy/test/test.pem',
|
|
]),
|
|
('cherrypy/test/static', ['cherrypy/test/static/index.html',
|
|
'cherrypy/test/static/dirback.jpg',]),
|
|
('cherrypy/tutorial',
|
|
[
|
|
'cherrypy/tutorial/tutorial.conf',
|
|
'cherrypy/tutorial/README.txt',
|
|
'cherrypy/tutorial/pdf_file.pdf',
|
|
'cherrypy/tutorial/custom_error.html',
|
|
]
|
|
),
|
|
]
|
|
scripts = ["cherrypy/cherryd"]
|
|
|
|
cmd_class = dict(
|
|
build_py = cherrypy_build_py,
|
|
)
|
|
|
|
if sys.version_info >= (3, 0):
|
|
required_python_version = '3.0'
|
|
else:
|
|
required_python_version = '2.3'
|
|
|
|
###############################################################################
|
|
# end arguments for setup
|
|
###############################################################################
|
|
|
|
# wininst may install data_files in Python/x.y instead of the cherrypy package.
|
|
# Django's solution is at http://code.djangoproject.com/changeset/8313
|
|
# See also http://mail.python.org/pipermail/distutils-sig/2004-August/004134.html
|
|
if 'bdist_wininst' in sys.argv or '--format=wininst' in sys.argv:
|
|
data_files = [(r'\PURELIB\%s' % path, files) for path, files in data_files]
|
|
|
|
def main():
|
|
if sys.version < required_python_version:
|
|
s = "I'm sorry, but %s %s requires Python %s or later."
|
|
print(s % (name, version, required_python_version))
|
|
sys.exit(1)
|
|
# set default location for "data_files" to
|
|
# platform specific "site-packages" location
|
|
for scheme in list(INSTALL_SCHEMES.values()):
|
|
scheme['data'] = scheme['purelib']
|
|
|
|
dist = setup(
|
|
name=name,
|
|
version=version,
|
|
description=desc,
|
|
long_description=long_desc,
|
|
classifiers=classifiers,
|
|
author=author,
|
|
author_email=author_email,
|
|
url=url,
|
|
license=cp_license,
|
|
packages=packages,
|
|
download_url=download_url,
|
|
data_files=data_files,
|
|
scripts=scripts,
|
|
cmdclass=cmd_class,
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|