Zefram wrote:
> Michael G Schwern wrote:
>> Since EUI ships with both a Build.PL and a Makefile.PL this introduces a
>> circular dependency between EUI and Module::Build.
> 
> Only if EUI depends on an MB recent enough to require a new EUI.  I don't
> see why it would do that; presumably EUI can be installed using an old MB.

That's irrelevant as the CPAN shells will install the latest MB.  So consider
a system with an old EUI and no MB that wants to install MB.  CPAN starts
installing MB, goes to upgrade EUI which requires MB... circular dependency,
install fails.  CPAN isn't going to start looking back through old MB's to
find one that isn't circular and I don't expect the user to do that manually.

Even if that were somehow solved, this state of affairs will only hold for so
long.  Eventually EUI will want to depend on a recent MB.


> Of course, by means of unversioned dependencies, there is *already* a
> circular dependency between EUI and MB, if you ignore the Makefile.PLs.
> It's unavoidable to have some such circularity among the basic
> module-processing modules, except by the inc:: route, and we know the
> problems that lie there.  It would be wise to avoid making the circle any
> tighter than necessary, but we should not shy away from having it at all.

MakeMaker already ships a minimum version of ExtUtils::Install and has for
some time.  Module::Build has latest.pm to deal with exactly this problem.


> For sufficiently recent perls, the circle is established by having
> adequate versions of the modules installed as part of the base system.
> The modules can then upgrade each other happily.  For older perls we
> must ensure that there is an upgrade path to get the circle established;
> old-style Makefile.PLs for the critical modules suffice.

Makefile.PLs will not suffice as CPAN shells will prefer the Build.PL.  No
manual intervention should be necessary.


-- 
Just call me 'Moron Sugar'.
        http://www.somethingpositive.net/sp05182002.shtml

Reply via email to