[Distutils] Provisionally accepting PEP 517's declarative build system interface

Donald Stufft donald at stufft.io
Tue May 30 03:07:52 EDT 2017


It can require that it is either unfiltered or an unpacked sdist since that is how a lot of build time projects treat it now. They handle a sdist differently from a vcs source, for example pbr. Swapping out a call to setup.py for an internal shim that calls a Python API doesn't change anything here, randomly filtering out some files from a vcs will break random projects. We ether only suppprt copying the whole directory or we add support for something that enables this in the PEP. There is basically no middle ground that isn't worse than one of those two options for PEP 517 style packages. 

I also don't think that creating an sdist should be an optional part of the build interface, but things added in later PEPs can only be added as optional, not mandatory. There is already automation that relies on handling sdist- for example the Travis deployment to PyPI code path- that will be unable to support this new standard without either ONLY supporting wheels, or needing to add custom code for each individual build tool (unlikely to happen). The effect of which will be that either people simply can't use this spec without it or we incentivize releasing only wheels to PyPI instead of wheels and a sdist. 

I don't see anyway really for this PEP to move forward without support for sdists without causing major regressions. 

Sent from my iPhone

> On May 30, 2017, at 1:36 AM, Nick Coghlan <ncoghlan at gmail.com> wrote:
> 
> My rationale for seeing it that way, is that while PEP 517 requires
> that the current working directory correspond to the root of the
> source tree, it *doesn't* require that the source tree be the
> unfiltered contents of a VCS checkout. It can't, since the source tree
> might have come from an sdist, and MANIFEST.in and friends already
> allow that to be a filtered subset of the full VCS contents.



More information about the Distutils-SIG mailing list