On 28 August 2017 at 20:47, Donald Stufft <donald@stufft.io> wrote:
I also believe it is fundamentally impossible for the backends to guarantee consistency if they have a separate list for what gets installed vs what gets put into a sdist without literally building a sdist (or something similar)— and as I understand it one of the issues with that is that the tools don’t want to mandate being able to do that same logic in all situations.
And yet that's precisely what xoviat is intending to do, based on what the PEP says is needed. Are you saying he shouldn't? And the setuptools should simply expose the same consistency problems we've been dealing with until now? And the solution is for pip to switch to sdist->wheel build as we've always planned in order to resolve this issue? And any other future frontends will have to go through the same cycle that pip did? In which case, isn't the issue here that we've failed to argue sufficiently persuasively that all backends must provide a non-optional build_sdist hook, so we can do that cleanly?
So I don’t think it works to say “You *must* ensure a consistent output, and I think the only thing we can do is say that you *SHOULD* try to be consistent, and leave it up to front ends to decide how seriously they take that as a requirement.
But how do frontends decide that? They have to base the decision on experience with backends. And it looks like the current crop of backends are split down the middle. Remember that if pip decides to go sdist->wheel, then that strongly motivates xoviat to abandon his current approach to ensure consistency, as it's duplicating the work pip will do. At which point the setuptools backend can't be assumed to be consistent, and the flit backend must be assumed to be (because we can't guarantee it can make a sdist). Paul