[Python-modules-team] Bug#510901: python-foolscap: should advertise [secure_connections] feature to setuptools

warner-debbugs at lothar.com warner-debbugs at lothar.com
Mon Jan 5 20:02:21 UTC 2009


Package: python-foolscap
Version: 0.3.2.dfsg-1
Severity: normal

[note: I'm the upstream author of Foolscap]

Hey there.. first off, thanks for getting foolscap into debian!

I'm running into a problem that results from differences between the .deb
package that I used to build locally (which uses the packaging rules in the
foolscap mercurial repository in the misc/sid/debian/ directory) and the new
package that just arrived in sid.

Our "Tahoe" project uses setuptools and pkg_resources to declare its
dependencies. When it announces a dependency on foolscap, it also requires an
"extra feature" named [secure_connections]. Foolscap announces that it
provides this extra feature, but only when the pyOpenSSL package is
available. We use this combination to make sure that everything gets built
from source correctly.

The foolscap 'setup.py' makes this announcement by adding an extra argument
to the call to setup():

  setup_args['extras_require'] = { 'secure_connections' : ["pyOpenSSL"] }

The problem is that the package that is currently in sid does not make this
announcement, so Tahoe fails to build against it. There's a one-line shell
command you can use to see if the installed foolscap package provides this
feature or not:

  python -c 'from pkg_resources import require; require("foolscap[secure_connections]")'

When run against my old package, it exits silently. When run against the new
package from sid, it complains:

 % python -c 'from pkg_resources import require; require("foolscap[secure_connections]")'
 Traceback (most recent call last):
   File "<string>", line 1, in <module>
   File "/usr/lib/python2.5/site-packages/pkg_resources.py", line 626, in require
     needed = self.resolve(parse_requirements(requirements))
   File "/usr/lib/python2.5/site-packages/pkg_resources.py", line 529, in resolve
     requirements.extend(dist.requires(req.extras)[::-1])
   File "/usr/lib/python2.5/site-packages/pkg_resources.py", line 2115, in requires
     "%s has no such extra feature %r" % (self, ext)
 pkg_resources.UnknownExtra: foolscap 0.3.2 has no such extra feature 'secure_connections'


Since the extras_require= argument in the foolscap setup.py is
conditionalized upon the availability of setuptools (so it can run even
without setuptools), the problem might simply be that the sid package was
built in an environment where setuptools was unavailable. If so, the simplest
fix is probably to add python-setuptools to the "Build-Depends:" line.

I noticed that the sid package installs fewer egg-related files than my old
package did, but I think that's related to the lack of setuptools during the
build. When I debuild the package on a setuptools-capable machine, there are
more .egg-info files in the .deb, including a
foolscap-0.3.2.egg-info/requires.txt which mentions the [secure_connections]
feature.


thanks!
 -Brian


-- System Information:
Debian Release: 5.0
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: i386 (i686)

Kernel: Linux 2.6.22.1
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
Shell: /bin/sh linked to /bin/bash

Versions of packages python-foolscap depends on:
ii  python                        2.5.2-3    An interactive high-level object-o
ii  python-central                0.6.8      register and build utility for Pyt
ii  python-twisted-core           8.1.0-4    Event-based framework for internet
ii  python-twisted-web            8.1.0-1    An HTTP protocol implementation to
ii  python-zopeinterface          3.3.1-7    The implementation of interface de

Versions of packages python-foolscap recommends:
hi  python-openssl                0.6-5      Python wrapper around the OpenSSL 
ii  python-twisted-names          8.1.0-1    A DNS protocol implementation with

python-foolscap suggests no packages.

-- no debconf information





More information about the Python-modules-team mailing list