perl-modperl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kevin A. McGrail" <KMcGr...@PCCC.com>
Subject Re: MP and 2.4 Compilation Woes
Date Mon, 11 Feb 2013 22:36:47 GMT
On 2/11/2013 4:54 AM, Jan Kalu┼ża wrote:
> On 02/08/2013 04:39 PM, Kevin A. McGrail wrote:
>> Following Jan's advice, I had to add this to ParseSource.pm
>>
>> +     'APACHE_HTTP_VHOST_H', #c-scan chokes on http_host.h
>> +     'H_PERL', #""
>>
>> That got me this far...
>
> Have you applied all my patches? This particular problem looks like 
> the one I've fixed in this patch:
>
> http://jkaluza.fedorapeople.org/mod_perl/0027-Do-no-cscan-expat-and-byteswap.patch 
>
Definitely.  I've intimately studied your patches and my notes above for 
ParseSource.pm are in addition to your patch based on feedback you've 
given previously.
> If you have applied this patch and the problem is still there, you 
> have to grep /usr/include to find out which header declares 
> "XML_ParserCreate_MM", check the #ifdef guard in that file and add it 
> to ParseSource.pm as it's done for Expat in path 0027, so 
> source_scan.pl won't try to parse that header file.
Unfortunately, the header for XML_ParserCreate_MM is expat.h which 
Expat_INCLUDED is already the purpose of your 0027 patch.



So that's leaves me at this error:

make source_scan
/usr/local/perl-5.14/bin/perl build/source_scan.pl
Expecting parenth after identifier in `const XML_Memory_Handling_Suite 
*memsuite'
after `const XML_Memory_Handling_Suite ' at lib/ModPerl/CScan.pm line 895.
  at lib/ModPerl/CScan.pm line 895
         ModPerl::CScan::do_declaration1('const 
XML_Memory_Handling_Suite *memsuite', 'HASH(0x35082e8)', 
'HASH(0x34e3e20)', 1) called at lib/ModPerl/CScan.pm line 846
ModPerl::CScan::do_declaration('XML_Parser\x{a}XML_ParserCreate_MM(const 
XML_Char *encoding,\x{a}    ...', 'HASH(0x35082e8)', 'HASH(0x34e3e20)') 
called at lib/ModPerl/CScan.pm line 764
         ModPerl::CScan::do_declarations('ARRAY(0x34cdba0)', 
'HASH(0x35082e8)', 'HASH(0x34e3e20)') called at 
/usr/local/perl-5.14/lib/site_perl/5.14.2/Data/Flow.pm line 93
Data::Flow::request('Apache2::ParseSource::Scan=ARRAY(0x34d8de0)', 
'parsed_fdecls') called at 
/usr/local/perl-5.14/lib/site_perl/5.14.2/Data/Flow.pm line 46
Data::Flow::get('Apache2::ParseSource::Scan=ARRAY(0x34d8de0)', 
'parsed_fdecls') called at lib/Apache2/ParseSource.pm line 68
Apache2::ParseSource::Scan::get('Apache2::ParseSource::Scan=ARRAY(0x34d8de0)', 
'parsed_fdecls') called at lib/Apache2/ParseSource.pm line 410
Apache2::ParseSource::get_functions('Apache2::ParseSource=HASH(0x349cf00)') 
called at lib/Apache2/ParseSource.pm line 508
Apache2::ParseSource::write_functions_pm('Apache2::ParseSource=HASH(0x349cf00)') 
called at build/source_scan.pl line 18
make: *** [source_scan] Error 255

If I go further, I start to spiral a lot of exclusions that seemed to be 
modperl includes themselves which just seems messed up...  I'm guessing 
perhaps there is a hard-coded exclusion somewhere by path or something 
because all of these MOD_PERL exclusions seem ridiculous...


make source_scan
/usr/local/perl-5.14/bin/perl build/source_scan.pl
Expecting parenth after identifier in `pTHX_ request_rec *r'
after `pTHX_ ' at lib/ModPerl/CScan.pm line 895.
  at lib/ModPerl/CScan.pm line 895
         ModPerl::CScan::do_declaration1('pTHX_ request_rec *r', 
'HASH(0x258c420)', 'HASH(0x2567f28)', 0) called at lib/ModPerl/CScan.pm 
line 846
         ModPerl::CScan::do_declaration('apr_status_t 
modperl_config_request_cleanup(pTHX_ request_rec...', 'HASH(0x258c420)', 
'HASH(0x2567f28)') called at lib/ModPerl/CScan.pm line 764
         ModPerl::CScan::do_declarations('ARRAY(0x2551e88)', 
'HASH(0x258c420)', 'HASH(0x2567f28)') called at 
/usr/local/perl-5.14/lib/site_perl/5.14.2/Data/Flow.pm line 93
Data::Flow::request('Apache2::ParseSource::Scan=ARRAY(0x255ce48)', 
'parsed_fdecls') called at 
/usr/local/perl-5.14/lib/site_perl/5.14.2/Data/Flow.pm line 46
Data::Flow::get('Apache2::ParseSource::Scan=ARRAY(0x255ce48)', 
'parsed_fdecls') called at lib/Apache2/ParseSource.pm line 68
Apache2::ParseSource::Scan::get('Apache2::ParseSource::Scan=ARRAY(0x255ce48)', 
'parsed_fdecls') called at lib/Apache2/ParseSource.pm line 421
Apache2::ParseSource::get_functions('Apache2::ParseSource=HASH(0x25211d8)') 
called at lib/Apache2/ParseSource.pm line 519
Apache2::ParseSource::write_functions_pm('Apache2::ParseSource=HASH(0x25211d8)') 
called at build/source_scan.pl line 18
make: *** [source_scan] Error 255

Index: lib/Apache2/ParseSource.pm
===================================================================
--- lib/Apache2/ParseSource.pm  (revision 1)
+++ lib/Apache2/ParseSource.pm  (working copy)
@@ -75,8 +75,27 @@
      '_NETINET_TCP_H', #c-scan chokes on netinet/tcp.h
      '_BYTESWAP_H', #c-scan chokes on byteswap.h
      '_BITS_BYTESWAP_H', #c-scan chokes on byteswap.h
-    'Expat_INCLUDED', #c-scan chokes on expath.h
+    'Expat_INCLUDED', #c-scan chokes on expat.h
+    'XmlParse_INCLUDED', #c-scan chokes on 
/usr/local/apache2/include/expat.h
+    'APACHE_HTTP_VHOST_H', #c-scan chokes on http_vhost.h
+    'H_PERL', #c-scan chokes on perl.h
   #   'APR_OPTIONAL_H', #c-scan chokes on apr_optional.h
+    'MODPERL_ERROR_H', #c-scan chokes on modperl_error.h
+    'MODPERL_FLAGS_H', #c-scan chokes on modperl_flags.h
+    'MODPERL_PERL_GLOBAL_H', #c-scan chokes on modperl_perl_global.h
+    'MODPERL_SYS_H',
+    'MODPERL_CONSTANTS_H',
+    'MODPERL_COMMON_UTIL_H',
+    'MODPERL_PERL_H',
+    'MODPERL_CONST_H',
+    'MODPERL_UTIL_H',
+    'MODPERL_IO_H',
+    'MODPERL_CONFIG_H',
+    'MODPERL_HANDLER_H',
+    'MODPERL_CALLBACK_H',
+    'USE_ITHREADS',
+    'MODPERL_INTERP_H',
+    'MODPERL_IO_APACHE_H',
      'apr_table_do_callback_fn_t=void', #c-scan chokes on function pointers
  );




> This way of building is not right, because it really depends on all 
> headers you have installed in your system and in the order in which 
> they are included.
>
> For the proper fix, see below.
It makes sense to me both to create a 2.4 version and the idea re: 
source_scan.pl
>
>> Overall, I think the concept that things should be forked to a new 2.4
>> mod_perl is best because if it's backwards compatibility that's holding
>> things back, I'd rather lose that.  I'm currently building on a devel
>> box running on CentOS 6.2.
>
> This is what we should do I think. If we decide to have two branches 
> (one for 2.2 and one for 2.4), we can run source_scan.pl on properly 
> configured system and commit the code generated by that script. I 
> think this is how 2.2 mod_perl was initially created by 
> source_scan.pl. After that, users who want to compile mod_perl don't 
> have to run source_scan.pl themselves and lot of compilation problems 
> like the one you have will go away.
Based on previous mod_perl 2's fork that was needed for apache httpd 
2.X, I think we need to do this.  Anything else is likely to hold up the 
process.

And yes, I think this is what was done because until I started working 
with 2.4, I had never run source_scan.pl.  The files are also tagged 
that distributions don't need them as they are for mp developers.

I'll keep working on 2.4 support and getting AuthenDBI working!

Regards,
KAM


Mime
View raw message