On May 7, 2010, at 2:08 PM, Michael Bayer wrote:

> I'd only mention that Storm has a C extension/non C extension flag as well, 
> and only offers one source distribution on Pypi.     You have to modify a 
> variable directly within setup.py.  Our setup.py features the same capability 
> (its just our C extension is off by default for 0.6 since it was just 
> written, which is the same case for when Storm first introduced its C 
> extension).


It occurs to me that Twisted has a similar problem (except there's no 
installation flag: it just builds the C extensions if it possibly can).

The problem I see here is that the dependencies list of a particular project 
should be a complete expression of the features that the source code requires 
to function properly.  If a C extension is present for optimization purposes 
only, then I don't think it ever needs to be mentioned in a dependency listing. 
 Performance tuning is a build and deployment issue, not a 
dependency-correctness issue.  However, if a C extension wraps features 
necessary for an application to work correctly, without which it will simply 
traceback and die, then it should be possible for the application to say "I 
depend on this functionality".

After all, it's kind of bogus if I say "I depend on library X", and then 
library X gets installed, but half of it is missing for some reason.  It's 
bogus if it's missing for any reason at all, really.  The "C extension couldn't 
be compiled" one is common, but there are other configuration and build issues 
which could prevent a distribution from being fully functional.

Is there already a good way to express a dependency on a portion of a source 
distribution, or "optional" features?  A way to list one source distribution on 
PyPI so that it will be present under multiple names, one for each optional 
chunk?

_______________________________________________
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig

Reply via email to