[buildout] RFC: buildout support for distribute
I plan to add explicit buildout support for distribute. Here's a sketch. Basically it boils down to satisfying requirements for setuptools with distribute whenever distribute is in buildout's working set. So, when installing a package that requires setuptools, it will convert that requirement to a requirement for distribute. There will be 2 separate bootstrap scripts, one that uses distribute and one that uses setuptools. There will also be a buildout configuration option that will allow a buildout configuration author to fix which is used. Probably: use-distribute = true This will only serve as a check that the right bootstrap was used. Comments? Jim -- Jim Fulton
On Tue, Oct 13, 2009 at 9:02 PM, Jim Fulton <jim@zope.com> wrote:
I plan to add explicit buildout support for distribute. Here's a sketch. Basically it boils down to satisfying requirements for setuptools with distribute whenever distribute is in buildout's working set. So, when installing a package that requires setuptools, it will convert that requirement to a requirement for distribute. There will be 2 separate bootstrap scripts, one that uses distribute and one that uses setuptools. There will also be a buildout configuration option that will allow a buildout configuration author to fix which is used. Probably:
use-distribute = true
This will only serve as a check that the right bootstrap was used.
Sounds good. Tarek already implemented the separate bootstrap file including the requirements conversion. This is currently done via monkey-patches of buildout, which could be avoided if this finds its way into buildout itself. Hanno
On Tue, Oct 13, 2009 at 9:02 PM, Jim Fulton <jim@zope.com> wrote:
I plan to add explicit buildout support for distribute. Here's a sketch. Basically it boils down to satisfying requirements for setuptools with distribute whenever distribute is in buildout's working set. So, when installing a package that requires setuptools, it will convert that requirement to a requirement for distribute. There will be 2 separate bootstrap scripts, one that uses distribute and one that uses setuptools. There will also be a buildout configuration option that will allow a buildout configuration author to fix which is used. Probably:
use-distribute = true
This will only serve as a check that the right bootstrap was used.
Notice that the current trunk of Distribute is now changing any 'setuptools' requirement that is tiggered using "Requirement.parse" and "resolve" APIs into a 'distribute' one. Meaning that changes on zc.buildout side shouldn't be important as we don't require any monkey-patch anymore. So basically it would consist of picking the right bootstrap file URL for the "use_setuptools" call. Our bootstrap works as expected (besides a few things we need to iron out with Reinout) with the current Distribute trunk : http://bitbucket.org/tarek/buildout-distribute/src/tip/bootstrap_dev.py You can get it and run it at: http://nighty.ziade.org/bootstrap_dev.py It'll get the latest distribute we are working on. So I would propose changing bootstrap.py itself to choose between peak's ez_setup.py or our distribute_setup.py file with the option you've mentioned, and through the shell: $ python bootstrap.py --use-distribute I can't think of any other changed required in zc.buildout itself besides this. Tarek
On Tue, Oct 13, 2009 at 9:17 PM, Hanno Schlichting <hanno@hannosch.eu> wrote:
Sounds good. Tarek already implemented the separate bootstrap file including the requirements conversion. This is currently done via monkey-patches of buildout, which could be avoided if this finds its way into buildout itself.
Yes that has changed yesterday. No more patches are required, since Distribute takes care of the distribute/setuptools requirements calls. Our bootstrap now is pretty similar to the original, besides the url we are calling. Tarek
On Tue, Oct 13, 2009 at 3:25 PM, Tarek Ziadé <ziade.tarek@gmail.com> wrote: ...
Notice that the current trunk of Distribute is now changing any 'setuptools' requirement that is tiggered using "Requirement.parse" and "resolve" APIs into a 'distribute' one.
Ah cool. ...
So I would propose changing bootstrap.py itself to choose between peak's ez_setup.py or our distribute_setup.py file with the option you've mentioned, and through the shell:
$ python bootstrap.py --use-distribute
I can't think of any other changed required in zc.buildout itself besides this.
Very good. Thanks. Jim -- Jim Fulton
participants (3)
-
Hanno Schlichting
-
Jim Fulton
-
Tarek Ziadé