mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-06-23 09:15:32 +00:00
Delete some crufty workarounds.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
This commit is contained in:
@ -51,6 +51,31 @@ install_requires = [
|
|||||||
"characteristic >= 14.0.0", # latest service-identity depends on this version
|
"characteristic >= 14.0.0", # latest service-identity depends on this version
|
||||||
"pyasn1 >= 0.1.8", # 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
|
"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.
|
# Includes some indirect dependencies, but does not include allmydata.
|
||||||
@ -73,6 +98,11 @@ package_imports = [
|
|||||||
('service-identity', 'service_identity'),
|
('service-identity', 'service_identity'),
|
||||||
('characteristic', 'characteristic'),
|
('characteristic', 'characteristic'),
|
||||||
('pyasn1-modules', 'pyasn1_modules'),
|
('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.
|
# 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'):
|
if not hasattr(sys, 'frozen'):
|
||||||
package_imports.append(('setuptools', 'setuptools'))
|
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 = []
|
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:
|
# These are suppressed globally:
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user