[tahoe-dev] new foolscap version requirement

Brian Warner warner at lothar.com
Wed Jan 5 18:48:59 UTC 2011

> Author: david-sarah <david-sarah at jacaranda.org>
> Date:   Thu Dec 30 22:00:39 2010 -0800
>     Update foolscap version requirement to 0.6.0, to address
>     http://foolscap.lothar.com/trac/ticket/167
> -                  "foolscap[secure_connections] >= 0.5.1",
> +                  # foolscap < 0.6 is incompatible with Twisted 10.2.0.
> +                  "foolscap[secure_connections] >= 0.6.0",

Sigh. While I understand the utility of this change, and I'm not sure I
could suggest something better, it makes me sad, because we don't
actually need the newer foolscap most of the time. Very few people are
using Twisted-10.2 right now, because it's only been out for a month, so
it's not in any linux/bsd distributions: the only way to get it is to
install it yourself (or if tahoe's "setup.py build" decides to fetch
it), and in that case you're probably also installing foolscap yourself.

But for everyone else, this introduces a needless incompatibility. For
example, the folks running on the current Ubuntu long-term support
release ("Lucid") get twisted-10.0 and foolscap-0.5.1, which Tahoe
handled just fine a few days ago. My local development tree just stopped
working after pulling the change, because I've got twisted-10.1 and
foolscap-0.5.1 .

What I guess I'm really complaining about is that setuptool's limited
version-compatibility language doesn't provide a way to say "we need
foolscap >=0.5.1, unless you happen to currently have twisted>=10.2, in
which case we need foolscap >=0.6.0". A trivial python expression which
used twisted.__version__ and foolscap.__version__ could do this, but
that's not what setuptools accepts (mostly because it's awfully useful
to express the version dependencies in a declarative,
non-Turing-complete language, especially if you want to act on that
information without unpacking and executing somebody's package first).

In my "unsuck" branch, the way I'd handle this would be to have the
"please tell me if my dependencies will work" utility implement the
python expression, and then if it sees twisted>=10.2 and foolscap<=0.6.0
it can tell you exactly what the problem is and how to fix it (by
upgrading your foolscap or downgrading your twisted). Then the "please
make my dependencies Just Work" utility would resolve the problem by
fetching and building foolscap-0.6.0 into a local directory where Tahoe
could find it.


More information about the tahoe-dev mailing list