forked from f-droid/fdroidserver
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.py
executable file
·137 lines (118 loc) · 4.08 KB
/
setup.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#!/usr/bin/env python3
import re
import subprocess
import sys
from setuptools import Command
from setuptools import setup
from setuptools.command.install import install
class VersionCheckCommand(Command):
"""Make sure git tag and version match before uploading."""
user_options = []
def initialize_options(self):
"""Abstract method that is required to be overwritten."""
def finalize_options(self):
"""Abstract method that is required to be overwritten."""
def run(self):
version = self.distribution.get_version()
version_git = (
subprocess.check_output(['git', 'describe', '--tags', '--always'])
.rstrip()
.decode('utf-8')
)
if version != version_git:
print(
'ERROR: Release version mismatch! setup.py (%s) does not match git (%s)'
% (version, version_git)
)
sys.exit(1)
print('Upload using: twine upload --sign dist/fdroidserver-%s.tar.gz' % version)
class InstallWithCompile(install):
def run(self):
from babel.messages.frontend import compile_catalog
compiler = compile_catalog(self.distribution)
option_dict = self.distribution.get_option_dict('compile_catalog')
compiler.domain = [option_dict['domain'][1]]
compiler.directory = option_dict['directory'][1]
compiler.run()
super().run()
def get_data_files():
data_files = []
with open('MANIFEST.in') as fp:
data = fp.read()
data_files.append(
('share/doc/fdroidserver/examples', re.findall(r'include (examples/.*)', data))
)
data_files.append(
('share/doc/fdroidserver/examples', ['buildserver/config.buildserver.yml'])
)
for d in re.findall(r'include (locale/.*)/fdroidserver\.po', data):
data_files.append(('share/' + d, [d + '/fdroidserver.mo']))
return data_files
with open("README.md", "r") as fh:
long_description = fh.read()
setup(
name='fdroidserver',
version='2.3a0',
description='F-Droid Server Tools',
long_description=long_description,
long_description_content_type='text/markdown',
author='The F-Droid Project',
author_email='[email protected]',
url='https://f-droid.org',
license='AGPL-3.0',
packages=['fdroidserver', 'fdroidserver.asynchronousfilereader'],
entry_points={'console_scripts': ['fdroid=fdroidserver.__main__:main']},
data_files=get_data_files(),
python_requires='>=3.9',
cmdclass={
'versioncheck': VersionCheckCommand,
'install': InstallWithCompile,
},
setup_requires=[
'babel',
],
install_requires=[
'appdirs',
'androguard >= 3.1.0, != 3.3.0, != 3.3.1, != 3.3.2, <4',
'clint',
'defusedxml',
'GitPython',
'paramiko',
'Pillow',
'apache-libcloud >= 0.14.1',
'pyasn1 >=0.4.1, < 0.5.0',
'pyasn1-modules >= 0.2.1, < 0.3',
'python-vagrant',
'PyYAML',
'qrcode',
'ruamel.yaml >= 0.15, < 0.17.22',
'requests >= 2.5.2, != 2.11.0, != 2.12.2, != 2.18.0',
'sdkmanager >= 0.6.4',
'yamllint',
],
# Some requires are only needed for very limited cases:
# * biplist is only used for parsing Apple .ipa files
# * pycountry is only for linting config/mirrors.yml
extras_require={
'optional': ['biplist', 'pycountry'],
'test': ['pyjks', 'html5print'],
'docs': [
'sphinx',
'numpydoc',
'pydata_sphinx_theme',
'pydocstyle',
],
},
classifiers=[
'Development Status :: 4 - Beta',
'Intended Audience :: Developers',
'Intended Audience :: Information Technology',
'Intended Audience :: System Administrators',
'Intended Audience :: Telecommunications Industry',
'License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)',
'Operating System :: POSIX',
'Operating System :: MacOS :: MacOS X',
'Operating System :: Unix',
'Topic :: Utilities',
],
)