rpms/mod_perl/devel mod_perl-2.0.3-perl510attrs.patch, NONE, 1.1 mod_perl-2.0.3-perl510.patch, 1.1, 1.2 mod_perl.spec, 1.57, 1.58

Joe Orton (jorton) fedora-extras-commits at redhat.com
Wed Jan 30 15:09:49 UTC 2008


Author: jorton

Update of /cvs/extras/rpms/mod_perl/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv10188

Modified Files:
	mod_perl-2.0.3-perl510.patch mod_perl.spec 
Added Files:
	mod_perl-2.0.3-perl510attrs.patch 
Log Message:
* Wed Jan 30 2008 Joe Orton <jorton at redhat.com> 2.0.3-19
- further fixes for perl 5.10 (upstream r480903, r615751)


mod_perl-2.0.3-perl510attrs.patch:

--- NEW FILE mod_perl-2.0.3-perl510attrs.patch ---

http://svn.apache.org/viewvc?rev=615751&view=rev

--- mod_perl-2.0.3/src/modules/perl/mod_perl.h.perl510attrs
+++ mod_perl-2.0.3/src/modules/perl/mod_perl.h
@@ -138,11 +138,6 @@ apr_status_t modperl_response_finish(req
 int modperl_response_handler(request_rec *r);
 int modperl_response_handler_cgi(request_rec *r);
 
-/* betting on Perl*Handlers not using CvXSUBANY
- * mod_perl reuses this field for handler attributes
- */
-#define MP_CODE_ATTRS(cv) (CvXSUBANY((CV*)cv).any_i32)
-
 #define MgTypeExt(mg) (mg->mg_type == '~')
 
 typedef void MP_FUNC_NONSTD_T(modperl_var_modify_t) (apr_table_t *,
--- mod_perl-2.0.3/src/modules/perl/modperl_util.h.perl510attrs
+++ mod_perl-2.0.3/src/modules/perl/modperl_util.h
@@ -149,4 +149,6 @@ int  modperl_restart_count(void);
 SV *modperl_pnotes(pTHX_ HV **pnotes, SV *key, SV *val,
                    request_rec *r, conn_rec *c);
 
+U16 *modperl_code_attrs(pTHX_ CV *cv);
+
 #endif /* MODPERL_UTIL_H */
--- mod_perl-2.0.3/src/modules/perl/modperl_mgv.c.perl510attrs
+++ mod_perl-2.0.3/src/modules/perl/modperl_mgv.c
@@ -271,7 +271,7 @@ int modperl_mgv_resolve(pTHX_ modperl_ha
     }
     else {
         if ((cv = get_cv(name, FALSE))) {
-            handler->attrs = (U32)MP_CODE_ATTRS(cv);
+            handler->attrs = *modperl_code_attrs(aTHX_ cv);
             handler->mgv_cv =
                 modperl_mgv_compile(aTHX_ p, HvNAME(GvSTASH(CvGV(cv))));
             modperl_mgv_append(aTHX_ p, handler->mgv_cv, GvNAME(CvGV(cv)));
@@ -334,7 +334,7 @@ int modperl_mgv_resolve(pTHX_ modperl_ha
             modperl_mgv_new_name(handler->mgv_obj, p, name);
         }
 
-        handler->attrs = (U32)MP_CODE_ATTRS(cv);
+        handler->attrs = *modperl_code_attrs(aTHX_ cv);
         /* note: this is the real function after @ISA lookup */
         handler->mgv_cv = modperl_mgv_compile(aTHX_ p, HvNAME(GvSTASH(gv)));
         modperl_mgv_append(aTHX_ p, handler->mgv_cv, handler_name);
--- mod_perl-2.0.3/src/modules/perl/modperl_types.h.perl510attrs
+++ mod_perl-2.0.3/src/modules/perl/modperl_types.h
@@ -196,7 +196,7 @@ struct modperl_handler_t {
     const char *name; 
     CV *cv;
     U8 flags;
-    U32 attrs;
+    U16 attrs;
     modperl_handler_t *next;
 };
 
--- mod_perl-2.0.3/src/modules/perl/modperl_util.c.perl510attrs
+++ mod_perl-2.0.3/src/modules/perl/modperl_util.c
@@ -903,3 +903,13 @@ SV *modperl_pnotes(pTHX_ HV **pnotes, SV
     return retval ? SvREFCNT_inc(retval) : &PL_sv_undef;
 }
  
+U16 *modperl_code_attrs(pTHX_ CV *cv) {
+    MAGIC *mg;    
+
+    if (!SvMAGICAL(cv)) {
+       sv_magic((SV*)cv, Nullsv, PERL_MAGIC_ext, NULL, -1); 
+    }
+
+    mg = mg_find((SV*)cv, PERL_MAGIC_ext);
+    return &(mg->mg_private);
+}
--- mod_perl-2.0.3/xs/Apache2/Filter/Apache2__Filter.h.perl510attrs
+++ mod_perl-2.0.3/xs/Apache2/Filter/Apache2__Filter.h
@@ -86,9 +86,9 @@ static MP_INLINE apr_size_t mpxs_Apache2
     return len;
 }
 
-static MP_INLINE U32 *modperl_filter_attributes(SV *package, SV *cvrv)
+static MP_INLINE U16 *modperl_filter_attributes(pTHX_ SV *package, SV *cvrv)
 {
-    return (U32 *)&MP_CODE_ATTRS(SvRV(cvrv));
+    return modperl_code_attrs(aTHX_ (CV*)SvRV(cvrv));
 }
 
 #ifdef MP_TRACE
@@ -118,7 +118,7 @@ static MP_INLINE U32 *modperl_filter_att
 MP_STATIC XS(MPXS_modperl_filter_attributes)
 {
     dXSARGS;
-    U32 *attrs = modperl_filter_attributes(ST(0), ST(1));
+    U16 *attrs = modperl_filter_attributes(aTHX_ ST(0), ST(1));
     I32 i;
 #ifdef MP_TRACE
     HV *stash = gv_stashsv(ST(0), TRUE);
--- mod_perl-2.0.3/xs/tables/current/ModPerl/FunctionTable.pm.perl510attrs
+++ mod_perl-2.0.3/xs/tables/current/ModPerl/FunctionTable.pm
@@ -1239,6 +1239,20 @@ $ModPerl::FunctionTable = [
     ]
   },
   {
+    'return_type' => 'U16 *',
+    'name' => 'modperl_code_attrs',
+    'args' => [
+     {
+        'type' => 'PerlInterpreter *',
+        'name' => 'my_perl'
+      },
+      {
+        'type' => 'CV *',
+        'name' => 'cv'
+      }
+    ]
+  },
+  {
     'return_type' => 'int',
     'name' => 'modperl_config_apply_PerlModule',
     'args' => [

mod_perl-2.0.3-perl510.patch:

Index: mod_perl-2.0.3-perl510.patch
===================================================================
RCS file: /cvs/extras/rpms/mod_perl/devel/mod_perl-2.0.3-perl510.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- mod_perl-2.0.3-perl510.patch	30 Jan 2008 14:40:25 -0000	1.1
+++ mod_perl-2.0.3-perl510.patch	30 Jan 2008 15:09:44 -0000	1.2
@@ -1,9 +1,26 @@
 
-http://svn.apache.org/viewvc?view=rev&revision=480890
+http://svn.apache.org/viewvc?view=rev&rev=480890
+http://svn.apache.org/viewvc?view=rev&rev=480903
 
 --- mod_perl-2.0.3/src/modules/perl/modperl_interp.h.perl510
 +++ mod_perl-2.0.3/src/modules/perl/modperl_interp.h
-@@ -44,8 +44,15 @@ apr_status_t modperl_interp_cleanup(void
+@@ -36,16 +36,30 @@ apr_status_t modperl_interp_cleanup(void
+  * cleaner solution. of course it must be really fast.
+  */
+ #ifndef HvPMROOT
++# if PERL_REVISION == 5 && \
++    ((PERL_VERSION == 9 && PERL_SUBVERSION > 4) || \
++    PERL_VERSION > 9)
+ #define MP_THX_INTERP_GET(thx)                                  \
+-    (modperl_interp_t *) ((XPVMG*)SvANY(*Perl_Imodglobal_ptr(thx)))->xmg_magic
++    (modperl_interp_t *) ((XPVMG*)SvANY(*Perl_Imodglobal_ptr(thx)))->xmg_u.xmg_magic
++# else
++#define MP_THX_INTERP_GET(thx)                                  \
++      (modperl_interp_t *) ((XPVMG*)SvANY(*Perl_Imodglobal_ptr(thx)))->xmg_magic
++# endif
+ #else
+ #define MP_THX_INTERP_GET(thx) \
+     (modperl_interp_t *)HvPMROOT(*Perl_Imodglobal_ptr(thx))
  #endif
  
  #ifndef HvPMROOT


Index: mod_perl.spec
===================================================================
RCS file: /cvs/extras/rpms/mod_perl/devel/mod_perl.spec,v
retrieving revision 1.57
retrieving revision 1.58
diff -u -r1.57 -r1.58
--- mod_perl.spec	30 Jan 2008 14:40:25 -0000	1.57
+++ mod_perl.spec	30 Jan 2008 15:09:44 -0000	1.58
@@ -2,7 +2,7 @@
 
 Name:           mod_perl
 Version:        2.0.3
-Release:        18
+Release:        19
 Summary:        An embedded Perl interpreter for the Apache HTTP Server
 
 Group:          System Environment/Daemons
@@ -14,6 +14,7 @@
 Source3:        filter-provides.sh
 Patch0:         mod_perl-2.0.2-multilib.patch
 Patch1:         mod_perl-2.0.3-perl510.patch
+Patch2:         mod_perl-2.0.3-perl510attrs.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 BuildRequires:  perl-devel, perl(ExtUtils::Embed)
@@ -51,6 +52,7 @@
 %setup -q -n %{name}-%{version}
 %patch0 -p1
 %patch1 -p1 -b .perl510
+%patch2 -p1 -b .perl510attrs
 
 %build
 CFLAGS="$RPM_OPT_FLAGS -fpic" %{__perl} Makefile.PL </dev/null \
@@ -129,6 +131,9 @@
 %{_includedir}/httpd/*
 
 %changelog
+* Wed Jan 30 2008 Joe Orton <jorton at redhat.com> 2.0.3-19
+- further fixes for perl 5.10 (upstream r480903, r615751)
+
 * Wed Jan 30 2008 Joe Orton <jorton at redhat.com> 2.0.3-18
 - fix build with perl 5.10 (upstream r480890)
 




More information about the fedora-extras-commits mailing list