[tahoe-lafs-trac-stream] [tahoe-lafs] #1383: foolscap 0.6.1 has no such extra feature 'secure_connections'
tahoe-lafs
trac at tahoe-lafs.org
Wed Mar 30 10:57:54 PDT 2011
#1383: foolscap 0.6.1 has no such extra feature 'secure_connections'
-------------------------------------------+--------------------------------
Reporter: zooko | Owner: somebody
Type: defect | Status: new
Priority: minor | Milestone: undecided
Component: packaging | Version: 1.8.2
Keywords: setuptools foolscap pyOpenSSL | Launchpad Bug:
-------------------------------------------+--------------------------------
Charles N Wyble posted this:
http://tahoe-lafs.org/pipermail/tahoe-dev/2011-March/006239.html
{{{
harles at charles-laptop:~/projects/bluejacket/allmydata-tahoe-1.8.2$
python setup.py build
Traceback (most recent call last):
File "setup.py", line 78, in <module>
import setuptools; setuptools.bootstrap_install_from = egg
File
"/home/charles/projects/bluejacket/allmydata-
tahoe-1.8.2/setuptools-0.6c16dev3.egg/setuptools/__init__.py",
line 2, in <module>
from setuptools.extension import Extension, Library
File
"/home/charles/projects/bluejacket/allmydata-
tahoe-1.8.2/setuptools-0.6c16dev3.egg/setuptools/extension.py",
line 2, in <module>
from dist import _get_unpatched
File
"/home/charles/projects/bluejacket/allmydata-
tahoe-1.8.2/setuptools-0.6c16dev3.egg/setuptools/dist.py",
line 6, in <module>
from setuptools.command.sdist import sdist
File
"/home/charles/projects/bluejacket/allmydata-
tahoe-1.8.2/setuptools-0.6c16dev3.egg/setuptools/command/sdist.py",
line 5, in <module>
import os, re, sys, pkg_resources
File
"/home/charles/projects/bluejacket/allmydata-
tahoe-1.8.2/setuptools-0.6c16dev3.egg/pkg_resources.py",
line 2628, in <module>
working_set.require(__requires__)
File
"/home/charles/projects/bluejacket/allmydata-
tahoe-1.8.2/setuptools-0.6c16dev3.egg/pkg_resources.py",
line 676, in require
needed = self.resolve(parse_requirements(requirements))
File
"/home/charles/projects/bluejacket/allmydata-
tahoe-1.8.2/setuptools-0.6c16dev3.egg/pkg_resources.py",
line 580, in resolve
requirements.extend(dist.requires(req.extras)[::-1])
File
"/home/charles/projects/bluejacket/allmydata-
tahoe-1.8.2/setuptools-0.6c16dev3.egg/pkg_resources.py",
line 2181, in requires
"%s has no such extra feature %r" % (self, ext)
pkg_resources.UnknownExtra: foolscap 0.6.1 has no such extra feature
'secure_connections'
charles at charles-laptop:~/projects/bluejacket/allmydata-tahoe-1.8.2$
}}}
I guess you have an installation of foolscap which doesn't declare that it
has an extra feature named {{{'secure_connections'}}}. Tahoe-LAFS
specifies that it depends on foolscap ''with'' the
{{{'secure_connections'}}} feature.
Could you help us make sure this is what happened by telling us about your
installation of foolscap? I haven't heard of this problem before, so
perhaps you did something that most people don't do, such as installing
foolscap yourself before installing Tahoe-LAFS, and doing so without
having setuptools installed.
A quick workaround for you would be to delete whatever installation of
foolscap you have there and rerun Tahoe-LAFS's {{{python setup.py
build}}}. This will cause it to download foolscap source code and build a
new package.
I'm not sure what a better long-term solution would be. I can think of a
few things that would make sure this problem doesn't happen again to
someone else:
1. The maintainer of foolscap (Brian Warner) could make {{{setuptools}}} a
hard requirement to build foolscap packages so that people wouldn't get
foolscap packages without the {{{'secure_connections'}}} feature declared.
2. We could hack the fork of setuptools which is bundled into the Tahoe-
LAFS source tree (sometimes called "zetuptoolz") so that it doesn't treat
a missing extra as a fatal error. The theory being that if the package
doesn't declare an extra then probably it actually has that extra but
didn't declare it.
3. The maintainer of foolscap could make {{{pyOpenSSL}}} a hard
requirement of foolscap instead of an "extra". I think there used to be a
user of foolscap who wanted to use it without secure connections, but
perhaps they've stopped using it that way. In any case, it wouldn't harm
them very much if it came with secure connections even if they didn't want
to use them.
Hm... try as I might I can't think of any other solutions that I would
support besides these three. One solution that I would ''not'' support is
to add documentation to [http://tahoe-lafs.org/source/tahoe-
lafs/trunk/docs/quickstart.html quickstart.html] instructing the user to
install {{{pyOpenSSL}}} manually, or to install {{{setuptools}}} manually
before installing foolscap.
Oh, there is one more possibility:
4. Add a declaration to Tahoe-LAFS that it depends on {{{pyOpenSSL}}} and
remove from foolscap the declaration that it depends on {{{pyOpenSSL}}}.
This is technically incorrect (Tahoe-LAFS doesn't depend on
{{{pyOpenSSL}}} directly), but Tahoe-LAFS's build scripts are guaranteed
to be executed with setuptools present, so we can at least make it work
for all users that way.
--
Ticket URL: <http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1383>
tahoe-lafs <http://tahoe-lafs.org>
secure decentralized storage
More information about the tahoe-lafs-trac-stream
mailing list