From 8b4082677477daf1f5afeb77baa339e202b137b6 Mon Sep 17 00:00:00 2001
From: david-sarah <david-sarah@jacaranda.org>
Date: Thu, 21 Jul 2011 16:36:58 -0700
Subject: [PATCH] Update the dependency on Twisted to >= 10.1. This allows us
 to simplify some documentation: it's no longer necessary to install pywin32
 on Windows, or apply a patch to Twisted in order to use the FTP frontend.
 fixes #1274, #1438. refs #1429

---
 NEWS.rst                        | 11 +++++++++++
 docs/frontends/FTP-and-SFTP.rst |  8 --------
 docs/quickstart.rst             |  7 -------
 setup.py                        |  5 +++--
 src/allmydata/_auto_deps.py     |  5 ++++-
 5 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/NEWS.rst b/NEWS.rst
index 0a051428..873d06c4 100644
--- a/NEWS.rst
+++ b/NEWS.rst
@@ -12,8 +12,19 @@ Release 1.9.0 (2011-??-??)
   will throw an exception if they gather stats from a new storage
   server and it sends a "None" for a percentile. (`#1392`_)
 
+Compatibility and Dependencies
+''''''''''''''''''''''''''''''
+
+- 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`_, `#1438`_)
+
+.. _`#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
+.. _`#1438`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1438
+
 
 Release 1.8.2 (2011-01-30)
 --------------------------
diff --git a/docs/frontends/FTP-and-SFTP.rst b/docs/frontends/FTP-and-SFTP.rst
index 15e60bc2..805d5c72 100644
--- a/docs/frontends/FTP-and-SFTP.rst
+++ b/docs/frontends/FTP-and-SFTP.rst
@@ -178,14 +178,6 @@ uses (which is a Python wrapper around the C++ -based Crypto++ library, a
 library that is frequently installed as /usr/lib/libcryptopp.a, to avoid
 problems with non-alphanumerics in filenames).
 
-The FTP server requires code in Twisted that enables asynchronous closing of
-file-upload operations. This code is present in Twisted-10.1 (released
-27-June-2010), but not in Twisted-10.0 (released 01-March-2010). To use
-Tahoe-LAFS's FTP server with Twisted-10.0 or earlier, you will need to apply
-the patch attached to http://twistedmatrix.com/trac/ticket/3462 . The
-Tahoe-LAFS node will refuse to start the FTP server unless it detects the
-necessary support code in Twisted. This patch is not needed for SFTP.
-
 Immutable and Mutable Files
 ===========================
 
diff --git a/docs/quickstart.rst b/docs/quickstart.rst
index 78863ef5..1d15faf3 100644
--- a/docs/quickstart.rst
+++ b/docs/quickstart.rst
@@ -38,13 +38,6 @@ install Python v2.6. Make sure that the path to the installation
 directory has no spaces in it (e.g. on Windows, do not install Python 
 in the "Program Files" directory).
 
-If you are on Windows, you now must manually install the pywin32 
-package from `the pywin32 site 
-<http://sourceforge.net/projects/pywin32/files/>`_ before getting 
-Tahoe-LAFS. Make sure to get the correct file for the version of Python 
-you are using -- e.g. ending in "py2.6.exe" for Python v2.6. If using 
-64-bit Windows, the file should have "win-amd64" in its name.
-
 Get Tahoe-LAFS
 --------------
 
diff --git a/setup.py b/setup.py
index f527012b..09638d19 100644
--- a/setup.py
+++ b/setup.py
@@ -140,8 +140,9 @@ setup_requires.append('darcsver >= 1.7.2')
 # 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 if/when we require Nevow >= 0.9.33.
-setup_requires.append('Twisted >= 2.4.0')
+# 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')]
 
 # setuptools_darcs is required to produce complete distributions (such
 # as with "sdist" or "bdist_egg"), unless there is a
diff --git a/src/allmydata/_auto_deps.py b/src/allmydata/_auto_deps.py
index e8ff4bc7..c479985c 100644
--- a/src/allmydata/_auto_deps.py
+++ b/src/allmydata/_auto_deps.py
@@ -16,7 +16,10 @@ install_requires = [
 
     "zope.interface",
 
-    "Twisted >= 2.4.0",
+    # 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
+    # support asynchronous close.
+    "Twisted >= 10.1.0",
 
     # foolscap < 0.5.1 had a performance bug which spent
     # O(N**2) CPU for transferring large mutable files
-- 
2.45.2