On Sat, Jun 3, 2017, at 03:14 AM, Nathaniel Smith wrote:
If the pip devs don't trust build systems in general, but (as suggested by copy_files discussion) are ok with trusting them if they promise to be super trustworthy, alternate proposal: - add a 'in_place_build_safe = True' hook, which indicates that the build system has been carefully written so that this will generate the same result as building an sdist and then building that; pip checks for this to decide whether to build in place or to build an sdist first.
I would use this for flit if it becomes part of the spec. I can see the rationale for not trusting build systems from the frontend's point of view, but it does feel like all potential build systems are being subjected to the same constraints we need for distutils/setuptools.
One thing that's not clear to me: a crucial use case for sdists is (1) download, (2) unpack, (3) patch the source, possibly adding new files, (4) build and install. (After all, the whole reason we insist on distributing sdists is that open source software should be modifiable by the recipient.) Does flit currently support this, given the reliance on VCS metadata?
Flit does support that, so long as step 4 never needs to build an sdist. Producing the sdist is the only operation for which flit needs the VCS. This is why I'm doggedly arguing that building and installing should be possible without invoking any 'sdist' hook. ;-) Thomas