develooper Front page | perl.perl5.porters | Postings from July 2008

Re: perl-5.10.0-4 -> perl-5.10.0-5 update appears to break DateTime

Thread Next
Reini Urban
July 8, 2008 23:36
Re: perl-5.10.0-4 -> perl-5.10.0-5 update appears to break DateTime
Message ID:
2008/7/8 Reini Urban:
> 2008/7/8 Gary R. Van Sickle:
>> Hi Reini,
>> It looks like something changed between perl 5.10.0-4 and -5 which breaks
>> the DateTime module from CPAN (version 0.4302, latest).  The attached Simple
>> Test Case(tm) results in only the following errors:
>> Use of uninitialized value $id in pattern match (m//) at
>> /usr/lib/perl5/site_perl/5.10/DateTime/ line 65.
> Bad side-effect with a third party module in site_perl.
> Strange that I didn't see this in my tests, because I tested over
> thousand CPAN modules with this release.
> Oh, I see, I reported that it failed on June 5.
> $ cpan DateTime
> requires DateTime::Locale
> DateTime::Locale cannot be installed because of this error,
> but since you upgraded perl we have to fix DateTime::Locale now.
> Oops. This seems to affect more modules.
> Params::Validate with type => SCALAR seems to be broken.
> I have to go now, but will provide a patch soon.
> As workaround I would disable the validation in DateTime::Locale::_register
> but this also doesn't work as expected.
>    if (! defined $p{id} or !$id) {
>        # cygperl5 error in Params::Validate?
>        #warn "Broken Params::Validate. Given ".join(",",@_);
>        $p{id} = $_[0];
>        $p{en_language} = $_[1];
>        my @keys = qw(en_script en_territory en_variant native_language
> native_script native_territory native_variant class replace);
>        for my $i (2 .. @_) {
>            $p{$keys[$i]} = $_[$i];
>        }
>    }

Update on this issue:
As you can see, there's only one machine with this error, which is my laptop.
My normal devel machine passed the DateTime::Locale test, which is weird.
I also pass the Params::Validate test on my laptop, which is weirder,
because this fails for DateTime::Locale on my laptop.

Anyway, until I find out the differences between my laptop and my
devel machine,
the short summary:

Params::Validate fails in an BEGIN block, in a type => SCALAR check only on
certain machines with 5.10.0 patch 34065 on Cygwin. (Tested only
release and patch 34065).
Reproducible with DateTime::Locale.
Within the debugger everything works ok. (Probably because of the BEGIN block)
The other DateTime::Locale reports show no clue.
There's a Darwin report on the same patchlevel which passed.

Within DateTime-Locale-0.4001 after make
even perl -Mblib -cw t/01basic.t fails with the same errors.

Moving the register call from BEGIN to INIT also does not help.
Reini Urban

Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About