Re: [Perlunit-devel] broken base.pm
Status: Beta
Brought to you by:
mca1001
|
From: Adam S. <ad...@sp...> - 2001-10-25 14:14:54
|
Regarding what to do about broken old base.pms ...
Piers Cawley (pdc...@bo...) wrote:
> Adam Spiers <ad...@sp...> writes:
> > Nasty, isn't it? Possible workarounds:
> >
> > 1. Document it
> > 2. Get `make install' to check for the brokenness and warn
> > 3. Add `use Foo;' before every `use base qw(Foo);'
> > 4. Provide a patch
> >
> > 3. is the easiest but somehow I don't like it.
Nor me.
> 5. Don't use base at all, do:
>
> use vars qw/@ISA/;
> use Foo ();
> @ISA = 'Foo';
>
> After all, it's worked for ages. Ugly though.
Yeah, really ugly :-(
> Or, in Makefile.PL:
>
> use ExtUtils::MakeMaker;
>
> # See lib/ExtUtils/MakeMaker.pm for details of how to influence
> # the contents of the Makefile that is written.
>
> my $PREREQ_PM;
> unless (eval "require 5.6.0") {
> $PREREQ_PM = {Class::Fields => 0};
> }
> else {
> $PREREQ_PM = {base => 0};
> }
>
> WriteMakefile(
> 'NAME' => 'Test::Unit',
> 'VERSION_FROM' => 'lib/Test/Unit.pm', # finds $VERSION
> 'PREREQ_PM' => $PREREQ_PM,
> );
>
> Admittedly, this assumes that the 'base' in Class::Fields on CPAN has
> the bugfix, which someone (without perl 5.6.0) needs to check.
I like this approach. It's the least intrusive, allows us to use nice
syntax, and is mostly transparent to users.
Christian Lemburg (le...@ai...) wasn't convinced though:
> Why rely on that? Where will it break next?
Nowhere. I've been using the fixed version for ages, and it's fine.
The new syntax is much nicer, and I wouldn't like to fight the natural
course of progress just because of a mistake made in the past.
Matthew Astley (mc...@us...) suggested:
> Another solution, can the makefile figure out from the version number
> of base.pm whether you're running on a broken system or not, and apply
>
> find blib -name '*.pm' | \
> xargs perl -i -pe 's{^\s*use\s+base\s+(.+)} \
> {use $1 use vars (\@ISA); \@ISA = $1} .. 0'
>
> to fix the problem? (I, um, changed it after I tested it...)
Self-modifying code! I'd really rather avoid that if at all possible,
we're not in the Dark Ages any more ;-)
|