On Wed, Dec 4, 2013 at 6:10 AM, Nick Coghlan <ncogh...@gmail.com> wrote: > There was some really good feedback in the binary dependency thread, > but it ended up going off on a few different tangents. Rather than > expecting people to read the whole thing, I figured I'd try to come up > with a summary of where it has gone so far, and where we might want to > take it from here. > > Given the diversity of topics, this should arguably be multiple new > threads, but that approach has its own problems, since some of these > topics are at least somewhat interrelated. In several cases, some of > the discussion could possible move to the tracker issues I created :) > > == Regarding documentation == > > One of the things I got from the thread is that we don't currently > have a clear overview published anywhere of *why* people use binary > extensions. The distutils docs and both dated and focus solely on the > mechanics, without discussing either use cases, or the benefits and > limitations of using them. > > We also don't have a good location to describe the approach of > statically linking or bundling additional libraries into "platlib" to > avoid issues with external dependencies and incompatible ABI changes > when distributing wheel files. > > This seems like something that would be suitably covered as an > "Advanced Topic" in the packaging user's guide, so I filed an issue > with some more specific ideas: > https://bitbucket.org/pypa/python-packaging-user-guide/issue/36/add-a-section-that-covers-binary > > > == Regarding conda == > > In terms of providing an answer to the question "Where does conda fit > in the scheme of packaging tools?", my conclusion from the thread is > that once a couple of security related issues are fixed (think PyPI > before the rubygems.org compromise for the current state of conda's > security model), and once the Python 3.3 compatibility issue is > addressed on Windows, it would be reasonable to recommend it as one of > the current options for getting hold of pre-built versions of the > scientific Python stack. > > I think this is important enough to warrant a "NumPy and the > Scientific Python stack" section in the user guide (with Linux distro > packages, Windows installers and conda all discussed as options): > > https://bitbucket.org/pypa/python-packaging-user-guide/issue/37/add-a-dedicated-numpy-and-the-scientific > > > == Regarding alternative index servers == > > Something I believe conda supports is the idea of installer > configuration settings that are specific to a particular virtual > environment (I can't find specific docs confirming that capability, > but I certainly got that impression somewhere along the line). > > At the moment, it isn't straightforward to tell pip "when in this > virtual environment, use these additional settings", but I believe > such a feature could prove useful in dealing with some of the thornier > binary compatibility problems. In particular, it would be good to be > able to lock an environment to a particular custom index server that > it will use instead of defaulting to PyPI. > > I've posted this idea to the pip issue tracker: > https://github.com/pypa/pip/issues/1362 > > > == Regarding NumPy, build variants and API/ABI consistency == > > My current reading of the NumPy situation is that it boils down to > needing two additional features: > - a richer platform tagging mechanism (which we need for *nix systems anyway) > - a way to ensure internal consistency of the installed *builds* in an > environment, not just the abstract dependencies > > I've opened a wheel format definition issue for the first problem: > https://bitbucket.org/pypa/pypi-metadata-formats/issue/15/enhance-the-platform-tag-definition-for > > I've posted a metadata 2.0 standard extension proposal for the latter: > https://bitbucket.org/pypa/pypi-metadata-formats/issue/14/add-a-metadata-based-consistency-checking > (the alternative index server idea is also relevant, since PyPI > wouldn't support hosting multiple variants with the same wheel level > compatibility tags) > > > == Regarding custom installation directories == > > This technically came up in the cobblerd thread (regarding installing > scripts to /usr/sbin instead of /usr/bin), but I believe it may also > be relevant to the problem of shipping external libraries inside > wheels, static data files for applications, etc. > > It's a little underspecified in PEP 427, but the way the wheel format > currently handles installation to paths other than purelib and platlib > (or to install to both of those as part of the same wheel) is to use > the sysconfig scheme names as subdirectories within the wheel's .data > directory. This approach is great for making it easy to build > well-behaved cross platform wheels that play nice with virtual > environments, but allowing a "just put it here" escape clause could > potentially be a useful approach for platform specific wheels > (especially on *nix systems that use the Filesystem Hierarchy > Standard). > > I've posted this idea to the metadata format issue tracker: > https://bitbucket.org/pypa/pypi-metadata-formats/issue/13/add-a-new-subdirectory-to-allow-wheels-to
Note the 'data' sysconfig directory is already just '/' or the root of the virtualenv. _______________________________________________ Distutils-SIG maillist - Distutils-SIG@python.org https://mail.python.org/mailman/listinfo/distutils-sig