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

Reply via email to