##// END OF EJS Templates
setup: install pip in virtualenv to make sure we have the latest version...
Mads Kiilerich -
r8208:65b0d79f default
parent child Browse files
Show More
@@ -1,161 +1,162 b''
1 #!/usr/bin/env python3
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
2 # -*- coding: utf-8 -*-
3 import os
3 import os
4 import platform
4 import platform
5 import sys
5 import sys
6
6
7 import setuptools
7 import setuptools
8 # monkey patch setuptools to use distutils owner/group functionality
8 # monkey patch setuptools to use distutils owner/group functionality
9 from setuptools.command import sdist
9 from setuptools.command import sdist
10
10
11
11
12 if sys.version_info < (3, 6):
12 if sys.version_info < (3, 6):
13 raise Exception('Kallithea requires Python 3.6 or later')
13 raise Exception('Kallithea requires Python 3.6 or later')
14
14
15
15
16 here = os.path.abspath(os.path.dirname(__file__))
16 here = os.path.abspath(os.path.dirname(__file__))
17
17
18
18
19 def _get_meta_var(name, data, callback_handler=None):
19 def _get_meta_var(name, data, callback_handler=None):
20 import re
20 import re
21 matches = re.compile(r'(?:%s)\s*=\s*(.*)' % name).search(data)
21 matches = re.compile(r'(?:%s)\s*=\s*(.*)' % name).search(data)
22 if matches:
22 if matches:
23 s = eval(matches.groups()[0])
23 s = eval(matches.groups()[0])
24 if callable(callback_handler):
24 if callable(callback_handler):
25 return callback_handler(s)
25 return callback_handler(s)
26 return s
26 return s
27
27
28 _meta = open(os.path.join(here, 'kallithea', '__init__.py'), 'r')
28 _meta = open(os.path.join(here, 'kallithea', '__init__.py'), 'r')
29 _metadata = _meta.read()
29 _metadata = _meta.read()
30 _meta.close()
30 _meta.close()
31
31
32 def callback(V):
32 def callback(V):
33 return '.'.join(map(str, V[:3])) + '.'.join(V[3:])
33 return '.'.join(map(str, V[:3])) + '.'.join(V[3:])
34 __version__ = _get_meta_var('VERSION', _metadata, callback)
34 __version__ = _get_meta_var('VERSION', _metadata, callback)
35 __license__ = _get_meta_var('__license__', _metadata)
35 __license__ = _get_meta_var('__license__', _metadata)
36 __author__ = _get_meta_var('__author__', _metadata)
36 __author__ = _get_meta_var('__author__', _metadata)
37 __url__ = _get_meta_var('__url__', _metadata)
37 __url__ = _get_meta_var('__url__', _metadata)
38 # defines current platform
38 # defines current platform
39 __platform__ = platform.system()
39 __platform__ = platform.system()
40
40
41 is_windows = __platform__ in ['Windows']
41 is_windows = __platform__ in ['Windows']
42
42
43 requirements = [
43 requirements = [
44 "alembic >= 1.0.10, < 1.5",
44 "alembic >= 1.0.10, < 1.5",
45 "gearbox >= 0.1.0, < 1",
45 "gearbox >= 0.1.0, < 1",
46 "waitress >= 0.8.8, < 1.5",
46 "waitress >= 0.8.8, < 1.5",
47 "WebOb >= 1.8, < 1.9",
47 "WebOb >= 1.8, < 1.9",
48 "backlash >= 0.1.2, < 1",
48 "backlash >= 0.1.2, < 1",
49 "TurboGears2 >= 2.4, < 2.5",
49 "TurboGears2 >= 2.4, < 2.5",
50 "tgext.routes >= 0.2.0, < 1",
50 "tgext.routes >= 0.2.0, < 1",
51 "Beaker >= 1.10.1, < 2",
51 "Beaker >= 1.10.1, < 2",
52 "WebHelpers2 >= 2.0, < 2.1",
52 "WebHelpers2 >= 2.0, < 2.1",
53 "FormEncode >= 1.3.1, < 1.4",
53 "FormEncode >= 1.3.1, < 1.4",
54 "SQLAlchemy >= 1.2.9, < 1.4",
54 "SQLAlchemy >= 1.2.9, < 1.4",
55 "Mako >= 0.9.1, < 1.2",
55 "Mako >= 0.9.1, < 1.2",
56 "Pygments >= 2.2.0, < 2.6",
56 "Pygments >= 2.2.0, < 2.6",
57 "Whoosh >= 2.7.1, < 2.8",
57 "Whoosh >= 2.7.1, < 2.8",
58 "celery >= 4.3, < 4.5",
58 "celery >= 4.3, < 4.5",
59 "Babel >= 1.3, < 2.9",
59 "Babel >= 1.3, < 2.9",
60 "python-dateutil >= 2.1.0, < 2.9",
60 "python-dateutil >= 2.1.0, < 2.9",
61 "Markdown >= 2.2.1, < 3.2",
61 "Markdown >= 2.2.1, < 3.2",
62 "docutils >= 0.11, < 0.17",
62 "docutils >= 0.11, < 0.17",
63 "URLObject >= 2.3.4, < 2.5",
63 "URLObject >= 2.3.4, < 2.5",
64 "Routes >= 2.0, < 2.5",
64 "Routes >= 2.0, < 2.5",
65 "dulwich >= 0.19.0, < 0.20",
65 "dulwich >= 0.19.0, < 0.20",
66 "mercurial >= 5.2, < 5.4",
66 "mercurial >= 5.2, < 5.4",
67 "decorator >= 4.2.1, < 4.5",
67 "decorator >= 4.2.1, < 4.5",
68 "Paste >= 2.0.3, < 3.4",
68 "Paste >= 2.0.3, < 3.4",
69 "bleach >= 3.0, < 3.1.4",
69 "bleach >= 3.0, < 3.1.4",
70 "Click >= 7.0, < 8",
70 "Click >= 7.0, < 8",
71 "ipaddr >= 2.2.0, < 2.3",
71 "ipaddr >= 2.2.0, < 2.3",
72 "paginate >= 0.5, < 0.6",
72 "paginate >= 0.5, < 0.6",
73 "paginate_sqlalchemy >= 0.3.0, < 0.4",
73 "paginate_sqlalchemy >= 0.3.0, < 0.4",
74 "bcrypt >= 3.1.0, < 3.2",
74 "bcrypt >= 3.1.0, < 3.2",
75 "pip >= 20.0, < 999",
75 ]
76 ]
76
77
77 dependency_links = [
78 dependency_links = [
78 ]
79 ]
79
80
80 classifiers = [
81 classifiers = [
81 'Development Status :: 4 - Beta',
82 'Development Status :: 4 - Beta',
82 'Environment :: Web Environment',
83 'Environment :: Web Environment',
83 'Framework :: Pylons',
84 'Framework :: Pylons',
84 'Intended Audience :: Developers',
85 'Intended Audience :: Developers',
85 'License :: OSI Approved :: GNU General Public License (GPL)',
86 'License :: OSI Approved :: GNU General Public License (GPL)',
86 'Operating System :: OS Independent',
87 'Operating System :: OS Independent',
87 'Programming Language :: Python :: 3.6',
88 'Programming Language :: Python :: 3.6',
88 'Programming Language :: Python :: 3.7',
89 'Programming Language :: Python :: 3.7',
89 'Programming Language :: Python :: 3.8',
90 'Programming Language :: Python :: 3.8',
90 'Topic :: Software Development :: Version Control',
91 'Topic :: Software Development :: Version Control',
91 ]
92 ]
92
93
93
94
94 # additional files from project that goes somewhere in the filesystem
95 # additional files from project that goes somewhere in the filesystem
95 # relative to sys.prefix
96 # relative to sys.prefix
96 data_files = []
97 data_files = []
97
98
98 description = ('Kallithea is a fast and powerful management tool '
99 description = ('Kallithea is a fast and powerful management tool '
99 'for Mercurial and Git with a built in push/pull server, '
100 'for Mercurial and Git with a built in push/pull server, '
100 'full text search and code-review.')
101 'full text search and code-review.')
101
102
102 keywords = ' '.join([
103 keywords = ' '.join([
103 'kallithea', 'mercurial', 'git', 'code review',
104 'kallithea', 'mercurial', 'git', 'code review',
104 'repo groups', 'ldap', 'repository management', 'hgweb replacement',
105 'repo groups', 'ldap', 'repository management', 'hgweb replacement',
105 'hgwebdir', 'gitweb replacement', 'serving hgweb',
106 'hgwebdir', 'gitweb replacement', 'serving hgweb',
106 ])
107 ])
107
108
108 # long description
109 # long description
109 README_FILE = 'README.rst'
110 README_FILE = 'README.rst'
110 try:
111 try:
111 long_description = open(README_FILE).read()
112 long_description = open(README_FILE).read()
112 except IOError as err:
113 except IOError as err:
113 sys.stderr.write(
114 sys.stderr.write(
114 "[WARNING] Cannot find file specified as long_description (%s): %s\n"
115 "[WARNING] Cannot find file specified as long_description (%s): %s\n"
115 % (README_FILE, err)
116 % (README_FILE, err)
116 )
117 )
117 long_description = description
118 long_description = description
118
119
119
120
120 sdist_org = sdist.sdist
121 sdist_org = sdist.sdist
121 class sdist_new(sdist_org):
122 class sdist_new(sdist_org):
122 def initialize_options(self):
123 def initialize_options(self):
123 sdist_org.initialize_options(self)
124 sdist_org.initialize_options(self)
124 self.owner = self.group = 'root'
125 self.owner = self.group = 'root'
125 sdist.sdist = sdist_new
126 sdist.sdist = sdist_new
126
127
127 packages = setuptools.find_packages(exclude=['ez_setup'])
128 packages = setuptools.find_packages(exclude=['ez_setup'])
128
129
129 setuptools.setup(
130 setuptools.setup(
130 name='Kallithea',
131 name='Kallithea',
131 version=__version__,
132 version=__version__,
132 description=description,
133 description=description,
133 long_description=long_description,
134 long_description=long_description,
134 keywords=keywords,
135 keywords=keywords,
135 license=__license__,
136 license=__license__,
136 author=__author__,
137 author=__author__,
137 author_email='kallithea@sfconservancy.org',
138 author_email='kallithea@sfconservancy.org',
138 dependency_links=dependency_links,
139 dependency_links=dependency_links,
139 url=__url__,
140 url=__url__,
140 install_requires=requirements,
141 install_requires=requirements,
141 classifiers=classifiers,
142 classifiers=classifiers,
142 data_files=data_files,
143 data_files=data_files,
143 packages=packages,
144 packages=packages,
144 include_package_data=True,
145 include_package_data=True,
145 message_extractors={'kallithea': [
146 message_extractors={'kallithea': [
146 ('**.py', 'python', None),
147 ('**.py', 'python', None),
147 ('templates/**.mako', 'mako', {'input_encoding': 'utf-8'}),
148 ('templates/**.mako', 'mako', {'input_encoding': 'utf-8'}),
148 ('templates/**.html', 'mako', {'input_encoding': 'utf-8'}),
149 ('templates/**.html', 'mako', {'input_encoding': 'utf-8'}),
149 ('public/**', 'ignore', None)]},
150 ('public/**', 'ignore', None)]},
150 zip_safe=False,
151 zip_safe=False,
151 entry_points="""
152 entry_points="""
152 [console_scripts]
153 [console_scripts]
153 kallithea-api = kallithea.bin.kallithea_api:main
154 kallithea-api = kallithea.bin.kallithea_api:main
154 kallithea-gist = kallithea.bin.kallithea_gist:main
155 kallithea-gist = kallithea.bin.kallithea_gist:main
155 kallithea-config = kallithea.bin.kallithea_config:main
156 kallithea-config = kallithea.bin.kallithea_config:main
156 kallithea-cli = kallithea.bin.kallithea_cli:cli
157 kallithea-cli = kallithea.bin.kallithea_cli:cli
157
158
158 [paste.app_factory]
159 [paste.app_factory]
159 main = kallithea.config.middleware:make_app
160 main = kallithea.config.middleware:make_app
160 """,
161 """,
161 )
162 )
General Comments 0
You need to be logged in to leave comments. Login now