There exist many systems in the real world that require building everything from source. Setuptools circular dependencies broke all of them (and any circular build time dependency would). The one I'm most familiar with has special cased a bootstrap C compiler and a very limited shell with a few other builtins and then the very first thing it does is build the "real" C compiler, shell, etc from source and then throws away the bootstrap scripts. Anything that has a circular dependency is going to force those systems to special case them as well. Most of them will just avoid those packages if they can at all help it because random Python packages do not rise to the level of special as gcc does. Sent from my iPhone
On Jul 29, 2017, at 7:19 PM, Nathaniel Smith <njs@pobox.com> wrote:
It's true that this is problematic for packages that don't have wheels, but flit and click are both pure python packages with wheels available, so I don't think there's any problem here in practice. (In fact flit currently uses flit as its build system, and depends on at least one other package that uses flit as its build system.)
I thought the big problem with setuptools unvendoring was that we don't currently have isolation for build requirements, so there was interference between what setuptools wanted and what other packages wanted? PEP 517 doesn't have that problem because build backends are installed into their own little quasi-virtualenv. Or am I wrong?