##// END OF EJS Templates
setup: use pip10 compatible setup code.
marcink -
r493:a71caae1 default
parent child Browse files
Show More
@@ -1,132 +1,139 b''
1 1 # -*- coding: utf-8 -*-
2 2 # RhodeCode VCSServer provides access to different vcs backends via network.
3 3 # Copyright (C) 2014-2017 RodeCode GmbH
4 4 #
5 5 # This program is free software; you can redistribute it and/or modify
6 6 # it under the terms of the GNU General Public License as published by
7 7 # the Free Software Foundation; either version 3 of the License, or
8 8 # (at your option) any later version.
9 9 #
10 10 # This program is distributed in the hope that it will be useful,
11 11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 13 # GNU General Public License for more details.
14 14 #
15 15 # You should have received a copy of the GNU General Public License
16 16 # along with this program; if not, write to the Free Software Foundation,
17 17 # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 18
19 19 # Import early to make sure things are patched up properly
20 20 from setuptools import setup, find_packages
21 21
22 22 import os
23 23 import sys
24 24 import pkgutil
25 25 import platform
26 import codecs
26 27
27 from pip.download import PipSession
28 from pip.req import parse_requirements
28 try: # for pip >= 10
29 from pip._internal.req import parse_requirements
30 except ImportError: # for pip <= 9.0.3
31 from pip.req import parse_requirements
29 32
30 from codecs import open
33 try: # for pip >= 10
34 from pip._internal.download import PipSession
35 except ImportError: # for pip <= 9.0.3
36 from pip.download import PipSession
37
31 38
32 39
33 40 if sys.version_info < (2, 7):
34 41 raise Exception('VCSServer requires Python 2.7 or later')
35 42
36 43 here = os.path.abspath(os.path.dirname(__file__))
37 44
38 45 # defines current platform
39 46 __platform__ = platform.system()
40 47 __license__ = 'GPL V3'
41 48 __author__ = 'RhodeCode GmbH'
42 49 __url__ = 'https://code.rhodecode.com'
43 50 is_windows = __platform__ in ('Windows',)
44 51
45 52
46 53 def _get_requirements(req_filename, exclude=None, extras=None):
47 54 extras = extras or []
48 55 exclude = exclude or []
49 56
50 57 try:
51 58 parsed = parse_requirements(
52 59 os.path.join(here, req_filename), session=PipSession())
53 60 except TypeError:
54 61 # try pip < 6.0.0, that doesn't support session
55 62 parsed = parse_requirements(os.path.join(here, req_filename))
56 63
57 64 requirements = []
58 65 for ir in parsed:
59 66 if ir.req and ir.name not in exclude:
60 67 requirements.append(str(ir.req))
61 68 return requirements + extras
62 69
63 70
64 71 # requirements extract
65 72 setup_requirements = ['pytest-runner']
66 73 install_requirements = _get_requirements(
67 74 'requirements.txt', exclude=['setuptools'])
68 75 test_requirements = _get_requirements(
69 76 'requirements_test.txt', extras=['configobj'])
70 77
71 78
72 79 def get_version():
73 80 version = pkgutil.get_data('vcsserver', 'VERSION')
74 81 return version.strip()
75 82
76 83
77 84 # additional files that goes into package itself
78 85 package_data = {
79 86 '': ['*.txt', '*.rst'],
80 87 'configs': ['*.ini'],
81 88 'vcsserver': ['VERSION'],
82 89 }
83 90
84 91 description = 'Version Control System Server'
85 92 keywords = ' '.join([
86 93 'CLI', 'RhodeCode', 'RhodeCode Enterprise', 'RhodeCode Tools'])
87 94
88 95 # README/DESCRIPTION generation
89 96 readme_file = 'README.rst'
90 97 changelog_file = 'CHANGES.rst'
91 98 try:
92 long_description = open(readme_file).read() + '\n\n' + \
93 open(changelog_file).read()
99 long_description = codecs.open(readme_file).read() + '\n\n' + \
100 codecs.open(changelog_file).read()
94 101 except IOError as err:
95 102 sys.stderr.write(
96 103 "[WARNING] Cannot find file specified as long_description (%s)\n "
97 104 "or changelog (%s) skipping that file" % (readme_file, changelog_file))
98 105 long_description = description
99 106
100 107
101 108 setup(
102 109 name='rhodecode-vcsserver',
103 110 version=get_version(),
104 111 description=description,
105 112 long_description=long_description,
106 113 keywords=keywords,
107 114 license=__license__,
108 115 author=__author__,
109 116 author_email='marcin@rhodecode.com',
110 117 url=__url__,
111 118 setup_requires=setup_requirements,
112 119 install_requires=install_requirements,
113 120 tests_require=test_requirements,
114 121 zip_safe=False,
115 122 packages=find_packages(exclude=["docs", "tests*"]),
116 123 package_data=package_data,
117 124 include_package_data=True,
118 125 classifiers=[
119 126 'Development Status :: 6 - Mature',
120 127 'Intended Audience :: Developers',
121 128 'Operating System :: OS Independent',
122 129 'Topic :: Software Development :: Version Control',
123 130 'License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)',
124 131 'Programming Language :: Python :: 2.7',
125 132 ],
126 133 entry_points={
127 134 'console_scripts': [
128 135 'vcsserver=vcsserver.main:main',
129 136 ],
130 137 'paste.app_factory': ['main=vcsserver.http_main:main']
131 138 },
132 139 )
General Comments 0
You need to be logged in to leave comments. Login now