On 06/28/2011 05:40 AM, Torsten Förtsch wrote:
On Tuesday, June 28, 2011 11:57:47 Vincent Veyron wrote:
Le lundi 27 juin 2011 à 16:54 -0700, Gregory Coleman a écrit :
hello - am getting compilation errors in building older mod_perl
with newer perl. Things worked as of 5.12.X, but alas, not with
today's 5.14.1
Any witnesses/experiences/thoughts on this?
Some in this thread :
http://www.gossamer-threads.com/lists/modperl/modperl/103167
No. The point is mp1 has reached end of life as of Feb 2010:
http://www.gossamer-threads.com/lists/modperl/modperl/101027
Is apache httpd 1.3 that reached EOL, not mp1. As far as I known the
lasts comments on the topic was on February this year:
http://www.gossamer-threads.com/lists/modperl/dev/102712
There were a few incompatible code changes in perl 5.14, particularly
with SvGP and SvCV used in lvalue context, see also
https://rt.cpan.org/Ticket/Display.html?id=64999
I doubt that any one of the current dev team will incorporate these
changes into mp1. Though, if someone provides patches I think there are
good chances for them to get applied especially if that someone wants to
take care of mp1 in the future and thus become a committer.
From the annotated thread I understand that Phillip M. Gollucci was
planning a final mp v1.32 but without given ETA.
I use both apache 1.3.x and mp1 for our in-house projects so I'm
collecting patches to keep both sane with recent distros.
Attached the diff on the subject from *our* repo, so some line offsets
may be misaligned.
Regards.
Salvador Ortiz.
Index: src/modules/perl/mod_perl.c
===================================================================
--- src/modules/perl/mod_perl.c (revision 2779)
+++ src/modules/perl/mod_perl.c (revision 2861)
@@ -848,7 +848,7 @@
/* *CORE::GLOBAL::exit = \&Apache::exit */
if(gv_stashpv("CORE::GLOBAL", FALSE)) {
GV *exitgp = gv_fetchpv("CORE::GLOBAL::exit", TRUE, SVt_PVCV);
- GvCV(exitgp) = perl_get_cv("Apache::exit", TRUE);
+ GvCV_set(exitgp, perl_get_cv("Apache::exit", TRUE));
GvIMPORTED_CV_on(exitgp);
}
Index: src/modules/perl/mod_perl.h
===================================================================
--- src/modules/perl/mod_perl.h (revision 2779)
+++ src/modules/perl/mod_perl.h (revision 2861)
@@ -201,6 +201,14 @@
#define PERL_MG_UFUNC(name,ix,sv) I32 name(IV ix, SV *sv)
#endif
+/* Post 5.13.3 */
+#ifndef CvGV_set
+# define CvGV_set(cv, gv) (CvGV(cv) = (gv))
+#endif
+#ifndef GvCV_set
+# define GvCV_set(gv, cv) (GvCV(gv) = (cv))
+#endif
+
#ifdef eval_pv
# ifndef perl_eval_pv
# define perl_eval_pv eval_pv
Index: src/modules/perl/perl_config.c
===================================================================
--- src/modules/perl/perl_config.c (revision 2779)
+++ src/modules/perl/perl_config.c (revision 2861)
@@ -1721,7 +1721,7 @@
if((cv = GvCV((GV*)val)) && (GvSTASH((GV*)val) == GvSTASH(CvGV(cv)))) {
GV *gv = CvGV(cv);
cv_undef(cv);
- CvGV(cv) = gv;
+ CvGV_set(cv, gv);
GvCVGEN(gv) = 1; /* invalidate method cache */
}
}
Index: src/modules/perl/Log.xs
===================================================================
--- src/modules/perl/Log.xs (revision 2779)
+++ src/modules/perl/Log.xs (revision 2861)
@@ -10,7 +10,7 @@
static void perl_cv_alias(char *to, char *from)
{
GV *gp = gv_fetchpv(to, TRUE, SVt_PVCV);
- GvCV(gp) = perl_get_cv(from, TRUE);
+ GvCV_set(gp, perl_get_cv(from, TRUE));
}
static void ApacheLog(int level, SV *sv, SV *msg)
Index: src/modules/perl/Apache.xs
Index: Symbol/Symbol.xs
===================================================================
--- Symbol/Symbol.xs (revision 2779)
+++ Symbol/Symbol.xs (revision 2861)
@@ -2,6 +2,10 @@
#include "perl.h"
#include "XSUB.h"
+#ifndef CvGV_set
+# define CvGV_set(cv, val) (CvGV(cv) = val)
+#endif
+
#ifdef PERL_OBJECT
#define sv_name(svp) svp
#define undef(ref)
@@ -30,7 +34,7 @@
has_proto = TRUE;
cv_undef(cv);
- CvGV(cv) = gv; /* let user-undef'd sub keep its identity */
+ CvGV_set(cv,gv); /* let user-undef'd sub keep its identity */
if(has_proto)
SvPOK_on(cv); /* otherwise we get `Prototype mismatch:' */