PEP 517 Backend bootstrapping

I think I’ve missed or forgotten something. What use cases do we know of that would accept build backends as wheels, but not other build dependencies? The cases I remember will either reject all prebuilt wheels and figure out ‘manual’ bootstrapping if necessary, or might be persuaded to accept pure-Python wheels as source.

If we decide not to add any bootstrap mechanism and to rely on wheels for build dependencies, my view is that the only reasonable approach is to apply that to all build dependencies. If you allow some build dependencies to be wheels, anything other than get-them-all-as-wheels is added complexity. Although if we’re catering for use cases that might accept pure Python wheels as source, maybe that means you can’t have extension modules as build dependencies.

The ‘just use wheels’ option seems less and less of a ‘just’. We implicitly picked it before by not specifying anything else, maybe because we were all exhausted by the PEP 517 discussion. But I think figuring out what it actually means and implementing it may be more work than any of the various self-bootstrapping options people have proposed.

[Aside: Maybe we should figure out more convenient options to control package selection in pip, so it’s not trying to bootstrap everything from source when the user doesn’t really need that. I’ve started a separate thread for that.]