I don’t think anyone’s suggesting “breaking” the idea as such. But PEP 517 was designed without considering self-hosting backends, and that wasn’t 100% an oversight (there was a definite expectation that backends would be provided as wheels).
PEP 517 as it stands doesn’t make the “build everything from source” idea impossible, the straightforward approach is to build your backends (setuptools, etc) first and host them somewhere as wheels, then build everything else from source using those wheels.
The problem is that pip’s users expect a simple
--no-binary :all: to work for “build everything from source”, and it doesn’t under PEP 517. This discussion is essentially about how we modify the PEP to rescue
--no-binary :all: . But the (legitimate) question has been raised, should we even try to rescue that, or should people wanting to “build everything from source” be taking a more nuanced view (and something as simple as
--no-binary <except files in directory XXX> would be sufficient).
To clarify, if we assume that someone wants to do
pip install --no-binary :all: numpy (note, I’m assuming that because an actual example of a use case is somewhat elusive - if anyone can point to a real world use case, that would help the discussion), then it’s entirely fair that they expect numpy and its dependencies to be built from source. But do they really expect the build tools (setuptools, et al) to be built from source? If so, why are they OK with using pip? Shouldn’t they build that from source too? I’m genuinely unclear - particularly given that a pure-python wheel essentially is source, there’s nothing there that isn’t a straight copy from the original source code archive.
I’m very concerned that we’re trying to design things in a vacuum here. We have assumptions of requirements, and partially fleshed out examples of use cases. @steve.dower and @encukou have both said that what we do here won’t matter to them, as they build from source in a different way anyway. So who, precisely, has a problem that needs fixing here? Can we get anyone who’s raised an issue on the pip tracker relating to this, to explain their use case for us? Or put a call out (maybe on distutils-sig) for a use case?