FreeBSD Bugzilla – Attachment 170221 Details for
Bug 209459
www/mod_perl2: add patch to to build with perl5.22
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
patch
p2.diff (text/plain), 8.44 KB, created by
Kurt Jaeger
on 2016-05-11 19:54:23 UTC
(
hide
)
Description:
patch
Filename:
MIME Type:
Creator:
Kurt Jaeger
Created:
2016-05-11 19:54:23 UTC
Size:
8.44 KB
patch
obsolete
>diff -r -u -N www/mod_perl2/Makefile ../../home/pi/myp/www/mod_perl2/Makefile >--- www/mod_perl2/Makefile 2016-04-01 17:10:43.510694000 +0200 >+++ ../../home/pi/myp/www/mod_perl2/Makefile 2016-05-11 21:52:00.991299000 +0200 >@@ -3,6 +3,7 @@ > > PORTNAME= mod_perl > PORTVERSION= 2.0.9 >+PORTREVISION= 1 > PORTEPOCH= 3 > CATEGORIES= www perl5 > MASTER_SITES= APACHE/perl >@@ -32,11 +33,6 @@ > > .include <bsd.port.pre.mk> > >-.if ${PERL_VER} == 5.22 >-BROKEN= PERL ${PERL_VER} is not supported by upstream,\ >- see http://svn.apache.org/viewvc/perl/modperl/trunk/README?view=markup >-.endif >- > # Provider is build iff apache24 is in use > .if ${APACHE_VERSION:M22} > PLIST_SUB+= AP22="@comment " >diff -r -u -N www/mod_perl2/files/patch-src_modules_perl_mod__perl.c ../../home/pi/myp/www/mod_perl2/files/patch-src_modules_perl_mod__perl.c >--- www/mod_perl2/files/patch-src_modules_perl_mod__perl.c 1970-01-01 01:00:00.000000000 +0100 >+++ ../../home/pi/myp/www/mod_perl2/files/patch-src_modules_perl_mod__perl.c 2016-05-11 21:10:15.314175000 +0200 >@@ -0,0 +1,30 @@ >+--- src/modules/perl/mod_perl.c.orig 2015-06-18 22:13:55.000000000 +0200 >++++ src/modules/perl/mod_perl.c 2016-05-11 20:35:19.285089000 +0200 >+@@ -262,6 +262,8 @@ >+ exit(1); >+ } >+ >++ modperl_env_init(aTHX); >++ >+ /* suspend END blocks to be run at server shutdown */ >+ endav = PL_endav; >+ PL_endav = (AV *)NULL; >+@@ -576,9 +578,6 @@ >+ /* modifies PL_ppaddr */ >+ modperl_perl_pp_set_all(); >+ >+- /* modifies PL_vtbl_env{elem} */ >+- modperl_env_init(); >+- >+ return APR_SUCCESS; >+ } >+ >+@@ -597,8 +596,6 @@ >+ >+ MP_TRACE_i(MP_FUNC, "mod_perl sys term"); >+ >+- modperl_env_unload(); >+- >+ modperl_perl_pp_unset_all(); >+ >+ PERL_SYS_TERM(); >diff -r -u -N www/mod_perl2/files/patch-src_modules_perl_modperl__env.c ../../home/pi/myp/www/mod_perl2/files/patch-src_modules_perl_modperl__env.c >--- www/mod_perl2/files/patch-src_modules_perl_modperl__env.c 1970-01-01 01:00:00.000000000 +0100 >+++ ../../home/pi/myp/www/mod_perl2/files/patch-src_modules_perl_modperl__env.c 2016-05-11 21:10:46.061676000 +0200 >@@ -0,0 +1,132 @@ >+--- src/modules/perl/modperl_env.c.orig 2015-06-18 22:13:54.000000000 +0200 >++++ src/modules/perl/modperl_env.c 2016-05-11 21:06:13.364008000 +0200 >+@@ -121,6 +121,7 @@ >+ const apr_array_header_t *array; >+ apr_table_entry_t *elts; >+ >++ modperl_env_init(aTHX); >+ modperl_env_untie(mg_flags); >+ >+ array = apr_table_elts(table); >+@@ -434,11 +435,8 @@ >+ /* to store the original virtual tables >+ * these are global, not per-interpreter >+ */ >+-static MGVTBL MP_PERL_vtbl_env; >+-static MGVTBL MP_PERL_vtbl_envelem; >+- >+ #define MP_PL_vtbl_call(name, meth) \ >+- MP_PERL_vtbl_##name.svt_##meth(aTHX_ sv, mg) >++ PL_vtbl_##name.svt_##meth(aTHX_ sv, mg) >+ >+ #define MP_dENV_KEY \ >+ STRLEN klen; \ >+@@ -612,16 +610,22 @@ >+ } >+ #endif >+ >++static int modperl_env_magic_copy(pTHX_ SV *sv, MAGIC *mg, SV *nsv, const char *name, I32 namlen); >++static int modperl_env_magic_local_all(pTHX_ SV *nsv, MAGIC *mg); >++ >+ /* override %ENV virtual tables with our own */ >+ static MGVTBL MP_vtbl_env = { >+ 0, >+ modperl_env_magic_set_all, >+ 0, >+ modperl_env_magic_clear_all, >+- 0 >++ 0, >++ modperl_env_magic_copy, >++ 0, >++ modperl_env_magic_local_all >+ }; >+ >+-static MGVTBL MP_vtbl_envelem = { >++MGVTBL MP_vtbl_envelem = { >+ 0, >+ modperl_env_magic_set, >+ 0, >+@@ -629,22 +633,70 @@ >+ 0 >+ }; >+ >+-void modperl_env_init(void) >++static int modperl_env_magic_copy(pTHX_ SV *sv, MAGIC *mg, SV *nsv, const char *name, I32 namlen) >+ { >+ /* save originals */ >+- StructCopy(&PL_vtbl_env, &MP_PERL_vtbl_env, MGVTBL); >+- StructCopy(&PL_vtbl_envelem, &MP_PERL_vtbl_envelem, MGVTBL); >+- >+- /* replace with our versions */ >+- StructCopy(&MP_vtbl_env, &PL_vtbl_env, MGVTBL); >+- StructCopy(&MP_vtbl_envelem, &PL_vtbl_envelem, MGVTBL); >+-} >++ MP_TRACE_e(MP_FUNC, "setting up %%ENV element magic"); >++ sv_magicext(nsv, mg->mg_obj, >++ toLOWER(mg->mg_type), &MP_vtbl_envelem, name, namlen); >++ >++ return 1; >++} >++ >++static int modperl_env_magic_local_all(pTHX_ SV *nsv, MAGIC *mg) >++{ >++ MAGIC *nmg; >++ MP_TRACE_e(MP_FUNC, "localizing %%ENV"); >++ nmg = sv_magicext(nsv, mg->mg_obj, >++ mg->mg_type, &MP_vtbl_env, NULL, 0); >++ nmg->mg_ptr = mg->mg_ptr; >++ nmg->mg_flags |= MGf_COPY; >++ nmg->mg_flags |= MGf_LOCAL; >++ >++ return 1; >++} >++ >++void modperl_env_init(pTHX) >++{ >++ MAGIC *mg; >++ /* Remove existing 'E' magic from %ENV */ >++ /* TODO: Should check there is not multiple 'E' magic! */ >++ if (!my_perl) >++ return; >++ if (!PL_envgv) >++ return; >++ if (!SvRMAGICAL(ENVHV)) >++ return; >++ mg = mg_find((const SV *)ENVHV, PERL_MAGIC_env); >++ if (!mg) >++ return; >++ if (mg->mg_virtual == &MP_vtbl_env) >++ return; >++ MP_TRACE_d(MP_FUNC, "ptr: %x obj: %x flags:%x", mg->mg_ptr, mg->mg_obj, mg->mg_flags); >++ mg_free_type((SV*)ENVHV, PERL_MAGIC_env); >++ >++ /* Add our version instead */ >++ mg = sv_magicext((SV*)ENVHV, (SV*)NULL, PERL_MAGIC_env, &MP_vtbl_env, (char*)NULL, 0); >++ mg->mg_flags |= MGf_COPY; >++ mg->mg_flags |= MGf_LOCAL; >++} >++ >++void modperl_env_unload(pTHX) >++{ >++ /* Remove our 'E' magic from %ENV */ >++ /* TODO: Should check there is not multiple 'E' magic! */ >++ if (!my_perl) >++ return; >++ if (!PL_envgv) >++ return; >++ if (!SvRMAGICAL(ENVHV)) >++ return; >++ if (!mg_find((const SV *)ENVHV, PERL_MAGIC_env)) >++ return; >++ mg_free_type((SV*)ENVHV, PERL_MAGIC_env); >+ >+-void modperl_env_unload(void) >+-{ >+- /* restore originals */ >+- StructCopy(&MP_PERL_vtbl_env, &PL_vtbl_env, MGVTBL); >+- StructCopy(&MP_PERL_vtbl_envelem, &PL_vtbl_envelem, MGVTBL); >++ /* Restore original */ >++ sv_magicext((SV*)ENVHV, (SV*)NULL, PERL_MAGIC_env, &PL_vtbl_env, (char*)NULL, 0); >+ } >+ >+ /* >diff -r -u -N www/mod_perl2/files/patch-src_modules_perl_modperl__env.h ../../home/pi/myp/www/mod_perl2/files/patch-src_modules_perl_modperl__env.h >--- www/mod_perl2/files/patch-src_modules_perl_modperl__env.h 1970-01-01 01:00:00.000000000 +0100 >+++ ../../home/pi/myp/www/mod_perl2/files/patch-src_modules_perl_modperl__env.h 2016-05-11 21:38:36.872324000 +0200 >@@ -0,0 +1,25 @@ >+--- src/modules/perl/modperl_env.h.orig 2016-05-11 21:36:26.176077000 +0200 >++++ src/modules/perl/modperl_env.h 2016-05-11 21:37:37.854775000 +0200 >+@@ -28,7 +28,7 @@ >+ MP_magical_tie(ENVHV, mg_flags) >+ >+ #define modperl_envelem_tie(sv, key, klen) \ >+- sv_magic(sv, (SV *)NULL, 'e', key, klen) >++ sv_magicext(sv, (SV *)NULL, PERL_MAGIC_envelem, &MP_vtbl_envelem, key, klen) >+ >+ void modperl_env_hash_keys(pTHX); >+ >+@@ -58,9 +58,11 @@ >+ >+ void modperl_env_request_untie(pTHX_ request_rec *r); >+ >+-void modperl_env_init(void); >++void modperl_env_init(pTHX); >+ >+-void modperl_env_unload(void); >++void modperl_env_unload(pTHX); >++ >++MGVTBL MP_vtbl_envelem; >+ >+ #endif /* MODPERL_ENV_H */ >+ >diff -r -u -N www/mod_perl2/files/patch-src_modules_perl_modperl__perl.c ../../home/pi/myp/www/mod_perl2/files/patch-src_modules_perl_modperl__perl.c >--- www/mod_perl2/files/patch-src_modules_perl_modperl__perl.c 1970-01-01 01:00:00.000000000 +0100 >+++ ../../home/pi/myp/www/mod_perl2/files/patch-src_modules_perl_modperl__perl.c 2016-05-11 21:11:43.566672000 +0200 >@@ -0,0 +1,11 @@ >+--- src/modules/perl/modperl_perl.c.orig 2015-06-18 22:13:55.000000000 +0200 >++++ src/modules/perl/modperl_perl.c 2016-05-11 21:07:47.180082000 +0200 >+@@ -181,6 +181,8 @@ >+ } >+ } >+ >++ modperl_env_unload(perl); >++ >+ perl_destruct(perl); >+ >+ /* XXX: big bug in 5.6.1 fixed in 5.7.2+ >diff -r -u -N www/mod_perl2/files/patch-t_response_TestModperl_env.pm ../../home/pi/myp/www/mod_perl2/files/patch-t_response_TestModperl_env.pm >--- www/mod_perl2/files/patch-t_response_TestModperl_env.pm 1970-01-01 01:00:00.000000000 +0100 >+++ ../../home/pi/myp/www/mod_perl2/files/patch-t_response_TestModperl_env.pm 2016-05-11 21:30:16.453612000 +0200 >@@ -0,0 +1,20 @@ >+--- t/response/TestModperl/env.pm.orig 2015-06-18 22:13:58.000000000 +0200 >++++ t/response/TestModperl/env.pm 2016-05-11 21:09:00.010061000 +0200 >+@@ -15,7 +15,7 @@ >+ sub handler { >+ my $r = shift; >+ >+- plan $r, tests => 23 + keys(%ENV); >++ plan $r, tests => 23 + 3 * keys(%ENV); >+ >+ my $env = $r->subprocess_env; >+ >+@@ -75,6 +75,8 @@ >+ for my $key (sort keys %ENV) { >+ eval { delete $ENV{$key}; }; >+ ok t_cmp($@, '', $key); >++ ok t_cmp($ENV{$key}, undef, "ENV{$key} is empty"); >++ ok t_cmp($env->get($key), undef, "subprocess_env($key) is empty"); >+ } >+ >+ Apache2::Const::OK;
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 209459
: 170221