-
Notifications
You must be signed in to change notification settings - Fork 23
/
setup.py
134 lines (120 loc) · 4.47 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
#!/usr/bin/env python3
from configparser import RawConfigParser
import re
import struct
import sys
from setuptools import setup
if (sys.version_info.major, sys.version_info.minor) < (3, 5):
sys.exit(
"This version of Python ({}.{}) is no longer supported by Gridsync; "
"please upgrade to Python 3.5 or higher and try again".format(
sys.version_info.major, sys.version_info.minor))
requirements = [
'humanize',
'magic-wormhole',
'PyNaCl >= 1.2.0', # 1.2.0 adds Argon2id KDF
'PyQt5',
'pyyaml',
'qt5reactor',
'treq',
'twisted[tls]',
'txtorcon',
'zxcvbn',
]
if sys.platform.startswith('linux') and (struct.calcsize('P') * 8) == 32:
try:
import PyQt5 # noqa; F401 (imported but unused)
except ImportError:
sys.exit(
"PyQt5 wheels are not available for 32-bit GNU/Linux. Please "
"manually install PyQt5 into this environment and try again.")
requirements.remove('PyQt5')
module_file = open("gridsync/__init__.py").read()
metadata = dict(re.findall(r"__([a-z]+)__\s*=\s*'([^']+)'", module_file))
version_file = open("gridsync/_version.py").read()
version = re.findall(r"__version__\s*=\s*'([^']+)'", version_file)[0]
if sys.platform == 'darwin':
config = RawConfigParser()
config.read('gridsync/resources/config.txt')
app_name = config.get('application', 'name')
build_settings = {}
for option, value in config.items('build'):
build_settings[option] = value
extra_options = {
'setup_requires': ['py2app'],
'app': ['gridsync/cli.py'],
'options': {'py2app': {
'argv_emulation': True,
'iconfile': build_settings['mac_icon'],
'includes': ['cffi'],
'plist': {
'CFBundleDisplayName': app_name,
'CFBundleExecutable': app_name,
'CFBundleIdentifier': build_settings['mac_bundle_identifier'],
'CFBundleName': app_name,
'LSBackgroundOnly': True,
'LSUIElement': True
}
}}
}
else:
extra_options = {}
setup(
name="gridsync",
version=version,
description="Synchronize local directories with Tahoe-LAFS storage grids.",
long_description=open('README.rst').read(),
author=metadata["author"],
url=metadata["url"],
license=metadata["license"],
keywords="gridsync tahoe-lafs tahoe lafs allmydata-tahoe magic-wormhole",
classifiers=[
"Development Status :: 4 - Beta",
"Environment :: MacOS X",
"Environment :: Win32 (MS Windows)",
"Environment :: X11 Applications",
"Environment :: X11 Applications :: Gnome",
"Environment :: X11 Applications :: GTK",
"Environment :: X11 Applications :: KDE",
"Environment :: X11 Applications :: Qt",
"Intended Audience :: End Users/Desktop",
"License :: DFSG approved",
"License :: OSI Approved",
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
"Natural Language :: English",
"Operating System :: MacOS :: MacOS X",
"Operating System :: Microsoft :: Windows",
"Operating System :: Microsoft :: Windows :: Windows 7",
"Operating System :: Microsoft :: Windows :: Windows 8",
"Operating System :: Microsoft :: Windows :: Windows 8.1",
"Operating System :: Microsoft :: Windows :: Windows 10",
"Operating System :: POSIX",
"Operating System :: POSIX :: Linux",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3 :: Only",
"Topic :: Communications :: File Sharing",
"Topic :: Desktop Environment",
"Topic :: Internet",
"Topic :: Security",
"Topic :: Cryptography",
"Topic :: System :: Archiving",
"Topic :: System :: Archiving :: Backup",
"Topic :: System :: Archiving :: Mirroring",
"Topic :: System :: Distributed Computing",
"Topic :: System :: Filesystems",
"Topic :: System :: Recovery Tools",
"Topic :: Utilities",
],
packages=['gridsync', 'gridsync.gui'],
package_data={
'gridsync': ['resources/*', 'resources/providers/*']
},
entry_points={
'console_scripts': ['gridsync=gridsync.cli:main'],
},
install_requires=requirements,
**extra_options
)