Comment 2 for bug 782414

Revision history for this message
Zooko Wilcox-O'Hearn (zooko) wrote :

In this comment I suggest an alternate fix.

In my opinion this is a flaw in the packaging of foolscap for Ubuntu, and will cause this trouble for any code which tries to use foolscap and to specify that it requires foolscap's "secure_connections" feature. In my opinion the easiest way to fix this is to add the Python packaging metadata to foolscap, as described above.

However, if for some reason that doesn't work, an alternate approach would be to change Tahoe-LAFS as packaged in Ubuntu, remove the part of its code (in http://tahoe-lafs.org/trac/tahoe-lafs/browser/trunk/src/allmydata/_auto_deps.py?annotate=blame&rev=4976#L21 ) that says that it depends on 'foolscap["secure_connections"]' and replace it with code that says it depends on just 'foolscap'. At the same time, add code that says that it depends on pyOpenSSL. Here is a patch to Tahoe-LAFS that will do that.

diff -rN -u old-pristine/src/allmydata/_auto_deps.py new-pristine/src/allmydata/_auto_deps.py
--- old-pristine/src/allmydata/_auto_deps.py 2011-05-13 16:16:49.000000000 -0600
+++ new-pristine/src/allmydata/_auto_deps.py 2011-05-13 16:16:50.000000000 -0600
@@ -23,7 +23,21 @@
     # of size N.
     # foolscap < 0.6 is incompatible with Twisted 10.2.0.
     # foolscap 0.6.1 quiets a DeprecationWarning.
- "foolscap[secure_connections] >= 0.6.1",
+ "foolscap >= 0.6.1",
+
+ # foolscap requires pyOpenSSL in order to provide secure
+ # connections, but unfortunately we can't rely on distributions of
+ # foolscap to declare that they provide the "secure_connections"
+ # feature even when they do (see
+ # http://foolscap.lothar.com/trac/ticket/174 ).
+ # Therefore, we specify here that Tahoe-LAFS depends on pyOpenSSL.
+ # Note that this is a fiction--Tahoe-LAFS itself does not require
+ # pyOpenSSL for anything. If a future version of foolscap provided
+ # secure connections without using pyOpenSSL, or required a newer
+ # version of pyOpenSSL, or required a different library than
+ # pyOpenSSL, then Tahoe-LAFS users who are provided with that
+ # newer version of foolscap would need to edit this declaration.
+ "pyOpenSSL",

     "Nevow >= 0.6.0",