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

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

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

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.
Use of uninitialized value $id in exists at
/usr/lib/perl5/site_perl/5.10/DateTime/Locale.pm line 68.
Use of uninitialized value $native_pieces[0] in join or string at
/usr/lib/perl5/site_perl/5.10/DateTime/Locale.pm line 83.
Use of uninitialized value $id in hash element at
/usr/lib/perl5/site_perl/5.10/DateTime/Locale.pm line 85.
Use of uninitialized value $id in hash element at
/usr/lib/perl5/site_perl/5.10/DateTime/Locale.pm line 90.
Use of uninitialized value $id in pattern match (m//) at
/usr/lib/perl5/site_perl/5.10/DateTime/Locale.pm line 65.
Use of uninitialized value $id in exists at
/usr/lib/perl5/site_perl/5.10/DateTime/Locale.pm line 68.
Use of uninitialized value $id in concatenation (.) or string at
/usr/lib/perl5/site_perl/5.10/DateTime/Locale.pm line 68.
You cannot replace an existing locale ('') unless you also specify the
'replace' parameter as true
BEGIN failed--compilation aborted at
/usr/lib/perl5/site_perl/5.10/DateTime/Locale.pm line 151.
Compilation failed in require at
/usr/lib/perl5/site_perl/5.10/i686-cygwin/DateTime.pm line 46.
BEGIN failed--compilation aborted at
/usr/lib/perl5/site_perl/5.10/i686-cygwin/DateTime.pm line 46.
Compilation failed in require at ./simple_test_case_datetime.pl line 3.
BEGIN failed--compilation aborted at ./simple_test_case_datetime.pl line 3.

Doing the "perl -MExtUtils::Installed [...]"/"cpan `cat module.list`" thing
(and also a "force install DateTime") results in the same errors, and
needless to say doesn't end up generating a working DateTime module.  This
same version of DateTime did work without error in 5.10.0-4 and does work
with 5.8.8-4.

--
Gary R. Van Sickle

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

simple_test_case_datetime.pl (43 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

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

Reini Urban
2008/7/8 Gary R. Van Sickle <[hidden email]>:
> 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];
        }
    }


> Use of uninitialized value $id in exists at
> /usr/lib/perl5/site_perl/5.10/DateTime/Locale.pm line 68.
> Use of uninitialized value $native_pieces[0] in join or string at
> /usr/lib/perl5/site_perl/5.10/DateTime/Locale.pm line 83.
> Use of uninitialized value $id in hash element at
> /usr/lib/perl5/site_perl/5.10/DateTime/Locale.pm line 85.
> Use of uninitialized value $id in hash element at
> /usr/lib/perl5/site_perl/5.10/DateTime/Locale.pm line 90.
> Use of uninitialized value $id in pattern match (m//) at
> /usr/lib/perl5/site_perl/5.10/DateTime/Locale.pm line 65.
> Use of uninitialized value $id in exists at
> /usr/lib/perl5/site_perl/5.10/DateTime/Locale.pm line 68.
> Use of uninitialized value $id in concatenation (.) or string at
> /usr/lib/perl5/site_perl/5.10/DateTime/Locale.pm line 68.
> You cannot replace an existing locale ('') unless you also specify the
> 'replace' parameter as true
> BEGIN failed--compilation aborted at
> /usr/lib/perl5/site_perl/5.10/DateTime/Locale.pm line 151.
> Compilation failed in require at
> /usr/lib/perl5/site_perl/5.10/i686-cygwin/DateTime.pm line 46.
> BEGIN failed--compilation aborted at
> /usr/lib/perl5/site_perl/5.10/i686-cygwin/DateTime.pm line 46.
> Compilation failed in require at ./simple_test_case_datetime.pl line 3.
> BEGIN failed--compilation aborted at ./simple_test_case_datetime.pl line 3.
>
> Doing the "perl -MExtUtils::Installed [...]"/"cpan `cat module.list`" thing
> (and also a "force install DateTime") results in the same errors, and
> needless to say doesn't end up generating a working DateTime module.  This
> same version of DateTime did work without error in 5.10.0-4 and does work
> with 5.8.8-4.
>
> --
> Gary R. Van Sickle
>
> --
> Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
> Problem reports:       http://cygwin.com/problems.html
> Documentation:         http://cygwin.com/docs.html
> FAQ:                   http://cygwin.com/faq/
>



--
Reini Urban
http://phpwiki.org/ http://murbreak.at/

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

Reply | Threaded
Open this post in threaded view
|

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

Reini Urban
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/

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

Reply | Threaded
Open this post in threaded view
|

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

Reini Urban
2008/7/9 Reini Urban:

> 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.

The adhoc workaround for perl-5.10.0-5 is to move away the Validate XS module:

mv /usr/lib/perl5/site_perl/5.10/i686-cygwin/auto/Params/Validate/Validate.dll \
  /usr/lib/perl5/site_perl/5.10/i686-cygwin/auto/Params/Validate/_Validate.dll

Now it works, because Params::Validate has a slower pure-perl fallback.
--
Reini Urban
http://phpwiki.org/ http://murbreak.at/

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/