"pycrypto >= 2.1.0, != 2.2, != 2.4",
# <http://www.voidspace.org.uk/python/mock/>, 0.8.0 provides "call"
- "mock >= 0.8.0",
+ # mock 1.1.x seems to cause problems on several buildslaves.
+ "mock >= 0.8.0, <= 1.0.1",
# pycryptopp-0.6.0 includes ed25519
"pycryptopp >= 0.6.0",
('python', None),
('platform', None),
('pyOpenSSL', 'OpenSSL'),
+ ('OpenSSL', None),
('simplejson', 'simplejson'),
('pycrypto', 'Crypto'),
('pyasn1', 'pyasn1'),
# 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