]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/blob - src/allmydata/_auto_deps.py
Delete some crufty workarounds.
[tahoe-lafs/tahoe-lafs.git] / src / allmydata / _auto_deps.py
1 # Note: please minimize imports in this file. In particular, do not import
2 # any module from Tahoe-LAFS or its dependencies, and do not import any
3 # modules at all at global level. That includes setuptools and pkg_resources.
4 # It is ok to import modules from the Python Standard Library if they are
5 # always available, or the import is protected by try...except ImportError.
6
7 # The semantics for requirement specs changed incompatibly in setuptools 8,
8 # which now follows PEP 440. The requirements used in this file must be valid
9 # under both the old and new semantics. That can be achieved by limiting
10 # requirement specs to one of the following forms:
11 #
12 #   * >= X, <= Y where X < Y
13 #   * >= X, != Y, != Z, ... where X < Y < Z...
14 #
15 # (In addition, check_requirement in allmydata/__init__.py only supports
16 # >=, <= and != operators.)
17
18 install_requires = [
19     # We require newer versions of setuptools to build, but can handle
20     # older versions to run.
21     "setuptools >= 0.6c6",
22
23     "zfec >= 1.1.0",
24
25     # Feisty has simplejson 1.4
26     "simplejson >= 1.4",
27
28     # zope.interface >= 3.6.0 is required for Twisted >= 12.1.0.
29     # zope.interface 3.6.3 and 3.6.4 are incompatible with Nevow (#1435).
30     "zope.interface >= 3.6.0, != 3.6.3, != 3.6.4",
31
32     # * foolscap < 0.5.1 had a performance bug which spent O(N**2) CPU for
33     #   transferring large mutable files of size N.
34     # * foolscap < 0.6 is incompatible with Twisted 10.2.0.
35     # * foolscap 0.6.1 quiets a DeprecationWarning.
36     # * foolscap < 0.6.3 is incompatible with Twisted 11.1.0 and newer.
37     # * foolscap 0.8.0 generates 2048-bit RSA-with-SHA-256 signatures,
38     #   rather than 1024-bit RSA-with-MD5. This also allows us to work
39     #   with a FIPS build of OpenSSL.
40     "foolscap >= 0.10.1",
41
42     # Needed for SFTP.
43     # pycrypto 2.2 doesn't work due to <https://bugs.launchpad.net/pycrypto/+bug/620253>
44     # pycrypto 2.4 doesn't work due to <https://bugs.launchpad.net/pycrypto/+bug/881130>
45     "pycrypto >= 2.1.0, != 2.2, != 2.4",
46
47     # pycryptopp-0.6.0 includes ed25519
48     "pycryptopp >= 0.6.0",
49
50     "service-identity",         # this is needed to suppress complaints about being unable to verify certs
51     "characteristic >= 14.0.0", # latest service-identity depends on this version
52     "pyasn1 >= 0.1.8",          # latest pyasn1-modules depends on this version
53     "pyasn1-modules >= 0.0.5",  # service-identity depends on this
54
55     # * On Linux we need at least Twisted 10.1.0 for inotify support
56     #   used by the drop-upload frontend.
57     # * We also need Twisted 10.1.0 for the FTP frontend in order for
58     #   Twisted's FTP server to support asynchronous close.
59     # * The SFTP frontend depends on Twisted 11.0.0 to fix the SSH server
60     #   rekeying bug <https://twistedmatrix.com/trac/ticket/4395>
61     # * The FTP frontend depends on Twisted >= 11.1.0 for
62     #   filepath.Permissions
63     # * Nevow 0.11.1 depends on Twisted >= 13.0.0.
64     "Twisted >= 13.0.0",
65
66     # We need Nevow >= 0.11.1 which can be installed using pip.
67     "Nevow >= 0.11.1",
68
69     # * pyOpenSSL is required in order for foolscap to provide secure connections.
70     #   Since foolscap doesn't reliably declare this dependency in a machine-readable
71     #   way, we need to declare a dependency on pyOpenSSL ourselves. Tahoe-LAFS does
72     #   not *directly* depend on pyOpenSSL.
73     # * pyOpenSSL >= 0.13 is needed in order to avoid
74     #   <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2005>, and also to check the
75     #   version of OpenSSL that pyOpenSSL is using.
76     # * pyOpenSSL >= 0.14 is needed in order to avoid
77     #   <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2474>.
78     "pyOpenSSL >= 0.14",
79 ]
80
81 # Includes some indirect dependencies, but does not include allmydata.
82 # These are in the order they should be listed by --version, etc.
83 package_imports = [
84     # package name       module name
85     ('foolscap',         'foolscap'),
86     ('pycryptopp',       'pycryptopp'),
87     ('zfec',             'zfec'),
88     ('Twisted',          'twisted'),
89     ('Nevow',            'nevow'),
90     ('zope.interface',   'zope.interface'),
91     ('python',           None),
92     ('platform',         None),
93     ('pyOpenSSL',        'OpenSSL'),
94     ('OpenSSL',          None),
95     ('simplejson',       'simplejson'),
96     ('pycrypto',         'Crypto'),
97     ('pyasn1',           'pyasn1'),
98     ('service-identity', 'service_identity'),
99     ('characteristic',   'characteristic'),
100     ('pyasn1-modules',   'pyasn1_modules'),
101     ('cryptography',     'cryptography'),
102     ('cffi',             'cffi'),
103     ('six',              'six'),
104     ('enum34',           'enum'),
105     ('pycparser',        'pycparser'),
106 ]
107
108 # Dependencies for which we don't know how to get a version number at run-time.
109 not_import_versionable = [
110     'zope.interface',
111 ]
112
113 # Dependencies reported by pkg_resources that we can safely ignore.
114 ignorable = [
115     'argparse',
116     'pyutil',
117     'zbase32',
118     'distribute',
119     'twisted-web',
120     'twisted-core',
121     'twisted-conch',
122 ]
123
124 import sys
125
126 # Don't try to get the version number of setuptools in frozen builds, because
127 # that triggers 'site' processing that causes failures. Note that frozen
128 # builds still (unfortunately) import pkg_resources in .tac files, so the
129 # entry for setuptools in install_requires above isn't conditional.
130 if not hasattr(sys, 'frozen'):
131     package_imports.append(('setuptools', 'setuptools'))
132
133
134 setup_requires = []
135
136
137 # These are suppressed globally:
138
139 global_deprecation_messages = [
140     "BaseException.message has been deprecated as of Python 2.6",
141     "twisted.internet.interfaces.IFinishableConsumer was deprecated in Twisted 11.1.0: Please use IConsumer (and IConsumer.unregisterProducer) instead.",
142     "twisted.internet.interfaces.IStreamClientEndpointStringParser was deprecated in Twisted 14.0.0: This interface has been superseded by IStreamClientEndpointStringParserWithReactor.",
143 ]
144
145 # These are suppressed while importing dependencies:
146
147 deprecation_messages = [
148     "the sha module is deprecated; use the hashlib module instead",
149     "object.__new__\(\) takes no parameters",
150     "The popen2 module is deprecated.  Use the subprocess module.",
151     "the md5 module is deprecated; use hashlib instead",
152     "twisted.web.error.NoResource is deprecated since Twisted 9.0.  See twisted.web.resource.NoResource.",
153     "the sets module is deprecated",
154 ]
155
156 runtime_warning_messages = [
157     "Not using mpz_powm_sec.  You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.",
158 ]
159
160 warning_imports = [
161     'nevow',
162     'twisted.persisted.sob',
163     'twisted.python.filepath',
164     'Crypto.Hash.SHA',
165 ]