[Distutils] PEP for specifying build dependencies

Nick Coghlan ncoghlan at gmail.com
Wed May 11 10:20:32 EDT 2016


On 11 May 2016 at 19:27, Antoine Pitrou <solipsis at pitrou.net> wrote:
> On Wed, 11 May 2016 17:11:54 +1000
> Nick Coghlan <ncoghlan at gmail.com> wrote:
>>
>> Take the default case: for a distutils/setuptools based project, the
>> actual build settings are the arguments to setup() in setup.py, *not*
>> these new settings in pyproject.toml. By contrast, the settings in
>> [package.build-system] are the ones that tell pip and other installers
>> what is needed to make "setup.py bdist_wheel" work (and, in the
>> future, will tell them when to invoke something other than "setup.py
>> bdist_wheel" to do the binary build)
>
> Side question: if the build system needs configuring, is a
> user-provided configuration file really the best place to do so?
> People will end up having to copy and paste a bunch of configuration
> directives that are not directly relevant to their own project (also
> those directives will need maintaining as a build tool may evolve
> its dependencies over time).

When I say "build system configuration" in the context of
distutils/setuptools, I mean things like:

* MANIFEST.in
* non-dependency related setup() arguments (packages, package_dir,
py_modules, ext_modules, namespace_packages, entry_points,
include_package_data, zip_safe, etc)
* the Extension class and its parameters:
https://docs.python.org/2/distutils/setupscript.html#describing-extension-modules

Those are the settings that actually tell the build system what to
build and (in some cases) how to build it.

> Alternative: have a single "build system" configuration directive:
>
>   [package.build-system]
>
>   tool = "foopackage:fooexe"
>
> ... which instructs the runner to install dependency "foopackage", and
> then invoking "fooexe" with a single well-known option (e.g.
> "--pybuild-bootstrap-config") produces a JSON file on stdout describing
> how to invoke precisely the tool for each build scenario (sdist, wheel,
> etc.).

Specifying alternate build systems likely won't be far behind this PEP
(since that's what PEPs 516 and 517 were about), but we decided it
made sense to split the two discussions (i.e. figuring out the static
configuration basics, then figuring out how to eliminate the need for
setup.py shims)

Cheers,
Nick.

-- 
Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia


More information about the Distutils-SIG mailing list