Adam Kennedy wrote:
> Firstly, there's gunna be some issues modifying modules at release time.
> Primarily, you haven't provided any way to SAVE those changes, since
> 90%+ of modules are built out of version control.
The changes it makes aren't things I want to save anyway. For example,
the repository copy of a module has:
=head1 VERSION
This section is filled in by C<Build distdir>.
instead of a normal VERSION section.
> This means a gotcha
> where the version labelled as 1.00 in the repository is not necessarily
> the same thing as what is in the tarball, because someone forgot to commit.
I don't see how my enhancements make this worse. You can already Build
dist without checking in first.
> Option 1: Custom Build.PL
I'd already rejected that.
> Option 3: A CPAN-released seperate subclass.
>
> You put use Module::Install::Chris in your Build.PL, and it's just gunna
> blow up, because nobody has that module and you have no way of ensuring
> that they do.
No, that's what eval is for. The whole point of this is that people who
merely install the module don't need Module::Build::Dist and shouldn't
have to care that it exists. I'm thinking of something like this:
use Module::Build;
eval 'use Module::Build::Dist;';
my $class = ($@ ? Module::Build->subclass(code => q{
sub ACTION_distdir {
print "You might want to install Module::Build::Dist\n";
(shift @_)->SUPER::ACTION_distdir(@_);
} })
: 'Module::Build::Dist'); # if we found it
my $builder = $class->new(...);
$builder->create_build_script();
If I needed a custom subclass for other module-specific reasons, I'd put
similar code in there.
> Option 4: A separate release tool.
>
> Brian Foy released his as Module::Release.
I'd overlooked that. I'll have to look into it.
--
Chris Madsen [EMAIL PROTECTED]
-------------------- http://www.cjmweb.net --------------------