[tahoe-lafs-trac-stream] [Tahoe-LAFS] #2392: add dependency on pypiwin32 to satisfy Twisted on Windows

Tahoe-LAFS trac at tahoe-lafs.org
Fri Mar 25 16:59:21 UTC 2016


#2392: add dependency on pypiwin32 to satisfy Twisted on Windows
---------------------------+----------------------------------
     Reporter:  zooko      |      Owner:  glyph
         Type:  defect     |     Status:  new
     Priority:  normal     |  Milestone:  undecided
    Component:  packaging  |    Version:  1.10.0
   Resolution:             |   Keywords:  design-review-needed
Launchpad Bug:             |
---------------------------+----------------------------------

Comment (by warner):

 `twisted[windows_SOMETHING]` is how I'd prefer to do this. We're no longer
 trying to avoid pyopenssl, in fact because of a setuptools bug/lacking-
 feature, I think we need `twisted[tls,windows_SOMETHING]`. (Foolscap
 requires `twisted[tls]`, and Twisted requires `foolscap`, but since
 setuptools will see Tahoe's `twisted` first, it will install `twisted`
 (without TLS), and then when it gets to foolscap later, it ignores the
 `[tls]`, and we miss out on `service-identity`, and things break).

 At present (Twisted-16.0.0), `twisted[windows_platform]` would also pull
 in the following `_PLATFORM_INDEPENDENT` features:

 * `[tls]` : that ok
 * `[conch]` : that's ok too
 * `[soap]`: um, I'd like to avoid it: 760KB of wheels, `wstools`,
 `defusedxml`, and `docutils`
 * `[serial]`: probably small, but completely unrelated to Tahoe

 Also, because I suspect the same setuptools bug would cause problems if we
 Tahoe had two separate Twisted dependencies with different extras (e.g.
 `Twisted[tls], Twisted[windows_platform]`), the conditional logic in our
 `setup.py`/`_auto_deps.py` would need to be a bit grotty. So if it doesn't
 sound like Twisted is likely to change its windows dependency any time
 soon, I think we can continue to just conditionally depend on `pypiwin32`
 when `setup.py` is run on windows.

 BTW, we're all about wheels now. The existing `pypiwin32` wheels should
 suit us just fine.

 If you *were* going to re-slice the Twisted extras, maybe I'd suggest just
 a `Twisted[windows]` extra, that only pulls in what's necessary to run the
 reactor on windows (`pypiwin32`). In fact I'm not entirely sure what the
 `windows_platform` and `osx_platform` extras are for. E.g. on OS-X it
 would seem appropriate for us for depend on `Twisted[osx]`, just in case
 there's some special magic that's necessary, but the current
 `Twisted[osx_platform]` includes `pyobjc`, which is gigantic, not
 available as wheels, takes something like an hour to compile, and not
 something we need (yet.. if/when we manage a non-web-based GUI, it may
 become necessary).

--
Ticket URL: <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2392#comment:8>
Tahoe-LAFS <https://Tahoe-LAFS.org>
secure decentralized storage


More information about the tahoe-lafs-trac-stream mailing list