| Store | Cart

Re: [Distutils] Working toward Linux wheel support

From: Nathaniel Smith <n...@pobox.com>
Thu, 13 Aug 2015 21:07:10 -0700
On Thu, Aug 13, 2015 at 10:52 AM, David Cournapeau <cour...@gmail.com> wrote:
>> On Thu, Aug 13, 2015 at 2:05 AM, Nathaniel Smith <n...@pobox.com> wrote:>>>> On Aug 12, 2015 13:57, "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?>>>> From my reading of what the Enthought and Continuum folks were saying>> about how they are successfully distributing binaries across different>> distributions, it sounds like the additional piece that would take this from>> a interesting experiment to basically-immediately-usable would be to teach>> pip that if no binary-compatibility.cfg is provided, then it should assume>> by default that the compatible systems whose wheels should be installed are:>> (1) the current system's exact tag, (2) the special hard-coded tag>> "centos5". (That's what everyone actually uses in practice, right?)>>>> To make this *really* slick, it would be cool if, say, David C. could make>> a formal list of exactly which system libraries are important to depend on>> (xlib, etc.), and we could hard-code two compatibility profiles>> "centos5-minimal" (= just glibc and the C++ runtime) and "centos5" (= that>> plus the core too-hard-to-ship libraries), and possibly teach pip how to>> check whether that hard-coded core set is available.>>> So this is a basic list I got w/ a few minutes of scripting, by installing> our 200 most used packages on centos 5, ldd'ing all of the .so, and> filtering out a few things/bugs of some of our own packages):>> /usr/lib64/libatk-1.0.so.0> /usr/lib64/libcairo.so.2> /usr/lib64/libdrm.so.2> /usr/lib64/libfontconfig.so.1> /usr/lib64/libGL.so.1> /usr/lib64/libGLU.so.1> /usr/lib64/libstdc++.so.6> /usr/lib64/libX11.so.6> /usr/lib64/libXau.so.6> /usr/lib64/libXcursor.so.1> /usr/lib64/libXdmcp.so.6> /usr/lib64/libXext.so.6> /usr/lib64/libXfixes.so.3> /usr/lib64/libXft.so.2> /usr/lib64/libXinerama.so.1> /usr/lib64/libXi.so.6> /usr/lib64/libXrandr.so.2> /usr/lib64/libXrender.so.1> /usr/lib64/libXt.so.6> /usr/lib64/libXv.so.1> /usr/lib64/libXxf86vm.so.1> /usr/lib64/libz.so.1>> This list should only be taken as a first idea, I can work on a more precise> list including the versions if that's deemed useful.

Cool. Here's a list of the external .so's assumed by the packages
currently included in a default Anaconda install:
https://gist.github.com/njsmith/6c3d3f2dbaaf526a8585

The lists look fairly similar overall -- glibc, libstdc++, Xlib. They
additionally assume the availability of expat, glib, ncurses, pcre,
maybe some other stuff I missed, but they ship their own versions of
libz and fontconfig, and they don't seem to either ship or use cairo
or atk in their default install.

For defining a "standard platform", just taking the union seems
reasonable -- if either project has gotten away this long with
assuming some library is there, then it's probably there.

Writing a little script that takes a wheel and checks whether it has
any external dependencies outside of these lists, or takes a system
and checks whether all these libraries are available, seems like it
would be pretty trivial.

> One significant issue is SSL: in theory, we (as a downstream distributor)> really want to avoid distributing such a key piece of infrastructure, but in> practice, there are so many versions which are incompatible across> distributions that it is not an option.

This is mostly an issue for distributing Python itself, right? ...I hope?

-n

-- 
Nathaniel J. Smith -- http://vorpus.org
_______________________________________________
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