On Sun, Jun 25, 2017 at 12:26 AM, Nick Coghlan <ncogh...@gmail.com> wrote:
> On 25 June 2017 at 16:58, Nathaniel Smith <n...@pobox.com> wrote:
>> The current spec's solution:
>>
>> - Let's define an exhaustive list of all the reasons you might want to
>> make an sdist:
>>   1) you're a hypothetical future version of pip that has decided to
>> implement some specific build-from-unpacked-source-tree semantics
>>   2) the user has specifically requested an sdist, so if one can't be
>> made then the only thing to do is to fail and pass on some
>> unstructured error log
>>   3) that's it, we've made a list of all possible front-end semantics.
>> - Then define a hook that does (1) and a hook that does (2).
>
> pip doesn't care about making sdists, it only cares about doing out of
> tree wheel builds. It's other tools (e.g. tox) that specifically care
> about making sdists.
>
> So we only have two front-end scanarios that we need to handle:
>
> 1. preparing for an out-of-tree call to build_wheel
> 2. actually building an sdist (e.g. for testing or publication)

Right, the core point of disagreement is:

- I'm not convinced that this list is exhaustive.
- I'm not convinced that we understand the out-of-tree build case,
given that the sdist approach has never been implemented or deployed.
- Even based on our current imperfect understanding of the out-of-tree
build case, I'm not convinced that prepare_build_wheel_files solution
is actually the best solution. (For all the reasons I've said before:
the stated motivation for doing out-of-tree builds is that we don't
trust the build system, but prepare_build_wheel_files forces us to
trust the build system; flit *could* support sdists, the question is
whether it's worth the effort, and I don't believe we really
understand the trade-offs well enough to know the answer to that; in
the flit case copytree() would work just as well as
prepare_build_wheel_files anyway so there's no demonstrated need for
this complexity.)

Maybe you're right and there are exactly 2 front-end use cases and it
will turn out that the current PEP addresses them perfectly. I don't
have a crystal ball; I'm making an argument from ignorance. But I feel
like allowing NotImplemented returns + ext_{toolname}_* hooks seems
like it covers all the known cases about as well as the current
design, while being substantially simpler and more future-proof.

-n

-- 
Nathaniel J. Smith -- https://vorpus.org
_______________________________________________
Distutils-SIG maillist  -  Distutils-SIG@python.org
https://mail.python.org/mailman/listinfo/distutils-sig

Reply via email to