Thread: Fix for Perl 5.14
Perl 5.14.0-RC1 came out a few days ago... There is a minor compile time error due to the API changing a bit: plperl.c:929:3: error: lvalue required as left operand of assignment This is due to GvCV() no longer returning an lvalue, instead they want us to use the new GvCV_set macro. (see http://search.cpan.org/~jesse/perl-5.14.0-RC1/pod/perldelta.pod#GvCV()_and_GvGP()_are_no_longer_lvalues) Unfortunately that macro is not available on older perls so the attached provides our own macro when GvCV_set is not defined. Tested with 5.14.0-rc1 and 5.12.3. The -head patch applies with fuzz to 9.0. The 8.4 patch applies clean to 8.4 and with fuzz to 8.3 and 8.2.
Attachment
On 04/23/2011 03:02 AM, Alex Hunsaker wrote: > Perl 5.14.0-RC1 came out a few days ago... > > There is a minor compile time error due to the API changing a bit: > plperl.c:929:3: error: lvalue required as left operand of assignment > > This is due to GvCV() no longer returning an lvalue, instead they want > us to use the new GvCV_set macro. (see > http://search.cpan.org/~jesse/perl-5.14.0-RC1/pod/perldelta.pod#GvCV()_and_GvGP()_are_no_longer_lvalues) > > Unfortunately that macro is not available on older perls so the > attached provides our own macro when GvCV_set is not defined. > > Tested with 5.14.0-rc1 and 5.12.3. > > The -head patch applies with fuzz to 9.0. The 8.4 patch applies clean > to 8.4 and with fuzz to 8.3 and 8.2. How nice of them not to fix it in ppport.h. I thought this is exactly the sort of thing it's for. This looks OK, but I think we need to wait until they remove the RC tag. cheers andrew
On Sat, Apr 23, 2011 at 07:00, Andrew Dunstan <andrew@dunslane.net> wrote: > > > On 04/23/2011 03:02 AM, Alex Hunsaker wrote: >> ... >> There is a minor compile time error due to the API changing a bit: >> plperl.c:929:3: error: lvalue required as left operand of assignment >> ... >> Unfortunately that macro is not available on older perls so the >> attached provides our own macro when GvCV_set is not defined. > How nice of them not to fix it in ppport.h. I thought this is exactly the > sort of thing it's for. Hrm, I have the latest released version of Devel::PPPort, 3.19. I went poking around and found the have a newer "developer" release (3.19_03) at http://search.cpan.org/~mhx/Devel-PPPort-3.19_03/ (released 2011-04-13). I see a few things for 5.14 but nothing about GvCV_set. Maybe I'm doing something wrong? I'm just diffing its ppport.h with ours. For the curious its attached. > This looks OK, but I think we need to wait until they remove the RC tag. Makes sense, Ill repost once they do ;).
Attachment
2011/4/23 Andrew Dunstan <andrew@dunslane.net>: > On 04/23/2011 03:02 AM, Alex Hunsaker wrote: >> >> Perl 5.14.0-RC1 came out a few days ago... >> >> There is a minor compile time error due to the API changing a bit: >> plperl.c:929:3: error: lvalue required as left operand of assignment >> >> This is due to GvCV() no longer returning an lvalue, instead they want >> us to use the new GvCV_set macro. (see >> >> http://search.cpan.org/~jesse/perl-5.14.0-RC1/pod/perldelta.pod#GvCV()_and_GvGP()_are_no_longer_lvalues) >> >> Unfortunately that macro is not available on older perls so the >> attached provides our own macro when GvCV_set is not defined. >> >> Tested with 5.14.0-rc1 and 5.12.3. >> >> The -head patch applies with fuzz to 9.0. The 8.4 patch applies clean >> to 8.4 and with fuzz to 8.3 and 8.2. > > > How nice of them not to fix it in ppport.h. I thought this is exactly the > sort of thing it's for. It's not so easy to convert foo = GvCV(bah); to a GvCV_set(foo, bar); with a ppport.h macro automatically. But yes, the backport GvCV_set => lvalue GvCV should be in ppport.h. It is not yet -- Reini Urban
On Sat, Apr 23, 2011 at 07:00, Andrew Dunstan <andrew@dunslane.net> wrote: > This looks OK, but I think we need to wait until they remove the RC tag. 5.14.0 is out now, Ive retested with 5.14.0 (x86-64), 5.12.3 (x86-64) and 5.10.1 (i386). No changes are needed. [ if you missed it ] The Devel::PPPort guy said patches are welcome and he won't be able to look into this until at least june.