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
From:
Reini Urban
Date:
July 8, 2008 23:36
Subject:
Re: perl-5.10.0-4 -> perl-5.10.0-5 update appears to break DateTime
Message ID:
6910a60807082336r3c310a8eg7ae9f6d46a18794f@mail.gmail.com
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/Locale.pm 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.
>  http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Params%3A%3AValidate
>
> 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.
http://cpantesters.perl.org/show/DateTime-Locale.html#DateTime-Locale-0.4001
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
http://phpwiki.org/ http://murbreak.at/

Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About