| Store | Cart

Re: [Distutils] Working toward Linux wheel support

From: Robert Collins <robe...@robertcollins.net>
Thu, 13 Aug 2015 11:49:08 +1200
I'm not sure what will be needed to get the PR accepted; At PyCon AU
Tennessee Leuwenberg started drafting a PEP for the expression of
dependencies on e.g. BLAS - its been given number 497, and is in the
packaging-peps repo; I'm working on updating it now.

On 13 August 2015 at 08:21, Nate Coraor <n...@bx.psu.edu> wrote:
> Hello all,>> I've implemented the wheel side of Nick's suggestion from very early in this> thread to support a vendor-providable binary-compatibility.cfg.>>   https://bitbucket.org/pypa/wheel/pull-request/54/>> If this is acceptable, I'll add support for it to the pip side. What else> should be implemented at this stage to get the PR accepted?>> Thanks,> --nate>> On Tue, Jul 28, 2015 at 12:21 PM, Wes Turner <wes....@gmail.com> wrote:>>>>>> On Jul 28, 2015 10:02 AM, "Oscar Benjamin" <osca...@gmail.com>>> wrote:>> >>> > On Fri, 24 Jul 2015 at 19:53 Chris Barker <chri...@noaa.gov> wrote:>> >>>> >> On Tue, Jul 21, 2015 at 9:38 AM, Oscar Benjamin>> >> <osca...@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.>>>> BLAS may not be the best example, but should we expect such linked>> interfaces to change over time? (And e.g. be versioned dependencies with>> shim packages that have check functions)?>>>> ... How is an ABI constraint different from a package dependency?>>>> iiuc, ABI tags are thus combinatorial with package/wheel dependency>> strings?>>>> Conda/pycosat solve this with "preprocessing selectors" :>> http://conda.pydata.org/docs/building/meta-yaml.html#preprocessing-selectors>> :>>>> ```>> linux True if the platform is Linux>> linux32 True if the platform is Linux and the Python architecture is>> 32-bit>> linux64 True if the platform is Linux and the Python architecture is>> 64-bit>> armv6 True if the platform is Linux and the Python architecture is armv6l>> osx True if the platform is OS X>> unix True if the platform is Unix (OS X or Linux)>> win True if the platform is Windows>> win32 True if the platform is Windows and the Python architecture is>> 32-bit>> win64 True if the platform is Windows and the Python architecture is>> 64-bit>> py The Python version as a two digit string (like '27'). See also the>> CONDA_PY environment variable below.>> py3k True if the Python major version is 3>> py2k True if the Python major version is 2>> py26 True if the Python version is 2.6>> py27 True if the Python version is 2.7>> py33 True if the Python version is 3.3>> py34 True if the Python version is 3.4>> np The NumPy version as a two digit string (like '17'). See also the>> CONDA_NPY environment variable below.>> Because the selector is any valid Python expression, complicated logic is>> possible.>> ```>>>> >>> > -->> > Oscar>> >>> > _______________________________________________>> > Distutils-SIG maillist  -  Dist...@python.org>> > https://mail.python.org/mailman/listinfo/distutils-sig>> >>>>>>> _______________________________________________>> Distutils-SIG maillist  -  Dist...@python.org>> https://mail.python.org/mailman/listinfo/distutils-sig>>>>> _______________________________________________> Distutils-SIG maillist  -  Dist...@python.org> https://mail.python.org/mailman/listinfo/distutils-sig>



-- 
Robert Collins <rbtc...@hp.com>
Distinguished Technologist
HP Converged Cloud
_______________________________________________
Distutils-SIG maillist  -  Dist...@python.org
https://mail.python.org/mailman/listinfo/distutils-sig

Recent Messages in this Thread
Nate Coraor Jul 16, 2015 05:41 pm
Nick Coghlan Sep 06, 2015 11:32 pm
Nick Coghlan Sep 05, 2015 02:56 am
Marcus Smith Sep 07, 2015 04:11 am
Nate Coraor Sep 03, 2015 05:22 pm
Nick Coghlan Sep 07, 2015 04:26 am
Daniel Holth Aug 20, 2015 07:22 pm
Donald Stufft Aug 20, 2015 07:25 pm
Donald Stufft Sep 02, 2015 11:45 pm
Daniel Holth Sep 03, 2015 12:15 pm
Nate Coraor Aug 24, 2015 03:03 pm
Wes Turner Aug 24, 2015 05:51 pm
Nick Coghlan Jul 17, 2015 08:22 am
Chris Barker Jul 17, 2015 03:36 pm
Antoine Pitrou Jul 17, 2015 03:46 pm
Chris Barker Jul 17, 2015 03:53 pm
Andrea Bedini Jul 18, 2015 07:00 am
Tres Seaver Jul 21, 2015 03:25 am
Leonardo Rochael Almeida Jul 21, 2015 03:07 pm
Marcus Smith Jul 17, 2015 04:50 pm
Olivier Grisel Jul 17, 2015 06:34 pm
Daniel Holth Jul 17, 2015 08:18 pm
Chris Barker - NOAA Federal Jul 18, 2015 01:13 am
Daniel Holth Jul 18, 2015 02:11 am
Paul Moore Jul 18, 2015 11:51 am
Nick Coghlan Jul 20, 2015 05:50 am
Chris Barker Jul 20, 2015 05:37 pm
Paul Moore Jul 20, 2015 06:37 pm
Nick Coghlan Jul 27, 2015 02:19 pm
Nate Coraor Jul 27, 2015 07:07 pm
Oscar Benjamin Jul 21, 2015 04:38 pm
Chris Barker Jul 24, 2015 06:52 pm
Oscar Benjamin Jul 28, 2015 03:02 pm
Wes Turner Jul 28, 2015 04:21 pm
Nate Coraor Aug 12, 2015 08:21 pm
Robert Collins Aug 12, 2015 11:49 pm
Nathaniel Smith Aug 13, 2015 01:05 am
Nate Coraor Aug 13, 2015 02:07 pm
Leonardo Rochael Almeida Aug 13, 2015 07:30 pm
Wes Turner Aug 13, 2015 07:43 pm
Nathaniel Smith Aug 14, 2015 01:47 am
Wes Turner Aug 14, 2015 01:50 am
Nathaniel Smith Aug 14, 2015 02:33 am
Wes Turner Aug 14, 2015 02:41 am
Leonardo Rochael Almeida Sep 08, 2015 07:18 pm
Donald Stufft Sep 08, 2015 07:22 pm
Leonardo Rochael Almeida Sep 08, 2015 07:39 pm
Nathaniel Smith Aug 14, 2015 01:25 am
Robert Collins Aug 14, 2015 01:31 am
Wes Turner Aug 14, 2015 01:38 am
Robert Collins Aug 14, 2015 01:44 am
Wes Turner Aug 14, 2015 01:44 am
Nathaniel Smith Aug 14, 2015 02:14 am
Wes Turner Aug 14, 2015 02:24 am
Robert Collins Aug 14, 2015 02:27 am
Nathaniel Smith Aug 14, 2015 07:38 am
David Cournapeau Aug 13, 2015 05:52 pm
Nathaniel Smith Aug 14, 2015 04:07 am
Chris Barker Aug 14, 2015 04:04 pm
David Cournapeau Aug 14, 2015 04:20 pm
Chris Barker Aug 14, 2015 04:00 pm
Leonardo Rochael Almeida Jul 20, 2015 01:42 am
Nick Coghlan Jul 20, 2015 06:00 am
Chris Barker Jul 20, 2015 05:39 pm
Marcus Smith Sep 06, 2015 04:09 pm
Nick Coghlan Sep 05, 2015 08:35 am
Nick Coghlan Sep 05, 2015 06:44 am
Nick Coghlan Sep 05, 2015 06:43 am
Nathaniel Smith Sep 05, 2015 06:46 am
Donald Stufft Sep 05, 2015 03:06 am
Wes Turner Sep 08, 2015 07:14 pm
Daniel Holth Sep 08, 2015 07:32 pm
Nathaniel Smith Sep 09, 2015 11:49 pm
Nate Coraor Sep 21, 2015 03:33 pm
Nate Coraor Sep 09, 2015 03:06 pm
Donald Stufft Sep 08, 2015 06:33 pm
Donald Stufft Sep 07, 2015 04:02 pm
Marcus Smith Sep 07, 2015 05:51 pm
Wes Turner Sep 07, 2015 10:16 pm
Nate Coraor Sep 03, 2015 02:04 pm
Daniel Holth Sep 03, 2015 01:56 pm
Antoine Pitrou Aug 20, 2015 07:51 pm
Nate Coraor Aug 20, 2015 07:40 pm
Donald Stufft Aug 20, 2015 07:19 pm
Antoine Pitrou Aug 20, 2015 07:14 pm
Steve Dower Aug 14, 2015 04:17 pm
Daniel Holth Aug 20, 2015 06:38 pm
Chris Barker Aug 14, 2015 08:16 pm
Alexander Walters Aug 14, 2015 10:32 pm
Nate Coraor Aug 20, 2015 06:26 pm
Nick Coghlan Sep 05, 2015 02:12 am
Daniel Holth Sep 01, 2015 01:57 pm
Wes Turner Aug 26, 2015 01:42 am
Nate Coraor Aug 27, 2015 07:21 pm
Ben Finney Sep 06, 2015 11:42 pm
Messages in this thread