Delete some crufty workarounds.

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
This commit is contained in:
Daira Hopwood 2016-03-15 17:30:35 +00:00
parent 389efdf02a
commit f1890c09f2

View File

@ -51,6 +51,31 @@ install_requires = [
"characteristic >= 14.0.0", # latest service-identity 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
# * On Linux we need at least Twisted 10.1.0 for inotify support
# used by the drop-upload frontend.
# * We also need Twisted 10.1.0 for the FTP frontend in order for
# Twisted's FTP server to support asynchronous close.
# * The SFTP frontend depends on Twisted 11.0.0 to fix the SSH server
# rekeying bug <https://twistedmatrix.com/trac/ticket/4395>
# * The FTP frontend depends on Twisted >= 11.1.0 for
# filepath.Permissions
# * Nevow 0.11.1 depends on Twisted >= 13.0.0.
"Twisted >= 13.0.0",
# We need Nevow >= 0.11.1 which can be installed using pip.
"Nevow >= 0.11.1",
# * pyOpenSSL is required in order for foolscap to provide secure connections.
# Since foolscap doesn't reliably declare this dependency in a machine-readable
# way, we need to declare a dependency on pyOpenSSL ourselves. Tahoe-LAFS does
# not *directly* depend on pyOpenSSL.
# * pyOpenSSL >= 0.13 is needed in order to avoid
# <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 needed in order to avoid
# <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2474>.
"pyOpenSSL >= 0.14",
]
# Includes some indirect dependencies, but does not include allmydata.
@ -73,6 +98,11 @@ package_imports = [
('service-identity', 'service_identity'),
('characteristic', 'characteristic'),
('pyasn1-modules', 'pyasn1_modules'),
('cryptography', 'cryptography'),
('cffi', 'cffi'),
('six', 'six'),
('enum34', 'enum'),
('pycparser', 'pycparser'),
]
# Dependencies for which we don't know how to get a version number at run-time.
@ -100,130 +130,8 @@ import sys
if not hasattr(sys, 'frozen'):
package_imports.append(('setuptools', 'setuptools'))
# * On Linux we need at least Twisted 10.1.0 for inotify support
# used by the drop-upload frontend.
# * We also need Twisted 10.1.0 for the FTP frontend in order for
# Twisted's FTP server to support asynchronous close.
# * The SFTP frontend depends on Twisted 11.0.0 to fix the SSH server
# rekeying bug <https://twistedmatrix.com/trac/ticket/4395>
# * The FTP frontend depends on Twisted >= 11.1.0 for
# filepath.Permissions
#
# On Windows, Twisted >= 12.2.0 has a dependency on pywin32.
# Since pywin32 can only be installed manually, we fall back to
# requiring earlier versions of Twisted and Nevow if it is not
# 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. 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
if _use_old_Twisted_and_Nevow:
install_requires += [
"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",
"Nevow >= 0.11.1",
]
# * pyOpenSSL is required in order for foolscap to provide secure connections.
# Since foolscap doesn't reliably declare this dependency in a machine-readable
# way, we need to declare a dependency on pyOpenSSL ourselves. Tahoe-LAFS does
# not *directly* depend on pyOpenSSL.
#
# * pyOpenSSL >= 0.13 is needed in order to avoid
# <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
# attempts to compile code dynamically, which causes problems on many systems.
# It also depends on the libffi OS package which may not be installed.
# <https://bitbucket.org/cffi/cffi/issue/109/enable-sane-packaging-for-cffi>
# <https://bitbucket.org/cffi/cffi/issue/70/cant-install-cffi-using-pip-on-windows>
#
# So, if pyOpenSSL 0.14 has *already* been installed and is importable, we
# want to accept it; otherwise we ask for pyOpenSSL 0.13 or 0.13.1.
# <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2193>
#
# We don't rely on pkg_resources to tell us the installed pyOpenSSL version
# number, because pkg_resources telling us that we have 0.14 is not sufficient
# evidence that 0.14 will be the imported version (or will work correctly).
# One possible reason why it might not be is explained in
# <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1246#comment:6> and
# <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1258>.
_can_use_pyOpenSSL_0_14 = False
try:
import OpenSSL
pyOpenSSL_ver = OpenSSL.__version__.split('.')
if int(pyOpenSSL_ver[0]) > 0 or int(pyOpenSSL_ver[1]) >= 14:
_can_use_pyOpenSSL_0_14 = True
except Exception:
pass
if _can_use_pyOpenSSL_0_14:
install_requires += [
# Although we checked for pyOpenSSL >= 0.14 above, we only actually
# need pyOpenSSL >= 0.13; requiring 0.14 here cannot help.
"pyOpenSSL >= 0.13",
# ... and now all the new stuff that pyOpenSSL 0.14 transitively
# depends on. We specify these explicitly because setuptools is
# bad at correctly resolving indirect dependencies (e.g. see
# <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2286>).
#
"cryptography",
"cffi >= 0.8", # latest cryptography depends on this version
"six >= 1.4.1", # latest cryptography depends on this version
"enum34", # latest cryptography depends on this
"pycparser", # cffi depends on this
]
package_imports += [
('cryptography', 'cryptography'),
('cffi', 'cffi'),
('six', 'six'),
('enum34', 'enum'),
('pycparser', 'pycparser'),
]
else:
install_requires += [
"pyOpenSSL >= 0.13, <= 0.13.1",
]
# These are suppressed globally: