[Distutils] PEP: Build system abstraction for pip/conda etc

Paul Moore p.f.moore at gmail.com
Thu Feb 11 11:50:00 EST 2016


On 11 February 2016 at 15:01, David Cournapeau <cournape at gmail.com> wrote:
>> We've only really seen bento and now flit appear as alternatives, the
>> only conclusion we've been able to draw is that the barrier to
>> creating alternative build systems is the need to emulate setuptools.
>> This PEP (hopefully!) removes that barrier, but I agree we need some
>> validation that people who want to create alternative build systems
>> (or have done so) can work with the interface in the PEP.
>
> If this is indeed the main argument for the PEP, that it is IMO misguided.
> Making new buildsystems for python is hard work (once you go beyond the
> trivial packages), but interoperability w/ setup.py is not difficult

I'll let the PEP authors comment on that one - what I said above is
really only my interpretation and I could easily be wrong.

> My main worry is about designing an interface before seeing multiple
> implementations. This often causes trouble. If we think the issue is
> allowing people to start working on the more "interesting" parts while
> keeping compat w/ pip, then I would suggest working on an example
> buildsystem with interoperability that people could steal for their own.

I understand your point, but I'm not clear what's stopping people
doing this right now? For all the complaints about how pip is tightly
coupled to setuptools, very few people seem to be providing
alternatives.

The pip developers in particular aren't looking to develop a build
system, so any work in that area will have to come from the community.
We hear the message that people wish they could use other build
systems - maybe that's actually just people saying "I wish someone
else would write a new build system" rather than anyone actually
wanting to write one themselves?

> I played w/ that idea there: https://github.com/cournape/toydist. The main
> point of that project was to progressively bootstrap itself by
> re-implementing the basic features required by pip. E.g. right now, only
> `python setup.py egg_info` is "distutils clean", but then you just need to
> implement develop to get `pip install -e .` working. To get `pip install .`
> to work, you only need to add install. Etc.

So someone could integrate flit with pip using this approach, is that
what you're saying? Or someone could write a new build system and use
that code as a basis for the "pip integration layer"?

If so, then yes, I'd like to see someone do that and provide feedback
to this PEP based on their experience. But I'm not sure I want the PEP
to stall (along with all work on decoupling pip from setuptools) until
someone gets round to it.

Paul


More information about the Distutils-SIG mailing list