[Distutils] Working toward Linux wheel support

Nate Coraor nate at bx.psu.edu
Thu Jul 16 19:41:40 CEST 2015

Hi all,

I've recently been working on adding SOABI support for Python 2.x and other
pieces needed to get wheels w/ C extensions for Linux working. Here's the
work for wheels:


Based on that, I've added support for those wheels to pip here:


As mentioned in the wheels PR, there are some questions and decisions made
that I need guidance on:

- On Linux, the distro name/version (as determined by
platform.linux_distribution()) will be appended to the platform string,
e.g. linux_x86_64_ubuntu_14_04. This is going to be necessary to make a
reasonable attempt at wheel compatibility in PyPI. But this may violate PEP

- By default, wheels will be built using the most specific platform
information. In practice, I build our wheels[1] using Debian Squeeze in
Docker and therefore they should work on most currently "supported"
Linuxes, but allowing such wheels to PyPI could still be dangerous because
forward compatibility is not always guaranteed (e.g. if a SO version/name
changes, or a C lib API method changes in a non-backward compatible way but
the SO version/name does not change). That said, I'd be happy to make a
much more generalized version of our docker-build[2] system that'd allow
package authors to easily/rapidly build distro/version-specific wheels for
many of the popular Linux distros. We can assume that a wheel built on a
vanilla install of e.g. Ubuntu 14.04 will work on any other installation of
14.04 (this is what the distro vendors promise, anyway).

- I attempt to set the SOABI if the SOABI config var is unset, this is for
Python 2, but will also be done even on Python 3. Maybe that is the wrong
decision (or maybe SOABI is guaranteed to be set on Python 3).

- Do any other implementations define SOABI? PyPy does not, I did not test
others. What should we do with these?

Because the project I work for[3] relies heavily on large number of
packages, some of which have complicated build-time dependencies, we have
always provided them as eggs and monkeypatched platform support back in to
pkg_resources. Now that the PyPA has settled on wheels as the preferred
binary packaging format, I am pretty heavily motivated to do the work to
work out all the issues with this implementation.


[1] https://wheels.galaxyproject.org/
[2] https://github.com/galaxyproject/docker-build/
[3] https://galaxyproject.org/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/distutils-sig/attachments/20150716/d4b59d5c/attachment.html>

More information about the Distutils-SIG mailing list