[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