On Thu, May 15, 2014 at 6:31 PM, Daniel Holth <dho...@gmail.com> wrote:
> On Thu, May 15, 2014 at 6:04 PM, Marcus Smith <qwc...@gmail.com> wrote:
>>> I'm of course hoping that someone uses the feature to do a
>>> setup.py-command-line-interface-compatible distutils replacement
>>> (rather than a distutils extension) like what Bento does with its
>>> pip-compatible setup.py replacement.
>>
>>
>> ah, I see.  interesting.
>> I admit my initial reaction to "quack like a setup.py" alternative build
>> systems is that it sounds invasive and sneaky, and I want it to be explicit
>> and overt,  like it will be in metadata 2.X.
>> but on the other hand,  I hear you about wanting to see alternatives have
>> some way to get off the ground now.
>
> There's a bit of a chicken-egg problem obviously.
>
> For the moment I am more interested in just giving people a usable
> setup_requires.

Just now catching up on this, but I'm strongly in favor of fixing this
issue.  It's a simple addition to setuptools.

I actually am about to release the first version of a package called
astropy_helpers, which basically is a bundle of all the build tools
used by the Astropy project so that other related projects can take
advantage of them as well.  This has the same chicken-egg problem--you
want to be able to use astropy_helpers in setup.py, but you can't get
to it without first calling setup(setup_requires=['astropy_helpers']).

This can actually be gotten around by simply creating a dummy
Distribution object and calling it like:

from setuptools.dist import Distribution
Distribution({'setup_requires': ['astropy_helpers']})

But that's an ugly hack.  To that end I added bootstrap script that's
imported at the top of setup.py that knows how to do this (it also has
code for finding astropy_helpers as a git submodule if the project has
one in its repo--useful for development).

d2to1 takes a slightly different approach in that one doesn't pass
anything to the normal setup() except for setup_requires=['d2to1'].
Once d2to1 is bootstrapped it takes over the entire setup process,
including reading additional setup_requires from setup.cfg as Daniel
suggested.  I'm actually planning on relaunching d2to1 with a new name
(less tied to the defunct distutils2) because I still think it's a
useful alternative to setup.py, while still working within the
existing framework (and easily transferable to any new framework).

Erik
_______________________________________________
Distutils-SIG maillist  -  Distutils-SIG@python.org
https://mail.python.org/mailman/listinfo/distutils-sig

Reply via email to