setup.py
254 lines
| 6.9 KiB
| text/x-python
|
PythonLexer
r1 | # -*- coding: utf-8 -*- | |||
# Import early to make sure things are patched up properly | ||||
from setuptools import setup, find_packages | ||||
import os | ||||
import sys | ||||
import platform | ||||
if sys.version_info < (2, 7): | ||||
raise Exception('RhodeCode requires Python 2.7 or later') | ||||
here = os.path.abspath(os.path.dirname(__file__)) | ||||
def _get_meta_var(name, data, callback_handler=None): | ||||
import re | ||||
matches = re.compile(r'(?:%s)\s*=\s*(.*)' % name).search(data) | ||||
if matches: | ||||
if not callable(callback_handler): | ||||
callback_handler = lambda v: v | ||||
return callback_handler(eval(matches.groups()[0])) | ||||
_meta = open(os.path.join(here, 'rhodecode', '__init__.py'), 'rb') | ||||
_metadata = _meta.read() | ||||
_meta.close() | ||||
callback = lambda V: ('.'.join(map(str, V[:3])) + '.'.join(V[3:])) | ||||
__version__ = open(os.path.join('rhodecode', 'VERSION')).read().strip() | ||||
__license__ = _get_meta_var('__license__', _metadata) | ||||
__author__ = _get_meta_var('__author__', _metadata) | ||||
__url__ = _get_meta_var('__url__', _metadata) | ||||
# defines current platform | ||||
__platform__ = platform.system() | ||||
# Cygwin has different platform identifiers, but they all contain the | ||||
# term "CYGWIN" | ||||
is_windows = __platform__ == 'Windows' or 'CYGWIN' in __platform__ | ||||
requirements = [ | ||||
'Babel', | ||||
'Beaker', | ||||
'FormEncode', | ||||
'Mako', | ||||
'Markdown', | ||||
'MarkupSafe', | ||||
'MySQL-python', | ||||
'Paste', | ||||
'PasteDeploy', | ||||
'PasteScript', | ||||
'Pygments', | ||||
r1104 | 'pygments-markdown-lexer', | |||
r1 | 'Pylons', | |||
'Pyro4', | ||||
'Routes', | ||||
'SQLAlchemy', | ||||
'Tempita', | ||||
'URLObject', | ||||
'WebError', | ||||
'WebHelpers', | ||||
'WebHelpers2', | ||||
'WebOb', | ||||
'WebTest', | ||||
'Whoosh', | ||||
'alembic', | ||||
'amqplib', | ||||
'anyjson', | ||||
'appenlight-client', | ||||
'authomatic', | ||||
'backport_ipaddress', | ||||
'celery', | ||||
r525 | 'channelstream', | |||
r1 | 'colander', | |||
'decorator', | ||||
r518 | 'deform', | |||
r1 | 'docutils', | |||
r525 | 'gevent', | |||
r9 | 'gunicorn', | |||
r1 | 'infrae.cache', | |||
'ipython', | ||||
'iso8601', | ||||
'kombu', | ||||
'msgpack-python', | ||||
'packaging', | ||||
'psycopg2', | ||||
r322 | 'py-gfm', | |||
r1 | 'pycrypto', | |||
'pycurl', | ||||
'pyparsing', | ||||
'pyramid', | ||||
'pyramid-debugtoolbar', | ||||
'pyramid-mako', | ||||
'pyramid-beaker', | ||||
'pysqlite', | ||||
'python-dateutil', | ||||
'python-ldap', | ||||
'python-memcached', | ||||
'python-pam', | ||||
'recaptcha-client', | ||||
'repoze.lru', | ||||
'requests', | ||||
'simplejson', | ||||
Martin Bornhold
|
r1006 | 'subprocess32', | ||
r1 | 'waitress', | |||
'zope.cachedescriptors', | ||||
r320 | 'dogpile.cache', | |||
'dogpile.core' | ||||
r1 | ] | |||
if is_windows: | ||||
pass | ||||
else: | ||||
requirements.append('psutil') | ||||
requirements.append('py-bcrypt') | ||||
test_requirements = [ | ||||
'WebTest', | ||||
'configobj', | ||||
'cssselect', | ||||
'lxml', | ||||
'mock', | ||||
'pytest', | ||||
r9 | 'pytest-cov', | |||
r1 | 'pytest-runner', | |||
Martin Bornhold
|
r870 | 'pytest-sugar', | ||
r1 | ] | |||
setup_requirements = [ | ||||
'PasteScript', | ||||
'pytest-runner', | ||||
] | ||||
dependency_links = [ | ||||
] | ||||
classifiers = [ | ||||
'Development Status :: 6 - Mature', | ||||
'Environment :: Web Environment', | ||||
'Framework :: Pylons', | ||||
'Intended Audience :: Developers', | ||||
'Operating System :: OS Independent', | ||||
'Programming Language :: Python', | ||||
'Programming Language :: Python :: 2.7', | ||||
] | ||||
# additional files from project that goes somewhere in the filesystem | ||||
# relative to sys.prefix | ||||
data_files = [] | ||||
# additional files that goes into package itself | ||||
package_data = {'rhodecode': ['i18n/*/LC_MESSAGES/*.mo', ], } | ||||
description = ('RhodeCode is a fast and powerful management tool ' | ||||
'for Mercurial and GIT with a built in push/pull server, ' | ||||
'full text search and code-review.') | ||||
keywords = ' '.join([ | ||||
'rhodecode', 'rhodiumcode', 'mercurial', 'git', 'code review', | ||||
'repo groups', 'ldap', 'repository management', 'hgweb replacement', | ||||
'hgwebdir', 'gitweb replacement', 'serving hgweb', | ||||
]) | ||||
# long description | ||||
README_FILE = 'README.rst' | ||||
CHANGELOG_FILE = 'CHANGES.rst' | ||||
try: | ||||
long_description = open(README_FILE).read() + '\n\n' + \ | ||||
open(CHANGELOG_FILE).read() | ||||
except IOError, err: | ||||
sys.stderr.write( | ||||
'[WARNING] Cannot find file specified as long_description (%s)\n or ' | ||||
'changelog (%s) skipping that file' % (README_FILE, CHANGELOG_FILE) | ||||
) | ||||
long_description = description | ||||
# packages | ||||
packages = find_packages() | ||||
paster_commands = [ | ||||
'make-config=rhodecode.lib.paster_commands.make_config:Command', | ||||
'setup-rhodecode=rhodecode.lib.paster_commands.setup_rhodecode:Command', | ||||
'update-repoinfo=rhodecode.lib.paster_commands.update_repoinfo:Command', | ||||
'cache-keys=rhodecode.lib.paster_commands.cache_keys:Command', | ||||
'ishell=rhodecode.lib.paster_commands.ishell:Command', | ||||
'upgrade-db=rhodecode.lib.dbmigrate:UpgradeDb', | ||||
'celeryd=rhodecode.lib.celerypylons.commands:CeleryDaemonCommand', | ||||
] | ||||
setup( | ||||
name='rhodecode-enterprise-ce', | ||||
version=__version__, | ||||
description=description, | ||||
long_description=long_description, | ||||
keywords=keywords, | ||||
license=__license__, | ||||
author=__author__, | ||||
author_email='marcin@rhodecode.com', | ||||
dependency_links=dependency_links, | ||||
url=__url__, | ||||
install_requires=requirements, | ||||
tests_require=test_requirements, | ||||
classifiers=classifiers, | ||||
setup_requires=setup_requirements, | ||||
data_files=data_files, | ||||
packages=packages, | ||||
include_package_data=True, | ||||
package_data=package_data, | ||||
message_extractors={ | ||||
'rhodecode': [ | ||||
('**.py', 'python', None), | ||||
r326 | ('**.js', 'javascript', None), | |||
r1 | ('templates/**.mako', 'mako', {'input_encoding': 'utf-8'}), | |||
('templates/**.html', 'mako', {'input_encoding': 'utf-8'}), | ||||
('public/**', 'ignore', None), | ||||
] | ||||
}, | ||||
zip_safe=False, | ||||
paster_plugins=['PasteScript', 'Pylons'], | ||||
entry_points={ | ||||
'enterprise.plugins1': [ | ||||
'crowd=rhodecode.authentication.plugins.auth_crowd:plugin_factory', | ||||
r59 | 'headers=rhodecode.authentication.plugins.auth_headers:plugin_factory', | |||
r1 | 'jasig_cas=rhodecode.authentication.plugins.auth_jasig_cas:plugin_factory', | |||
'ldap=rhodecode.authentication.plugins.auth_ldap:plugin_factory', | ||||
'pam=rhodecode.authentication.plugins.auth_pam:plugin_factory', | ||||
'rhodecode=rhodecode.authentication.plugins.auth_rhodecode:plugin_factory', | ||||
r80 | 'token=rhodecode.authentication.plugins.auth_token:plugin_factory', | |||
r1 | ], | |||
'paste.app_factory': [ | ||||
'main=rhodecode.config.middleware:make_pyramid_app', | ||||
'pylons=rhodecode.config.middleware:make_app', | ||||
], | ||||
'paste.app_install': [ | ||||
'main=pylons.util:PylonsInstaller', | ||||
'pylons=pylons.util:PylonsInstaller', | ||||
], | ||||
'paste.global_paster_command': paster_commands, | ||||
'pytest11': [ | ||||
'pylons=rhodecode.tests.pylons_plugin', | ||||
'enterprise=rhodecode.tests.plugin', | ||||
], | ||||
'console_scripts': [ | ||||
'rcserver=rhodecode.rcserver:main', | ||||
], | ||||
'beaker.backends': [ | ||||
'memorylru_base=rhodecode.lib.memory_lru_debug:MemoryLRUNamespaceManagerBase', | ||||
'memorylru_debug=rhodecode.lib.memory_lru_debug:MemoryLRUNamespaceManagerDebug' | ||||
] | ||||
}, | ||||
) | ||||