On Fri, Jan 30, 2004 at 03:02:53PM +0100, khemir nadim wrote:
> What I meant is that we shouldn't have two ways (and 2 places) of telling
> what we need for our modules to work.

I agree, there should be only one place where Some::Module's compatibility
information is declared, whether that's in Some::Module's Build.PL or in
Foo/Bar.pm, is not really important, what's important is that Some::Module's
developer has to figure out the details, not Some::Module's user.

> Other have pointed some problems with your scheme so I won't repeat them
> here. I understand what you want to achieve and I think it's good but please
> keep it in one place. Can't you coordinated your efforts with Module::Build
> so
> 
> # old example
> >   my $build = Module::Build->new
> >     (
> >      module_name => 'Foo::Bar',
> >      license => 'perl',
> >      requires => {
> >                   'perl'           => '5.6.1',
> >                   'Some::Module'   => '1.23',
> >                   'Other::Module'  => '>= 1.2, != 1.5, < 2.0',
> >                  },
> >     );
> 
> ...
>      requires => {
>                   'perl'           => '5.6.1',
>                   'Some::Module'   => 'COMPATIBLE_WITH 1.23', # or the like
>                   'Other::Module'  => '>= 1.2, != 1.5, < 2.0',
>                  },

There should be no need for COMPATIBLE_WITH.

'Some::Module'   => '1.23'

should work fine with any whacko versioning scheme that anyone ever came up
with if Module::Build is behaving correctly.

Behaving correctly means letting Some::Module->VERSION decide what is
compatible and what is no. This is the officially documented way to do it.

MakeMaker almost does this. From a quick look at the source, I think
Module::Build definitely doesn't. Instead, it attempts to find the version
by snooping around in the .pm file. So it basically ignores any custom
VERSION method. It should be fairly easy to fix that in both cases.

> Instead for drawing in a new module that most _won't_ use, you make it in
> the main stream "new" installer.

The new module is designed to make it easy for people to have a custom
VERSION method that does something better than the current default. However,
depending on this new module is obviously a problem - extra dependencies are
no fun for anyone. The next version should help solve that,

F

Reply via email to