On Fri, 24 Jul 2015 at 19:53 Chris Barker <chris.barker@noaa.gov> wrote:
On Tue, Jul 21, 2015 at 9:38 AM, Oscar Benjamin <oscar.j.benjamin@gmail.com> wrote:

I think it would be great to just package these up as wheels and put them on PyPI.

that's the point -- there is no way with the current spec to specify a wheel dependency as opposed to a package dependency. i.e this particular binary numpy wheel depends on this other wheel, whereas the numpy source pacakge does not have that dependency -- and, indeed, a wheel for one platform may have different dependencies that\n other platforms.

I thought it was possible to do this with wheels. It's already possible to have wheels or sdists whose dependencies vary by platform I thought.

The BLAS dependency is different. In particular the sdist is compatible with more cases than a wheel would be so the built wheel would have a more precise requirement than the sdist. Is that not possible with pip/wheels/PyPI or is that a limitation of using setuptools to build the wheel?
 
So numpy could depend on "blas" and there could be a few different distributions on PyPI that provide "blas" representing the different underlying libraries. If I want to install numpy with a particular one I can just do:

    pip install gotoblas  # Installs the BLAS library within Python dirs
    pip install numpy

well,different implementations of BLAS are theoretically ABI compatible, but as I understand it, it's not actually that simple, so this is particularly challenging.

But if it were, this would be a particular trick, because then that numpy wheel would depend on _some_ BLAS wheel, but there may be more than one option -- how would you express that????

I imagined having numpy Require "blas OR openblas". Then openblas package Provides "blas". Any other BLAS library also provides "blas". If you do "pip install numpy" and "blas" is already provided then the numpy wheel installs fine. Otherwise it falls back to installing openblas.

Potentially "blas" is not specific enough so the label could be "blas-gfortran" to express the ABI.

--
Oscar