Re: MP and 2.4 Compilation Woes
"Kevin A. McGrail" <[email protected]>
| Newsgroups | gmane.comp.apache.mod-perl |
|---|---|
| Message-ID | <[email protected]> |
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