Compatibility and Dependencies
''''''''''''''''''''''''''''''
+- An incompatibility of zope.interface version 3.6.4 with Nevow has
+ been resolved. Tahoe-LAFS now requires one of the exact versions
+ v3.3.1, v3.5.3, or v3.6.1 of zope.interface. (`#1435`_)
- The Twisted dependency has been raised to version 10.1. This ensures
that we no longer require pywin32 on Windows, and that it is never
necessary to patch Twisted in order to use the FTP frontend.
.. _`#1274`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1274
.. _`#1392`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1392
.. _`#1409`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1409
+.. _`#1435`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1435
.. _`#1438`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1438
# http://pypi.python.org/pypi/darcsver
setup_requires.append('darcsver >= 1.7.2')
-# Nevow requires Twisted to setup, but prior to Nevow v0.9.33, didn't
-# declare that requirement in a way that enables setuptools to satisfy
-# the requirement before Nevow's setup.py tries to "import twisted".
-# This only matters when Twisted is not already installed.
-# See http://divmod.org/trac/ticket/2629
-# Retire this hack when
+# Nevow imports itself when building, which causes Twisted and zope.interface
+# to be imported. We need to make sure that the versions of Twisted and
+# zope.interface used at build time satisfy Nevow's requirements. If not
+# then there are two problems:
+# - prior to Nevow v0.9.33, Nevow didn't declare its dependency on Twisted
+# in a way that enabled setuptools to satisfy that requirement at
+# build time.
+# - some versions of zope.interface, e.g. v3.6.4, are incompatible with
+# Nevow, and we need to avoid those both at build and run-time.
+#
+# This only matters when compatible versions of Twisted and zope.interface
+# are not already installed. Retire this hack when
# https://bugs.launchpad.net/nevow/+bug/812537 has been fixed.
-setup_requires += [req for req in install_requires if req.startswith('Twisted')]
+setup_requires += [req for req in install_requires if req.startswith('Twisted') or req.startswith('zope.interface')]
# setuptools_darcs is required to produce complete distributions (such
# as with "sdist" or "bdist_egg"), unless there is a
# Feisty has simplejson 1.4
"simplejson >= 1.4",
- "zope.interface",
+ # zope.interface 3.6.4 is incompatible with Nevow.
+ # These are the versions packaged in major versions of Debian or Ubuntu, or in pkgsrc.
+ "zope.interface == 3.3.1, == 3.5.3, == 3.6.1",
# On Windows we need at least Twisted 9.0 to avoid an indirect dependency on pywin32.
# We also need Twisted 10.1 for the FTP frontend in order for Twisted's FTP server to