# * foolscap 0.8.0 generates 2048-bit RSA-with-SHA-256 signatures,
# rather than 1024-bit RSA-with-MD5. This also allows us to work
# with a FIPS build of OpenSSL.
- "foolscap >= 0.8.0",
+ "foolscap >= 0.10.1",
# Needed for SFTP.
# pycrypto 2.2 doesn't work due to <https://bugs.launchpad.net/pycrypto/+bug/620253>
# pycrypto 2.4 doesn't work due to <https://bugs.launchpad.net/pycrypto/+bug/881130>
"pycrypto >= 2.1.0, != 2.2, != 2.4",
- # <http://www.voidspace.org.uk/python/mock/>, 0.8.0 provides "call"
- "mock >= 0.8.0",
-
# pycryptopp-0.6.0 includes ed25519
"pycryptopp >= 0.6.0",
"service-identity", # this is needed to suppress complaints about being unable to verify certs
"characteristic >= 14.0.0", # latest service-identity depends on this version
- "pyasn1 >= 0.1.4", # latest pyasn1-modules depends on this version
+ "pyasn1 >= 0.1.8", # latest pyasn1-modules depends on this version
"pyasn1-modules >= 0.0.5", # service-identity depends on this
]
('python', None),
('platform', None),
('pyOpenSSL', 'OpenSSL'),
+ ('OpenSSL', None),
('simplejson', 'simplejson'),
('pycrypto', 'Crypto'),
('pyasn1', 'pyasn1'),
- ('mock', 'mock'),
('service-identity', 'service_identity'),
('characteristic', 'characteristic'),
('pyasn1-modules', 'pyasn1_modules'),
# Dependencies for which we don't know how to get a version number at run-time.
not_import_versionable = [
'zope.interface',
- 'mock',
- 'pyasn1',
]
# Dependencies reported by pkg_resources that we can safely ignore.
# already installed.
# <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2028>
#
+# When the fallback is used we also need to work around the fact
+# that Nevow imports itself when building, which causes Twisted
+# and zope.interface to be imported; therefore, we need to set
+# setup_requires to make sure that the versions of Twisted and
+# zope.interface used at build time satisfy Nevow's requirements.
+#
# In cases where this fallback isn't needed, we prefer Nevow >= 0.11.1
# which can be installed using pip, and Twisted >= 13.0.0 which
-# Nevow 0.11.1 depends on.
+# Nevow 0.11.1 depends on. In this case we should *not* use the
+# setup_requires hack, because if we do then the build will break
+# when Twisted < 13.0.0 is already installed (even though it could
+# have succeeded by building a later version under support/ ).
+#
# <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2032>
# <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2249>
# <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2291>
+# <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2286>
+
+setup_requires = []
_use_old_Twisted_and_Nevow = False
if sys.platform == "win32":
try:
import win32api
+ [win32api]
except ImportError:
_use_old_Twisted_and_Nevow = True
"Twisted >= 11.1.0, <= 12.1.0",
"Nevow >= 0.9.33, <= 0.10",
]
+ setup_requires += [req for req in install_requires if req.startswith('Twisted')
+ or req.startswith('zope.interface')]
else:
install_requires += [
"Twisted >= 13.0.0",
# not *directly* depend on pyOpenSSL.
#
# * pyOpenSSL >= 0.13 is needed in order to avoid
-# <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2005>.
+# <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2005>, and also to check the
+# version of OpenSSL that pyOpenSSL is using.
#
# * pyOpenSSL >= 0.14 is built on the 'cryptography' package which depends
# on 'cffi' (and indirectly several other packages). Unfortunately cffi