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