[Distutils] Immutable Files on PyPI
Donald Stufft
donald at stufft.io
Mon Sep 29 15:38:21 CEST 2014
On September 29, 2014 at 9:25:37 AM, Wichert Akkerman (wichert at wiggy.net) wrote:
On 29 Sep 2014, at 15:21, Donald Stufft <donald at stufft.io> wrote:
On September 29, 2014 at 8:54:26 AM, Wichert Akkerman (wichert at wiggy.net) wrote:
On 29 Sep 2014, at 13:58, Nick Coghlan <ncoghlan at gmail.com> wrote:
Right, this is my perspective as well. The point that the wheel format already includes a build ordering field was significant because that file naming scheme has an official specification.
Other commands like bdist_egg, bdist_dumb and bdist_wininst aren't as strict about the expected file names, although it would be good to define a suggested optional build numbering convention at least for bdist_egg, such that easy_install will do the right thing, even if the full source level version number isn't bumped.
This is just as relevant for sdists as well. It is quite common to see a broken release due to a missing or wrong MANIFEST.in.
Test them prior to uploading them.
You can make the exact same argument about binary distributions, so I don’t understand what you’re trying to say here? Mistakes are made everywhere - I’m just trying to point out that a packaging error is not unique to binary distributions.
Wichert.
The difference is that a binary distribution is a produced *from* a source distribution.
This means that if a source distribution is incorrect then any binary distributions built from that source distribution needs to be regenerated. This affects the Wheels which are placed on PyPI, Wheels created “downstream” (e.g. a Wheel cache on a user’s machine, a shared wheel builder via devpi + devpi-builder), and it affects other packaging systems such as the OS package tools like apt-get, FreeBSD ports, Homebrew etc.
However if a Wheel is incorrect that really only effects direct consumers of that Wheel. It’s not a generally supported to take a binary distribution and repack it into another form, however even if someone was doing so, the “build number” metadata in the Wheel tag signifies that a new version *of that wheel* has been created.
Another way of looking at it, is that the version number identifies the source distribution, while the version number, build number, and platform tags identifies the wheel files. This is reflected in their respective filenames and since this proposal is simply boiled down to “there should exist, at all points in time only one set of bytes per uniquely identified file”.
---
Donald Stufft
PGP: 7C6B 7C5D 5E2B 6356 A926 F04F 6E3C BCE9 3372 DCFA
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/distutils-sig/attachments/20140929/de1f9175/attachment.html>
More information about the Distutils-SIG
mailing list