[Distutils] Other ideas from today's packaging meetup at EuroPython
wichert at wiggy.net
Sat Jul 26 07:27:03 CEST 2014
> On 26 Jul 2014, at 00:08, Nick Coghlan <ncoghlan at gmail.com> wrote:
> On 26 Jul 2014 05:56, "Donald Stufft" <donald at stufft.io> wrote:
> > On July 25, 2014 at 3:50:30 PM, Wichert Akkerman (wichert at wiggy.net) wrote:
> >> Will that guarantee the OS-provided Python was used? Or is there still a risk someone was using a custom compiled Python on an Ubuntu 14.04 system that is not binary compatible with the Ubuntu-provided Python?
> >> Wichert.
> > No It won’t guarantee the OS-provided Python is used. It doesn’t even guarantee that the OS provided libs are being linked to. However at that point you’ve more or less reached parity with Windows and OSX where Wheels (and Eggs before them) are generally built to target the “System” Python and if you’re not using the “System” Python you might end up having a bad time.
> As Donald says, we haven't worked out the exact technical details yet, but the general idea is that just as a Windows or Mac OS X wheel published on PyPI should be binary compatible with the corresponding python.org installer, it should be possible to get the relevant info into wheel filenames for people to be able to indicate the expected contents of "/etc/os-release".
I suspect that for Linux you mean “system-provided Python”? Looking at https://www.python.org/downloads/release/python-341/ there is no python.org binary installer for Linux. Even if there was I would expect only a small number of people to use that over the system-provided version, considering Linux distributions generally do a excellent job packaging Python.
An /etc/os-release approach does sound like a reasonable approach. Will that also allow me to put ‘macports’ or ‘homebrew’ in there you can create an Cython-0.20.1-cp27-none-lmacosx_x86_64-macports_10.10.whl distribution? That might be useful. It would be slightly abusing the spec though since macports does not have releases itself so we’re mixing an OSX version number in, but that does not feel any worse than the other binary compatibility guarantees.
For Linux why not use the existing /etc/lsb_release instead of creating a new file?
> Another way to go, if softwarecollections.org (aka "virtualenv for your distro package manager") gets any traction whatsoever on the Debian/Ubuntu side of the world, would be to publish wheels based on *software collection* compatibility, rather than distro compatibility.
I had never heard of that; I’ll need to take a look at it. A quick look at the website doesn’t really tell me what problem it is trying to solve or how it works. It might be in the same space as things like debootstrap, docke or PPSar. Or perhaps NixOS really is a better way to handle this.
> That would be appealing to me wearing both my packaging hats - making prebuilt binaries for libraries more readily available to Python users in a way that maps to Python versions rather than distro variants, while at the same time encouraging them to get their end user applications the heck out of the system Python so they aren't tied so closely to the distro upgrade cycle :)
Isn’t that already handle in the Debian/Ubuntu world with PPAs? Those do make it completely trivial to install extra things on a system, and you could easily make PPAs that provide custom builds that don’t overlap the OS.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Distutils-SIG