[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 13:54:21 PDT 2011
#1383: foolscap 0.6.1 has no such extra feature 'secure_connections'
---------------------------+------------------------------------------------
Reporter: zooko | Owner: somebody
Type: defect | Status: new
Priority: major | Milestone: undecided
Component: packaging | Version: 1.8.2
Resolution: | Keywords: setuptools foolscap pyOpenSSL
Launchpad Bug: |
---------------------------+------------------------------------------------
Changes (by davidsarah):
* priority: minor => major
Old description:
> 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.
New description:
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.
--
Comment:
(Removed commentary about possible fixes from Description; the Description
should only describe the bug.)
zooko wrote:
> 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.
Charles replied on tahoe-dev that he believed the installation was by apt-
get, on fully-patched Ubuntu 11.04 alpha3.
> 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.
Well, if the installed package doesn't satisfy the dependency (for
whatever reason), then setuptools should try to download a version that
does. Even if the latter has the same version, it might not have the same
packaging error.
OTOH I'm pretty hacked off with the quantity and subtlety of setuptools
bugs and misdesign; we've reached a point of diminishing returns in
attempting to fix 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#comment:1>
tahoe-lafs <http://tahoe-lafs.org>
secure decentralized storage
More information about the tahoe-lafs-trac-stream
mailing list